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