none
如何手写客户端代码调用WCF服务?自定义客户端代码调用WCF服务? RRS feed

答案

全部回复

  • 1.定义客户端契约
    2.利用通道工厂,创建契约实例
    IContract channel = ChannelFactory<IContract>.CreateChannel(new BasicHttpBinding(), new EndpointAddress("http://localhost:8080/MyService"));
    3.调用操作。

    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2010年1月20日 5:15
    版主
  • 自问自答。。。。。。。。。。
    2010年1月21日 8:26
  • 精神可嘉
    2010年1月21日 8:27
  • 自问自答。。。。。。。。。。

    群里讨论的问题,记录下来,可以给别的人参考。

    会被大的搜索引擎收集吧。
    不然很多问题 都是相似的,很多后来人费劲了都不好找参考资料。~
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2010年1月21日 13:08
    版主
  • 2种方式,引用服务。
    1、VS2008+ 连接WCF服务定义(端口地址),自动生成调用代码。然后调用。
    2、接口定义方式,如楼主所说。

    2010年1月22日 7:00
  • 2种方式,引用服务。
    1、VS2008+ 连接WCF服务定义(端口地址),自动生成调用代码。然后调用。
    2、接口定义方式,如楼主所说。


    谢谢补充~
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2010年1月22日 14:48
    版主
  • 正好我有一点相关顾虑,通过搜索过来的。呵呵。

    我在想如果利用通道工厂方式创建客户端,那么一般是将interface做成一个dll然后发布出去,客户端引用dll,然后用通道工厂创建信道,来调用服务。是这样子的吧? 如果这样的话,在外网上行的通吗,与使用生成客户端代理方式有什么特别之处呢。还请专家聊聊。谢谢。

    2010年6月28日 1:34
  • 正好我有一点相关顾虑,通过搜索过来的。呵呵。

    我在想如果利用通道工厂方式创建客户端,那么一般是将interface做成一个dll然后发布出去,客户端引用dll,然后用通道工厂创建信道,来调用服务。是这样子的吧? 如果这样的话,在外网上行的通吗,与使用生成客户端代理方式有什么特别之处呢。还请专家聊聊。谢谢。


    其实Proxy也是调用 ChannelFactory的.CreateChannel方法来创建通道实例。

    这个背后的机制都一样的。在WCF平台上来说。你可以使用基于.NET平台发布的WCF服务的dll

    至于其它平台调用WCF服务是不能使用的。但是本质上都是构造一个消息。

    这个消息来调用特定的服务操作。


    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
     

    老徐的网站】:http://www.frankxulei.com/

    老徐的博客】:http://www.cnblogs.com/frank_xl/

    【WCF中文技术论坛】:微软WCF中文技术论坛
    【WCF英文技术论坛】:微软WCF英文技术论坛

    2010年6月28日 4:17
    版主
  •  我想应该是这样。谢谢。
    2010年6月28日 4:32
  • 刚写的原码分享一下:           

    try
                {
                    NetTcpBinding binding = new NetTcpBinding();

                    binding.TransferMode = TransferMode.Streamed;
                    binding.SendTimeout = new TimeSpan(0, 30, 0);
                    binding.ReceiveTimeout = new TimeSpan(10, 10, 10);
                    binding.Security.Mode = SecurityMode.None;
                    binding.MaxReceivedMessageSize = 1073741824;
                    //利用通道创建客户端代理 唱这歌
                    _TCPChannel = ChannelFactory<IService1>.CreateChannel(binding, new EndpointAddress(_tcpIPServer));
                    _tcpStart = true;
                    Log.WriteLog("TCP连接成功", "log");
                }
                catch (Exception ex)
                {
                    Log.WriteLog("TCP连接失败:" + ex.Message, "err");
                }

    2010年7月2日 7:52