我有一个基于 TCP 的服务,我想通过 WCF 公开。服务 API 类似于 TcpListener
类(实际上是基于它),接受 TCP 连接作为客户端,并通过客户端类发送和接收原始 Stream
派生对象。我想通过利用 WCF 序列化创建一个允许发送和接收对象的 WCF 包装器。
基本合约只包含两个操作,发送和接收,格式通常像 JSON 一样是无模式的,但客户端可以在连接时指定协议(protocol),所以我想准备好接受其中的一些。
它应该也适用于 SSL。目前,当我必须使用 SSL 时,我必须将 TcpClient.GetStream()
包装在 SslStream
中,但性能非常差。我想在没有这种 hack 的情况下使用我的服务,并通过执行以下操作来使用 WCF SSL:
<binding name="MyBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
到目前为止,这些是我的疑惑:
我需要创建什么?自定义传输或自定义绑定(bind)?
我应该实现什么特别的东西来允许 WCF 跟踪/管理我的服务或客户端连接的生命周期?
干杯。
最佳答案
您需要像示例中那样为您的绑定(bind)创建安全设置。 This页面是关于 WCF 绑定(bind)安全设置的 MSDN 文章。我相信 SSLStream 包装器应该是处理这个问题的正确方法——我不确定为什么性能如此糟糕。你可以看看this由于缓冲不正确,所以关于慢 SSLStream 的问题。取决于您如何使用套接字 this由于您对二进制数据的编码方式,答案谈到了性能下降。如果您要发送许多小消息,此特定设置将非常慢。第二个 SO 链接建议使用类似谷歌的 proto-buf 之类的东西。库。
跟踪/管理生命周期是什么意思?你的意思是超时过时的连接?我相信 TCPListener 已经处理过了。
我知道我可能没有回答你的问题,但如果没有更多细节,很难确定缓慢的确切原因。
关于wcf - TCP 服务作为 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22298992/