我正在学习WCF,WCF的好处之一就是你可以使用WCF,即使客户端和服务不在同一个网络中。任何人都可以解释为什么? 为什么使用普通的asp.net服务,.NET远程处理或Windows企业服务客户端和服务必须在同一个网络中?
另一个问题是客户是否需要拥有服务合同接口和数据合同?我假设没有,但客户端如何理解从WCF服务返回的类型?
答案 0 :(得分:1)
编辑:反映更多评论
WCF上的primer(例如What Is Windows Communication Foundation?)是一个很好的起点。 WCF可以使用SOAP来深入实现合同。 WCF还使用Windows中的各种通信工具(以及您要创建的任何自定义通信工具),因此内置了跨机器的通信。
合同的本质(IMO)意味着这在通信的双方都存在。在一个纯粹的.net案例中,我通常将contract definitions放在单独的程序集中并共享它们。在其他地方,我使用WSDL作为主要的合约定义,以便客户和服务共享定义。
编辑:回答评论
您可以轻松地在WCF中轻松完成简单的通信示例(前提是您了解Windows上的通信基础知识,包括防火墙等)。然而,做一些定制的事情并不容易,但网上有许多资源和书籍可以帮助你实现目标。
我使用的书籍:
有关一组资源的SO的另一个问题是“WCF for the Totally Clueless”
答案 1 :(得分:0)
我不知道你在哪里读到WCF的好处是它允许客户端和服务器在不同的网络上。他们已经可以使用.NET Remoting或DCOM(企业服务)在不同的网络上。
客户确实需要知道服务合同以及使用该服务所需的任何其他合同。这可以通过WSDL或元数据交换协议(mex)提供。如果双方都使用.NET,则可以共享合同程序集,但这会引入客户端和服务之间的耦合。
答案 2 :(得分:0)
以前的Microsoft技术是针对特定环境中的某些特定需求而设计的。例如,ASMX Web服务旨在仅使用SOAP over Http发送和接收消息。特定于Microsoft环境的.NET Remoting,没有互操作性。但WCF旨在通过任何传输协议(即HTTP,TCP,NamedPipes,MSMQ等)使用任何格式(默认为SOAP)发送和接收消息。
您的第二个问题“但客户端如何理解从WCF服务返回的类型?” 它通过代理,客户端与代理进行交互,代理包含所有类型等。
您可以找到一个好的concepts and questions here来理解WCF核心概念。