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

本文将引导菜鸟级开发者从零开始,详细讲解如何使用WCF实现服务调用,包括生成客户端、创建WCF客户端对象、调用操作、处理错误及配置保护客户端等关键步骤,确保服务调用过程顺畅无阻。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

紧跟着菜菜从零学习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客户端直接右键选中查找到调用服务并点击,然后输入服务地址即可引用成功,并在客户端程序中进行调用。。

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

 

 

 

 

 

内容概要:本文档主要展示了C语言中关于字符串处理、指针操作以及动态内存分配的相关代码示例。首先介绍了如何实现键值对(“key=value”)字符串的解析,包括去除多余空格和根据键获取对应值的功能,并提供了相应的测试用例。接着演示了从给定字符串中分离出奇偶位置字符的方法,并将结果分别存储到两个不同的缓冲区中。此外,还探讨了常量(const)修饰符在变量和指针中的应用规则,解释了不同类型指针的区别及其使用场景。最后,详细讲解了如何动态分配二维字符数组,并实现了对这类数组的排序与释放操作。 适合人群:具有C语言基础的程序员或计算机科学相关专业的学生,尤其是那些希望深入理解字符串处理、指针操作以及动态内存管理机制的学习者。 使用场景及目标:①掌握如何高效地解析键值对字符串并去除其中的空白字符;②学会编写能够正确处理奇偶索引字符的函数;③理解const修饰符的作用范围及其对程序逻辑的影响;④熟悉动态分配二维字符数组的技术,并能对其进行有效的排序和清理。 阅读建议:由于本资源涉及较多底层概念和技术细节,建议读者先复习C语言基础知识,特别是指针和内存管理部分。在学习过程中,可以尝试动手编写类似的代码片段,以便更好地理解和掌握文中所介绍的各种技巧。同时,注意观察代码注释,它们对于理解复杂逻辑非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值