积极答复者
如何手写客户端代码调用WCF服务?自定义客户端代码调用WCF服务?

问题
-
如何手写客户端代码调用WCF服务?自定义客户端代码调用WCF服务?
如何来做。
此问题来自WCF学习交流群:group535993@msnzone.cn
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
答案
-
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- 已标记为答案 Frank Xu LeiModerator 2010年1月22日 14:48
-
2种方式,引用服务。
1、VS2008+ 连接WCF服务定义(端口地址),自动生成调用代码。然后调用。
2、接口定义方式,如楼主所说。- 已标记为答案 Frank Xu LeiModerator 2010年1月22日 14:48
全部回复
-
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- 已标记为答案 Frank Xu LeiModerator 2010年1月22日 14:48
-
自问自答。。。。。。。。。。
群里讨论的问题,记录下来,可以给别的人参考。
会被大的搜索引擎收集吧。
不然很多问题 都是相似的,很多后来人费劲了都不好找参考资料。~
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 -
2种方式,引用服务。
1、VS2008+ 连接WCF服务定义(端口地址),自动生成调用代码。然后调用。
2、接口定义方式,如楼主所说。- 已标记为答案 Frank Xu LeiModerator 2010年1月22日 14:48
-
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 -
正好我有一点相关顾虑,通过搜索过来的。呵呵。
我在想如果利用通道工厂方式创建客户端,那么一般是将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英文技术论坛 -
刚写的原码分享一下:
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");
}