• 菜菜从零学习WCF五(生成客户端)


    有图有真相,如果你也是个菜鸟,那就顺便来看看我这个菜鸟一步一步的实现吧。

    紧跟着菜菜从零学习WCF四(承载服务),我们在此节已经在IIS中发布了此项服务。

    下面我们先来了解一下,如何来生成客户端吧。

    1.获取服务协定、绑定和地址

      --通常,可以通过使用ServiceModel Metadata Utility Tool(Svcutil.exe)完成此操作

      从服务中下载元数据,并使用您选择的语言将其转换到托管源代码文件中

      创建一个可用于配置WCF客户端对象的客户端应用程序配置文件

      此协定代码编译为客户端应用程序或另一个程序集,然后,客户端应用程序可以使用该程序集创建一个WCF客户端对象。

      可以使用配置文件配置客户端对象以与服务正确连接。

    2.创建一个WCF客户端对象。

      --WCF客户端是表示某个WCF服务的一个本地对象,客户端可以使用这种表示形式与远程服务进行通信。

      --WCF客户端类型可实现目标服务协定,因此在创建一个服务协定并配置它之后,就可以直接使用该客户端对象调用服务操作。

      --WCF运行时将方法调用转换为消息,然后将这些消息发送到服务,侦听回复,并将这些值作为返回值或out参数(或ref参数)返回到WCF客户端对象中

    3.调用操作

      --创建并配置了客户端对象后,请创建一个try/catch块,如果该对象是本地对象,则以徐昂痛的方式调用操作,然后关闭WCF客户端对象。

      --当客户端应用程序调用第一个操作时,WCF将自动打开基础通道,并在回收对象时关闭基础通道。

      --不要用using块来调用WCF方法

      调用方法例如

        

                ServiceClient sc = new ServiceClient();
                try
                {
                    Console.WriteLine(sc.GetData(111));
                    sc.Close();
                }
                catch (TimeoutException timeout)
                {
                    sc.Abort();
                }
                catch(CommunicationException commException)
                {
                    sc.Abort();
                }
    

    4.处理错误

      --由操作返回的SOAP错误导致引发的任何System.ServiceModel.FaultException对象

      --至少将应用程序设置为能够处理可能的System.TimeoutException和System.ServiceModel.CommunicationException异常

    5.配置和保护客户端

      --服务协定的安全要求已在服务协定接口中声明,并且如果Svcutil.exe已创建了一个配置文件,则该文件通常会包含一个能顾支持服务安全要求的绑定。但是在某些情况中,可能需要更多的安全配置,例如配置客户端凭据

      

    那么现在我们来创建客户端进行调用发布在IIS中的WCF服务。

    第一步我们打开命令工具如下图位置

    打开工具后,输入以下指令

    /out:输出服务代理代码,/config:生成客户端服务配置。

    /out:C:\ClientService.cs  /config:C:\App.config http://192.168.0.5/WCFIISService/Service.svc 输入以下命令后即可在相应位置生成相应文件

    第二步再在上一节中的解决方案中添加控制台应用程序,然后将刚刚生成的两个文件添加到控制台应用程序中,并添加System.ServiceModel

    第三步再在控制台应用程序Main函数中添加调用代码

        class Program
        {
            static void Main(string[] args)
            {
                ServiceClient sc = new ServiceClient();
                string str = sc.GetData(111);
                Console.Write(str);
                Console.ReadLine();
            }
        }

    第四步F5执行后看效果,当然我们Main只进行了简单的调用,最好还是按照上面3.调用操作进行调用

    这里只讲了一种方法进行客户端调用WCF。其实还有其他的方法供调用。

    我暂时知道的还有一种方法就是:在WCF客户端直接右键选中查找到调用服务并点击,然后输入服务地址即可引用成功,并在客户端程序中进行调用。。

    本节示例代码下载连接点击下载

  • 相关阅读:
    原生js ajax与jquery ajax的区别
    ajax的五大步骤
    js中setTimeout()时间参数设置为0的探讨
    js数组与字符串的相互转换方法
    javascript的三个组成部分
    linq 获取不重复数据,重复数据 var unique = arr.GroupBy(o => o).Where(g => g.Count() == 1) .Select(g => g.ElementAt(0));
    C# 随机 抽奖 50个随机码 不重复
    聚集索引和非聚集索引 聚集索引的叶节点就是最终的数据节点,而非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针。
    WPF ControlTemplate,DataTemplate
    C# 实现 奇数偶数排序,奇数在前,偶数在后
  • 原文地址:https://www.cnblogs.com/aehyok/p/2958537.html
Copyright © 2020-2023  润新知