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.实现的效果如下

 

 

 

转载于:https://www.cnblogs.com/XZhao/p/7306286.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值