wcf abc开发1

来源:互联网 发布:mac pages如何保存 编辑:程序博客网 时间:2024/05/22 02:07

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的引用。

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Runtime.Serialization;  
  5. using System.ServiceModel;  
  6. using System.Text;  
  7. namespace WcfServiceLibrary1  
  8. {  
  9.   //注意:如果更改此处的接口名称IService1,则必须更新 App.config 中对IService1  的引用  
  10.     [ServiceContract]                                   //表示契约的类型  
  11.     public interface IService1  
  12.     {  
  13.         [OperationContract]  
  14.         double Add(double a1, double a2);           //加运算  
  15.         [OperationContract]  
  16.         double Subtract(double a1, double a2);      //减运算  
  17.         [OperationContract]  
  18.         double Multiply(double a1, double a2);      //乘运算  
  19.         [OperationContract]  
  20.         double Divide(double a1, double a2);        //除运算  
  21.         [OperationContract]  
  22.         double Percent(double a1, double a2);       //百分比  
  23.     }  
  24.     //使用下面示例中说明的数据协定,将复合类型添加到服务操作中  
  25.     [DataContract]  
  26.     public class CompositeType  
  27.     {  
  28.         bool boolValue = true;  
  29.         string stringValue = "Hello ";  
  30.         [DataMember]  
  31.         public bool BoolValue  
  32.         {  
  33.             get { return boolValue; }                   //获取布尔型数据  
  34.             set { boolValue = value; }                  //设置布尔型数据  
  35.         }  
  36.         [DataMember]  
  37.         public string StringValue  
  38.         {  
  39.             get { return stringValue; }                 //获取字符型数据  
  40.             set { stringValue = value; }                //设置字符型数据  
  41.         }  
  42.     }  
  43. }
0 0