C#三种WCF网络客户端的实现方式

2 篇文章 0 订阅

在.net程序设计中,由于引入了类型元数据信息,所以我们可以在程序设计中利用反射机制得到强类的使用.从而避免运行时的类型错误.不过在跨应用程序域的程序设计中我们由于也要使用强类型:一种方式是完全引用源程序集,不过随之而来的问题是程序集的成倍膨涨,因此这种方式在实际应用中是没有多大的优势的,几乎不可以作为开发级使用.第二种方式是利用类型工具如.net下的soapsuds.exe工具来得到类型元数据。不过在跨应用程序设计中我们一般利用接口来解藕这种类型设计。

   在WCF中提供四种方式来实现客户端的类型元数据信息的获取:

   一、利用工具svcutil.exe命令行来得到代理类型。

         svcutil.exe {终结点}/out:{输出文件.cs}/config:{配置文件.config}

         如:  svcutil.exe http://localhost:8000/Derivate/ /out:Client.cs /config:app.config

 

   二、利用工厂类ChannelFactory<T>来实现。它将生成一个代理变量。如我们有一个服务契约:IService那么我们就可以按如下的方式来得到代理类:

         ChannelFactory<IService>  factory=new ChannelFactory<IService>(“BasicHttpBinding_IService”);//以配置信息为参数的工厂类

         IService proxy=factory.CreateChannel();//得到代理类实例。

        现在就可以使用IService接口的方法了。

 

   三、继承一个来自ClientBase<T>或DuplexClientBase<T>,后者是要实现客户回调时的基类。

        例如我们这儿的接口IService有一个方法void AddService(string service),我们可以这样得到一个代理类。

        public class ServiceProxy:ClientBase<IService>,IService

        {

             //这儿可以实现IService的方法。

             void AddService(string service)

             {

                 base.Channel.AddService(service);//由信道对象得到方法的调用。

             }

         }

    四、最后一种方法是使用WCF的MetadataExchangeClient类来得到类型元数据信息。这个类是在System.ServiceModel.Description名字空间下。先来看看这个方法的一些重要的方法

        MetadataSet GetMetadata();//得到类型元数据集

        ServiceEndpointCollection ImporterAllEndpoint();//WsdlImporter类的方法得到所有的终结点。

   现在我们来看如何使用这个类:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现WPF两个页面之间的画面同步,可以使用C# WCF(Windows Communication Foundation)框架。以下是一些基本步骤: 1. 定义服务契约(Service Contract):定义服务契约,包括服务的操作(Operation)和数据合同(Data Contract)。操作定义了服务接口,数据合同定义了传输的数据类型。 2. 实现服务契约(Service Implementation):在服务器端实现服务契约,实现服务的操作逻辑。 3. 配置服务终结点(Service Endpoint):配置服务的地址、绑定和协议等信息,以便客户端可以访问服务。终结点包括服务终结点和元数据终结点。 4. 在WPF页面中生成客户端代理(Client Proxy):在WPF页面中生成客户端代理,使得客户端可以调用服务契约中的操作。客户端代理可以使用svcutil.exe命令行工具或Visual Studio工具自动生成。 5. 在WPF页面中调用服务:在WPF页面中调用服务契约中的操作,从而实现数据的传输。 6. 实现画面同步逻辑:在服务契约的实现中,实现画面同步的逻辑。可以使用WCF的回调机制,将特定的操作结果回传给客户端,从而实现画面同步。 需要注意的是,服务契约的定义和实现必须在两个WPF页面之间共享,服务终结点的配置也必须适合两个页面之间的网络环境,比如可以使用TCP协议或HTTP协议等。同时,还需要考虑服务的安全性、可靠性等方面的问题,以保证画面同步的效果和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值