Silverlight 应用程序使用服务器端代码的最有效方式就是通过 Web 服务。基本思路很简单,ASP.NET 网站上提供 Web 服务,你的 Silverlight 程序可以调用这个 Web 服务中的方法。Web 服务的代码可以执行服务器端的任务、访问服务器端的数据库、甚至可以使用诸如验证和会话状态之类的 ASP.NET 服务。更重要的是,由于页面不会回发,你的 Silverlight 程序可以持续运行而不会中断。
Silverlight 应用程序支持多种 Web 服务技术,包括基于 SOAP 的服务、返回 XML 或 JSON 数据的简单 REST 服务以及用 .NET 构建的全功能的 WCF 服务。本文专注于 WCF 服务,这是 Silverlight 应用程序的最好选择。
创建 WEB 服务
要为 Silverlight 应用程序创建一个 WCF 服务,右击 ASP.NET 站点,添加一个 “启用 Silverlight 的 WCF 服务”。要强调的是,启用 Silverlight 的 WCF 服务是一个支持基本 HTTP 绑定的 WCF 服务,而不是更为严格的 WS-* 标准。但它依然可以响应当前请求来访问 HTTP 上下文,并且使用从 cookies 到缓存的方式来提供所有资源。要与当前 HTTP 内容交互,要使用 HttpContext.Current 静态属性。
在代码中添加一个新方法,并确保加上 OperationContract 特性。像下面一样添加一个返回服务器当前时间的方法:
)]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]
public class SilverlightTestService
{
[OperationContract]
public DateTime GetServerTime()
{
return DateTime.Now;
}
}