我需要编写一个程序,可以与其他 .NET 程序通信...但也要与传统的 VFP 程序通过 TCP 进行通信。我需要选择一种相当简单的 TCP 消息格式,使 VFP 程序员可以使用。它可以是一系列由 null 字符分隔的小 XML 块的序列,或者其他什么形式都可以。
我需要在 TcpListener/TcpClient 和 WCF 之间进行选择。我开始研究 WCF,但它的架构似乎很不透明,并且内置的 Visual Studio 模板非常偏向于制作像一种 RPC 机制的“Web 服务”,但需要一个特殊的“主机”或 Web 服务器,这个服务器是应用程序外部的。而微软的6-stage tutorial让 WCF 听起来相当繁琐(需要代码生成器、命令行和 XML 等等才能远程减去或乘以两个数字)。
我想要一个自包含的应用程序(没有“主机”),我想要控制线路协议,并且我想要理解它的工作原理。WCF 似乎无法促成这些事情,因此我放弃了它,转而使用 TcpListener/TcpClient。
然而,该程序是作为单个(VFP)服务器和许多(.NET)客户端之间的中介服务,将有双向通信和跨不同连接。使用
所以我想再次征求意见:我是否应该考虑使用 WCF?如果是,你能指点我以下问题的答案吗?
我需要在 TcpListener/TcpClient 和 WCF 之间进行选择。我开始研究 WCF,但它的架构似乎很不透明,并且内置的 Visual Studio 模板非常偏向于制作像一种 RPC 机制的“Web 服务”,但需要一个特殊的“主机”或 Web 服务器,这个服务器是应用程序外部的。而微软的6-stage tutorial让 WCF 听起来相当繁琐(需要代码生成器、命令行和 XML 等等才能远程减去或乘以两个数字)。
我想要一个自包含的应用程序(没有“主机”),我想要控制线路协议,并且我想要理解它的工作原理。WCF 似乎无法促成这些事情,因此我放弃了它,转而使用 TcpListener/TcpClient。
然而,该程序是作为单个(VFP)服务器和许多(.NET)客户端之间的中介服务,将有双向通信和跨不同连接。使用
TcpListener
和 TcpClient
,处理连接和线程的工作变得有点混乱,我没有使用 IAsyncResult
的经验,并且对我的代码质量没有信心。所以我想再次征求意见:我是否应该考虑使用 WCF?如果是,你能指点我以下问题的答案吗?
- 哪里有关于WCF架构的好解释?或者我需要一本书吗?
- 在WCF中如何进行双向通信,其中任意一方(单个TCP连接的任何一面)都可以随时发送消息?
- 如何摆脱所有Web服务和RPC mumbo-jumbo,并控制传输协议?
- 在WCF中,如何优雅地关闭应用程序,同时关闭所有连接而不使用hacky Thread.Abort()命令?
CreateObject
函数调用实现。但在这种情况下,最好使用CreateObject
以便通过COM+集成访问代理(请参见此处的10-11清单:http://msdn.microsoft.com/en-us/library/bb735856.aspx)。 - casperOne