【发布时间】:2023-03-26 13:45:01
【问题描述】:
我有一个基于 TCP 的服务,我想通过 WCF 公开。服务API类似于TcpListener类(实际上是基于它),接受TCP连接作为客户端,并通过客户端类发送和接收原始的Stream派生对象。我想通过利用 WCF 序列化创建一个允许发送和接收对象的 WCF 包装器。
基本合约只包含发送和接收两个操作,格式通常会像 JSON 一样是无模式的,但客户端可以在连接上指定协议,所以我想准备接受其中的一些。
它应该也适用于 SSL。目前,当我必须使用 SSL 时,我必须将 TcpClient.GetStream() 包装在 SslStream 中,但性能非常差。我想在没有这种 hack 的情况下使用我的服务,并通过执行以下操作来使用 WCF SSL:
<binding name="MyBinding">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
到目前为止,这些是我的疑问:
我需要创建什么?自定义传输或自定义绑定?
我应该实施什么特别的措施来允许 WCF 跟踪/管理我的服务或客户端连接的生命周期?
干杯。
【问题讨论】:
-
也许你应该把这个问题分开..
-
对,它太宽了。
-
你看过提供的 NetTcpBinding 了吗?从技术上讲,绑定只与 .NET 客户端和服务兼容,但也许您可以编写一个自定义绑定,在内部使用它来支持非 .NET 客户端。您可以创建具有 Stream 属性的数据协定类,并修改 NetTcpBinding 的 Web 配置以启用流请求支持。 NetTcpBinding 也像上面的 sn-p 一样支持 SSL。
-
我会看看,似乎是个好主意。
标签: wcf ssl tcp wcf-binding tcplistener