23.2 使用WCF构建统计与计算服务的实现
在WCF服务体系中,客户端的调用是通过服务代理来完成的。本节讲解创建服务器端服务及设计服务契约的实现方法。
23.2.1 设计与实现服务契约(1)
WCF服务中的服务契约实际上使用的是接口,下面讲解通过使用接口设计与实现WCF服务契约的实现方法。
(1)启动Visual Studio 2010,新建一个项目工程。在“新建项目”对话框中的“项目类型”中,选择WCF节点,然后在右面的“模板”列表中选择“WCF服务库”项,如图23.3所示。选择完成之后单击“确定”按钮,创建一个WCF服务项目。
(点击查看大图)图23.3 创建WCF服务项目 |
注意:创建WCF项目工程的目的是将WCF服务项目最后编译成一个可以调用的类库。
(2)右击项目工程,在弹出的快捷菜单中选择“添加引用”命令,弹出“添加引用”对话框。在该对话框中选择.NET标签,进入.NET选项卡,在其中选择System.ServiceModel项,如图23.4所示。单击“确定”按钮,引用System.ServiceModel命令空间。
(3)之后在WCF服务项目中的“引用”项目下可以看到引用的System.ServiceModel命令空间,如图23.5所示。
图23.4 引用System.ServiceModel命名空间 |
图23.5 查看引用的System.ServiceModel命令空间 |
(4)在图23.5中,可以看到项目自动生成了App.config、IService1.cs和Service1.cs这3个文件。其中App.config文件用来配置WCF的ABC,IService1.cs文件是服务契约的接口,而Service1.cs文件是实现契约的类。
(5)修改服务契约IService1.cs文件中的程序代码如下:
注意:如果要更改IService1.cs文件的名称,则必须更新 App.config中对IService1的引用。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.ServiceModel;
- using System.Text;
- namespace WcfServiceLibrary1
- {
- //注意:如果更改此处的接口名称IService1,则必须更新 App.config 中对IService1 的引用
- [ServiceContract] //表示契约的类型
- public interface IService1
- {
- [OperationContract]
- double Add(double a1, double a2); //加运算
- [OperationContract]
- double Subtract(double a1, double a2); //减运算
- [OperationContract]
- double Multiply(double a1, double a2); //乘运算
- [OperationContract]
- double Divide(double a1, double a2); //除运算
- [OperationContract]
- double Percent(double a1, double a2); //百分比
- }
- //使用下面示例中说明的数据协定,将复合类型添加到服务操作中
- [DataContract]
- public class CompositeType
- {
- bool boolValue = true;
- string stringValue = "Hello ";
- [DataMember]
- public bool BoolValue
- {
- get { return boolValue; } //获取布尔型数据
- set { boolValue = value; } //设置布尔型数据
- }
- [DataMember]
- public string StringValue
- {
- get { return stringValue; } //获取字符型数据
- set { stringValue = value; } //设置字符型数据
- }
- }
- }