学习WCF时,你可能会遇到WCF不允许客户端直接与服务交互,即使它调用的是本地机器内存中的服务问题,这里将介绍WCF服务通信问题的解决方法,客户端总是使用代理(Proxy)将调用转发给服务。代理公开的操作与服务相同,同时还增加了一些管理代理的方法。在这里拿出来和大家分享一下。
#T#服务的创建对于外界而言是不透明的,所以WCF服务通常通过公开元数据(Metadata)的方式描述可用的功能以及服务可能采用的通信方式。元数据的发布可以预先定义,它与具体的技术无关(Technology-Neutral),例如采用基于HTTP-GET方式的WSDL,或者符合元数据交换的行业标准。一个非WCF客户端可以将元数据作为本地类型导入到本地环境中。相似的,WCF客户端也可以导入非WCF服务的元数据,然后以本地CLR类与接口的方式进行调用。
WCF允许客户端跨越执行边界与WCF服务通信。在同一台机器中,客户端可以调用同一个应用程序域中的服务,也可以在同一进程中跨应用程序域调用,甚至跨进程调用。
图:使用机器实现WCF服务通信
图则展示了跨机器边界的通信方式,客户端可以跨越Intranet或Internet的边界与服务交互。