wcf abc开发4

23.2.3  构建统计与计算服务的客户端(1)

在服务器端构建完WCF服务之后,就可以在客户端调用这些服务了。客户端程序可以是网页或Forms应用程序。本节将以ASP.NET创建的网页调用WCF服务为例,讲解在客户端调用WCF服务的实现方法。

(1)在当前的解决方案中,新建一个Web应用程序,命名为WcfServices。

(2)打开默认生成的Web.config文件,在该文件中配置客户端配置需要调用服务的ABC。在Web.config文件的configuration节点下,添加如下配置代码。

 
 
  1. <system.serviceModel> 
  2.   <client> 
  3.     <endpoint address=http://localhost:8731/Design_Time_Addresses/WcfSer-    viceLibrary1/Service1/  
  4.     binding="wsHttpBinding" 
  5.     contract="WcfServiceLibrary1.IService1"> 
  6.     endpoint> 
  7.   client> 
  8. system.serviceModel> 

注意:这里的ABC属性要与WCF服务中App.config配置文件的内容对应起来。

(3)右击Web项目名称,在弹出的快捷菜单中选择“添加引用”命令,如图23.6所示。

(4)随后将弹出“添加引用”对话框,在该对话框中选择“浏览”标签,进入“浏览”选项卡。在其中选择前面章节中编译生成的WCF服务文件WcfServices.dll,如图23.7所示。单击“确定”按钮将WcfServices.dll文件引用到Web项目中。

 
图23.6  引用WCF服务
 
图23.7 “添加引用”对话框

注意:如果当前项目中没有引用System.ServiceModel命名空间,则还需要在“添加引用”对话框中将其引用到当前项目中。

(5)在Web项目的根目录下,添加一个名称为CalculatorClient.cs的类。在该类中添加创建一个代理接口和通信通道的程序代码,添加代码后CalculatorClient.cs类中的程序代码如下:

 
 
  1. using System;  
  2. using System.Data;  
  3. using System.Configuration;  
  4. using System.Linq;  
  5. using System.Web;  
  6. using System.Web.Security;  
  7. using System.Web.UI;  
  8. using System.Web.UI.HtmlControls;  
  9. using System.Web.UI.WebControls;  
  10. using System.Web.UI.WebControls.WebParts;  
  11. using System.Xml.Linq;  
  12. using System.ServiceModel;  
  13. namespace CalServices  
  14. {  
  15. //创建可调用服务的WCF客户端对象  
  16.      public partial class CalculatorClient : System.ServiceModel.ClientBase  
  17.      <WcfServiceLibrary1.IService1>, WcfServiceLibrary1.IService1  
  18.      {  
  19.         public CalculatorClient()  
  20.         { }  
  21.      //使用应用程序配置文件中有 endpointConfigurationName 指定的配置信息来初始化     ClientBase<TChannel>类的新实例  
  22.         public CalculatorClient(string endpointConfigurationName)  
  23.             : base(endpointConfigurationName)   
  24.         { }  
  25.      //使用指定的目标地址和终结点信息初始化 ClientBase<TChannel>类的新实例  
  26.      public CalculatorClient(string endpointConfigurationName, EndpointAddress      remoteAddress)  
  27.             : base(endpointConfigurationName, remoteAddress)        {}  
  28.         //实现加法操作  
  29.         public double Add(double n1, double n2)  
  30.         {  
  31.           return base.Channel.Add(n1, n2);                              //获取用于与服务通信的内部通道(实现加法操作)  
  32.         }  
  33.         //实现减法操作  
  34.         public double Subtract(double n1, double n2)  
  35.         {  
  36.           return base.Channel.Subtract(n1, n2);                             //获取用于与服务通信的内部通道(实现减法操作)  
  37.         }  
  38.         //实现乘法操作  
  39.         public double Multiply(double n1, double n2)  
  40.         {  
  41.           return base.Channel.Multiply(n1, n2);                             //获取用于与服务通信的内部通道(实现乘法操作)  
  42.         }  
  43.         //实现除法操作  
  44.         public double Divide(double n1, double n2)  
  45.         {  
  46.           return base.Channel.Divide(n1, n2);                               //获取用于与服务通信的内部通道(实现除法操作)  
  47.         }  
  48.         //实现百分比操作  
  49.         public double Percent(double n1, double n2)  
  50.         {  
  51.           return base.Channel.Divide(n1, n2);                               //获取用于与服务通信的内部通道(实现百分比操作)  
  52.         }  
  53.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值