5

今天我使用 ServiceHost 自托管 WCF 服务。

我想在我的 WCF 服务附近托管我自己的 TCP 程序以进行直接套接字操作(例如留置某种广播 TCP 流)

我需要控制 URL 命名空间(这样我就可以让我的客户使用一些不错的 URL,例如 example.com:port/myserver/stream?id=1 或 example.com:port/myserver 将 TCP 流直接发送到我的服务中) /stream?id=anything ,这样我就不会被 1 个客户端用于 1 个套接字的想法所困扰,我真的想将我的 WCF 服务保持在与我自己的服务器相同的端口上,或者它是什么能够调用 www.example.com:port/myWCF/stream?id=222... 我希望它可以在任何端口上工作 - 不仅是 80)

任何机构都可以帮我解决这个问题吗?

我现在只使用 WCF。而且我不喜欢它是如何工作的。这就是为什么我要开始迁移以清除 TCP=) 的众多原因之一

我不能使用 net-tcp 绑定或任何其他很酷的 WS-* 绑定(今天我使用最简单的绑定,以便我的客户(如 Flash、AJAX 等)轻松连接到我)。

我需要快速轻松地实现连接协议,就像我创建的用于实时大量数据传输的套接字一样。

所以..有什么想法吗?请 - 我需要帮助。

4

3 回答 3

1

好吧,如果您打算使用纯套接字,您也可以让您的服务充当代理。让 WCF 服务在其他端口上侦听,并在所需端口上侦听您的应用程序。当您在应用程序中收到请求时,手动解析标头并检查它是否适用于您的服务或 WCF 服务。如果它是用于 WCF 服务的,打开一个到 WCF 服务的 TCP 连接并将接收到的数据传递给它,然后简单地将 WCF 的答案传回给客户端。

另一方面,您可以通过编写自己的自定义绑定来大大加快 WCF。WCF 在使用反射完成的序列化上浪费了很多时间(这很慢),解决这个问题会大大提高你的速度。

于 2010-04-12T12:15:31.860 回答
0

如果您对 WCF 的问题是性能,那么您应该尝试使用二进制网络 TCP 绑定来消除 XML 序列化以提高性能。

一些高流量应用程序(例如实时游戏)使用 UDP 进行大部分通信,因为它通过协议进行。使用 TCP,您可以获得内置的排序和可靠性,但这是以性能为代价的,因为它会隐式延迟数据包以等待乱序数据包,以便它可以以正确的顺序将它们交给应用程序,或者等待丢失的数据包被怨恨。相反,您可以使用 UDP 并实施您自己的方案来验证不如 TCP 严格的数据。

有可用于 WCF 的 UDP 选项,或者您可以实现自己的选项。WCF 只不过是一个消息泵,你可以用你想要的任何东西替换不同的步骤。

于 2010-04-06T23:19:49.627 回答
-1

不确定这是否对您有帮助,但请尝试打开您的网络 TCP 共享服务。

于 2010-04-11T11:05:43.347 回答