本文结合实例描述了用VisualStudio2008如何开发WCF服务。
一、服务编程生命周期
1、服务设计
2、服务实现
3、配置服务
4、服务宿主运行(Hosting Service in an application)
相当于服务的部署,以及服务运行环境
5、构建客户端
二、服务设计
服务设计的内容包括:
- 服务接口设计:
主要是设计服务的接口,通过两种方式进行服务契约设计,一是手工编写接口类,二是通过类图设计(图形化),类图感觉用起来不是很方便。
接口设计也包括交换的数据类型的设计、请求与响应模式、单向、双工模式设计。
public interface ICalculatorService { [OperationContract] double add(double n1, double n2); [OperationContract] double minus(double n1, double n2); [OperationContract] double multiply(double n1, double n2); [OperationContract] double divide(double n1, double n2); // 任务: 在此处添加服务操作 }
|
- 服务安全与事务设计
- 可靠性设计
三、服务实现
实现服务设计中定义的接口。WCF中即可通过实现"服务设计"中定义的接口来创建服务,也可以通过直接创建一个带标记的类来实现服务(与SCA类似)。
public class CalculatorService : ICalculatorService { #region ICalculatorService 成?员? public double add(double n1, double n2) { return n1 + n2; } public double minus(double n1, double n2) { return n1 - n2; } public double multiply(double n1, double n2) { return n1 * n2; } public double divide(double n1, double n2) { return n1 / n2; } #endregion }
|
在编写好上述服务代码后,可以对服务进行调试,在VS2008中,可以直接运行一个服务,此时,系统自动启动服务,并弹出一个服务测试的客户端,通过这个客户端开发人员可以进行服务的测试。
服务测试客户端界面:
四、配置服务
服务调试完毕,需要对服务的绑定协议、端口、安全策略进行配置。
<service name="CalculatorServiceLib.CalculatorService" behaviorConfiguration="CalculatorServiceLib.CalculatorServiceBehavior"> <host> <baseAddresses> <add baseAddress = "http://localhost:8731/Design_Time_Addresses/CalculatorServiceLib/CalculatorService/" /> </baseAddresses> </host> <!-- Service Endpoints --> <!-- 除非完全限定,否则地址将与上面提供的基址相关--> <endpoint address ="" binding="wsHttpBinding" contract="CalculatorServiceLib.ICalculator"> <!-- Metadata Endpoints --> <!-- 元数据交换终结点由服务用于向客户端做自我描述--> <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除--> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service> |
五、服务客户端
通过svcutil命令行生成客户端Stub代码。命令行为:
svcutil.exe /language:cs /out:"e:/tmp/vs2008/CalcSvc/CalculatorClient.cs" http://localhost:8731/Design_Time_Addresses/CalculatorServiceLib/CalculatorService/mex
这一点,用起来很不爽,命令行的方式让习惯了Eclipse开发的人非常难以接受。
// Create a client. |