运用WCF服务可以帮助我们轻松的实现一个企业级跨平台的互联解决方案。在接下来的这篇文章中,我们将会为大家详细介绍一下有关Silverlight WCF服务的基本启用方法,希望能给大家带来一些帮助。#t#
Silverlight能够消耗来自各种源码类型的数据,包括REST,API,ASMX服务,WCF服务和其他符合标准的服务。访问REST API中的数据对于想创建能够汇总和显示其他各类页面和服务中数据的混合应用程序的人来说总是充满吸引力的。
然而,很多情况下,我们都想要对应用程序进行检索并以自己的数据显示应用程序。这种构想中所存在的不同选择包括ASMX服务,ADO.NET数据服务和WCF服务。让我们看看怎么用VS2008创建启用Silverlight WCF服务。
WCF为客户绑定服务提供了若干不同的方法。你可以是用wsHttpBingding,netTcpBinding,basicHttpBinding和许多其他依照客户需求设计的应用程序。在Sliverlight2客户调用WCF服务的案例中,由于Silverlight2不支持使用WSSecurity标准来加密和解密SOAP信息的加密类,因此你需要使用basicHttpBinding。如果数据需要在客户端和服务器之间获得安全保障,可以使用SSL。虽然你可以创建一个WCF服务,然后手动改变服务配置文件的绑定。最简单的启动创建WCF服务的方法是使用VS2008的Add New Item对话中启用了Silverlight WCF服务模板。通过使用这一模板,所有必须的配置选项都会自动创建以满足basicHttpBinding。
在你创建新的Silverlight2项目或另一个Web对象的时候,系统会默认添加测试Web项目,你可以向测试Web项目中添加WCF服务。一旦完成添加,系统会对服务类做如下操作:
- [ServiceContract(Namespace = "")]
- [AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Allowed)]- public class CustomerService
- {
- [OperationContract]
- public void DoWork()
- {
- // Add your operation implementation here
- return;
- }
- // Add more operations here and mark them with [OperationContract]
- }
Silverlight2需要的basicHttpBinding会被自动添加到web.config,因此你不需要手动更改配置。(注意Silverlight3现在默认支持二进制信息编码因此性能更优良。)
一旦WCF被添加到你的Web项目中,你就可以编写方法以便返回必需的对象,并能用WCF OperationContract属性对方法进行修饰。这一属性将这些方法标记为服务操作以便Silverlight客户能够使用这些方法。下面的代码是一个向返回Customer的对象添加名为GerCustomer服务操作的示例。虽然代码直接返回了Customer对象,但是你还是可以添加必要的代码以调用数据库和返回动态数据:
- [ServiceContract(Namespace = "http://www.TheWahlinGroup.com")]
- [AspNetCompatibilityRequirements(RequirementsMode =
- AspNetCompatibilityRequirementsMode.Allowed)]
- public class CustomerService
- {
- [OperationContract]
- public Customer GetCustomer(int id)
- {
- return new Customer { FirstName = "John", LastName = "Doe", Zip = 85244 };
- }
- // Add more operations here and mark them with [OperationContract]
- }
- public class Customer
- {
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public int Zip { get; set; }
- }
显然,创建启用Silverlight WCF服务就像在VS 2008选择一个合适的模板一样简单。