zoukankan      html  css  js  c++  java
  • WCF学习心得----(五)生成客户端

    WCF学习心得----(五)生成客户端

    1.    通过Svcutil.exe工具直接生成客户端

    1.1     将服务承载于IIS上

    1.1.1 在IIS中新建网站,所示效果如下图:

                           

    1.1.2   新建WCF应用程序,项目文档结构如下图:

     

    1.1.3   选中项目,点击右键在资源管理其中打开文件,结构如下:

     

    将上图中红框标记的文件拷贝至跟网站虚拟目录映射的物理路径下,一般都是在C盘,如下路径C:inetpubwwwroot

    1.1.4 启动网站,并在浏览器中浏览,会看到如下的文档目录:

     

    1.1.5  点击其中后缀为.svc的文件,看到如下效果,同时浏览器中的url即为下面我们生成客户端调用类所用的参数

     

    CalculatorService 服务图

     

    生成客户端调用类所需的服务地址

    1.2 打开命令行提示符工具,输入一下命令,将目录定位到Svcutil.exe所在的目录。

    Svcutil.exe目录一般位于C:Program FilesMicrosoft SDKsWindowsv7.1Bin文件夹下,所以命令如下:

    Cd C:Program FilesMicrosoft SDKsWindowsv7.1Bin

    如图所示:

     

    1.3 定位到该文件下之后,继续键入以下命令:

    Svcutil.exe  /out:C:CalculatorClient.cs  /config:C:App.config

    http://10.10.60.79:116/CalculatorService.svc

    如图所示:

     

    备注:

    Svcutil工具生成客户端使用类有固定的语法参数,下面仅列出了该文所需的一些参数,至于其他的参数以后可能还会涉及到,有兴趣的话可以去msdn上了解一些。

    1)       “/out:”后跟生成文件的存放路径+文件名+.cs

    2)       “/config:”后跟生成文件的存放路径+app.config

    3)       http://....  为服务的地址,此例中采用的是在IIS中承载,如果是在托管的应用程序中承载,还需要保证承载服务的应用程序运行起来。Svcutil.exe通过该服务地址,生成下载客户段使用类,如果是自承载则该地址要跟配置文件中的<host>节点下的<address>节点中的地址是一致的。

    1.4 打开在1.3中指定的生成客户端调用类的路径,即可找到生成的客户端调用类和配置文件

    1.5 将生成的类文件和配置文件,添加到新建的客户端项目中即可。

    2.    通过System.ServiceModel. ChannelFactory<TChannel>直接创建服务代理对象

    直接看一下通过ChannelFactory生成的客户端代理类的类文件:

    namespace ZWCFServiceClient
    {
    //该服务协定,跟服务端的协定是一样的
        [ServiceContract(Namespace = "http://ZWCFService")]
        public interface ICalculatorService
        {
    
            [OperationContract]
            double Add(double n1, double n2);
    
            [OperationContract]
            double Subtract(double n1, double n2);
    
            [OperationContract]
            double Mutiply(double n1, double n2);
    
            [OperationContract]
            double Devide(double n1, double n2);
        }
    
        class Program
        {
           static void Main(string[] args)
           {
                //主要通过以下高亮代码生成客户端调用对象
                EndpointAddress address = new EndpointAddress("http://localhost:8000/ZWCFService/CalculatorService");
                WSHttpBinding binding = new WSHttpBinding();
                ChannelFactory<ICalculatorService> factory = new ChannelFactory<ICalculatorService>(binding, address);
                ICalculatorService calculator = factory.CreateChannel();
    
                Console.WriteLine("{0}+{1}={2}",1.2,2,3,calculator.Add(1.2, 2.3));
                Console.WriteLine("{0}-{1}={2}",3.4,2.3,calculator.Subtract(3.4, 2.3));
                Console.WriteLine("{0}*{1}={2}",4.5,3.4,calculator.Mutiply(4.5, 3.4));
                Console.WriteLine("{0}/{1}={2}",5.6,4.0,calculator.Devide(5.6, 4.0));
    
               Console.WriteLine("Operation Over");
               Console.WriteLine("Press any key to terminate the Console");
                Console.Read();
          }
    
        }
    }
    

    3.    通过在客户端添加服务引用来生成客户端

    3.1在客户端应用程序中,选中项目,点击右键à添加服务引用,然后会弹出如下框

     

    3.2 在地址栏里键入服务的地址,然后点击前往

    当服务列表出现对应的服务时,说明已找到该服务

    3.3 在命名空间栏里边为服务重新定义命名空间,然后点击确定

    3.4 在程序中直接通过在3.3中定义的命名空间+”.”+服务名如:

    CalculatorClient.CalculatorService  calculator=new CalculatorClient.CalculatorService();

    这样就新建了一个客户端调用类,可以调用服务。

  • 相关阅读:
    招聘 微软全球技术支持中心 sql server组
    retrofit2 上传图片
    android 6.0权限判断 音频 拍照 相册
    android studio 修改成自己jks(keystore)签名文件
    android 透明度颜色值
    android studio clone 失败
    fresco Bitmap too large to be uploaded into a texture
    android 虚线
    EventBus 3.0使用
    java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting
  • 原文地址:https://www.cnblogs.com/Olive116/p/3209467.html
Copyright © 2011-2022 走看看