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