zoukankan      html  css  js  c++  java
  • WCF之通信工厂的简单使用

    WCF服务端已经创建好了以后,客户端可以直接通过选择服务引用,直接生成客户端的代理类,进而调用服务端的服务。其实说到底,服务端和客户端的通行就是通过终结点,然后在服务器端和客户端建立通信通道完成数据的交互。所以我们可以使用通信工厂ChanelFactory,自己手动创建代理类

    1.通过服务端的WSDL,我们可以很容易的获取到契约,虽然具体的实现客户端是看不到的,但是拥有契约就足够了

    2.根据上面的信息,我们可以创建出和服务器端相同的契约,契约必须保证和服务器端完全一致,参数的名字a,b也必须保证一致,否则出问题(已经测试过),然后就可以根据契约接口(确定调用的方法)和终结点(确定通道)创建出通信工厂

    3.然后使用chanel通信通道就可以直接调用服务的方法,完整的代码如下

    namespace Client1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string a = Console.ReadLine();
                string b = Console.ReadLine();
                double one = double.Parse(a);
                double two = double.Parse(b);
                //这是寄宿在控制台上的服务,如果是IIS上http://localhost:23493/WCFTestService.svc
                EndpointAddress address = new EndpointAddress("http://localhost:9000/");
                BasicHttpBinding bind = new BasicHttpBinding();
                ChannelFactory<IWCFTestService> factory = new ChannelFactory<IWCFTestService>(bind,address);
                IWCFTestService chanel = factory.CreateChannel();
                try
                {
                    double result = chanel.Add(one, two);
                    Console.WriteLine(result);
                    ((IClientChannel)chanel).Close();
                }
    
                catch (CommunicationException ex)
                {
                    ((IClientChannel)chanel).Abort();
                }
                catch(TimeoutException ex)
                {
                    ((IClientChannel)chanel).Abort();
                }
              
                Console.ReadLine();
            }
        }
        [ServiceContract]
        public interface IWCFTestService
        {
            [OperationContract]
            double Add(double a, double b);
        }
    }

    4.实现的效果如下

     

     

  • 相关阅读:
    bzoj3751 / P2312 解方程
    P1270 “访问”美术馆(树形dp)
    [bzoj1085][SCOI2005]骑士精神
    [bzoj1208][HNOI2004]宠物收养所
    [bzoj1196][HNOI2006]公路修建问题
    [bzoj1093][ZJOI2007]最大半连通子图
    [bzoj1103][POI2007]大都市meg
    [Apio2009][bzoj1179]Atm
    [bzoj1191][HNOI2006]超级英雄Hero
    [bzoj2458][BeiJing2011]最小三角形
  • 原文地址:https://www.cnblogs.com/XZhao/p/7306286.html
Copyright © 2011-2022 走看看