我正在阅读Michele Leroux Bustamante撰写的<学习WCF>.在本书中,当谈到net.tcp协议时,作者只是说TCP.那么net.tcp和着名的TCP协议之间的区别是什么?
和net.msmq,net.pipe一样,净前缀是什么意思?
非常感谢.
Phi*_*rdt 34
net.tcp 只是在Windows中使用的URI方案,用于标识可以使用TCP访问的端点.
类似地,net.msmq和net.pipe是分别使用MSMQ协议和命名管道协议来寻址端点的URI方案.
net所有这三个上的前缀表示URI方案仅设计用于Microsoft .NET平台,并且在更广泛的互联网中通常不被接受.(其他URI方案,例如http并且ftp已经具有通常接受的含义,因此在WCF内使用而没有任何前缀).net因此,前缀用作警告铃,相关联的端点将与未在.NET平台上运行的其他应用程序具有有限/无互操作性.
示例URI:
net.tcp://localhost:7272
net.msmq://somemachine/publicQueue
net.pipe://machine.domain.com/somePipe
Run Code Online (Sandbox Code Playgroud)
SIDEBAR:虽然MSMQ和命名管道显然是Microsoft协议,因此缺乏互操作性并不令人惊讶,TCP是互联网的基础协议,因此,它在WCF中的使用肯定不应该是.NET特定的吗?
好吧,WCF中的互操作性已经由SOAP和HTTP处理,它们都运行在TCP之上.如果您想通过TCP实现互操作性 - 请使用其中一种协议.
因此,微软希望提供一种通信替代方案,其中性能而非互操作性是关键目标.TCP是合乎逻辑的选择,但TCP是一种相对较低级别的协议,它需要额外的行为和默认值才能实现,以便像WCF这样的消息传递框架以直接的方式工作.此外,TCP可访问资源没有普遍接受的URI方案,因此Microsoft需要发明一个.因此,net.tcp诞生了.
虽然URI本身并不一定表明要使用哪种绑定,但它们确实提供了一个提示.根据Simon Mourier的回答,可以在此处找到WCF中当前可用的绑定.因此,例如,net.tcp地址可能表示需要NetTcpBinding,NetPeerTcpBinding或NetTcpContextBinding.
net.tcp 位于服务模型 (WCF) 命名空间中。它由许多类表示,最明显的是NetTcpBinding Class。因此,本质上 net.tcp 是一个 WCF 绑定(“适合跨机器通信的安全、可靠的绑定。”)。
因此,net.tcp只能在WCF上下文中使用,并且只是基于TCP协议。但你不能说net.tcp=TCP。net.tcp 仅使用 TCP。与其他绑定相比,它被认为是高性能的,但不可互操作。
net.pipe 和 net.msmq 的情况相同,它们是通过较低 Windows 技术(分别为命名管道和MSMQ)实现的 WCF 绑定。
以下是系统提供的 WCF 绑定的列表:系统提供的绑定
| 归档时间: |
|
| 查看次数: |
21404 次 |
| 最近记录: |