В чем разница между протоколом net.tcp и TCP? - PullRequest
21 голосов
/ 29 декабря 2010

Я читаю Мишеля Леру Бустаманте.В этой книге, когда речь заходит о протоколе net.tcp , автор просто говорит TCP .Так в чем же разница между net.tcp и знаменитым TCP протоколом?

И как в net.msmq , netpipe , что означает префикс net ?

Большое спасибо.

Ответы [ 5 ]

33 голосов
/ 11 декабря 2012

net.tcp - это просто схема URI, используемая в Windows для определения конечных точек, к которым можно получить доступ с помощью TCP.

Аналогично, net.msmq и net.pipe являются схемами URI для адресации конечных точек, которые используют протокол MSMQ и Протокол именованных каналов соответственно.

Префикс 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

SIDEBAR: Хотя MSMQ и Named Pipes явно являются протоколами Microsoft, и, следовательно, отсутствие взаимодействия не вызывает удивления, TCP является основным протоколом Интернета, и поэтому, безусловно, его использование в WCF не должноКонкретно .NET?

Что ж, совместимость в WCF уже обрабатывается SOAP и HTTP, которые работают поверх TCP.Если вы хотите взаимодействия по TCP - используйте один из этих протоколов.

Поэтому Microsoft искала альтернативную коммуникацию, где ключевой целью была производительность, а не взаимодействие.TCP был логичным выбором, но TCP - это протокол сравнительно низкого уровня, который требует дополнительного поведения и значений по умолчанию, которые должны быть реализованы для прямой работы с инфраструктурой обмена сообщениями, такой как WCF.Кроме того, для общедоступных ресурсов TCP не существует общепринятой схемы URI, и поэтому Microsoft необходимо было ее изобрести.Таким образом, net.tcp родился.


Хотя сами URI не обязательно указывают, какую именно привязку использовать, они дают подсказку.Согласно ответу Саймона Мурье, привязки, доступные в настоящее время в WCF, можно найти здесь .Так, например, адрес net.tcp может указывать, что требуется NetTcpBinding, NetPeerTcpBinding или NetTcpContextBinding.

4 голосов
/ 07 декабря 2012

net.tcp живет в пространстве имен Service Model (WCF). Он представлен многими классами, наиболее видимым из которых является NetTcpBinding Class . Таким образом, по существу net.tcp является привязкой WCF («Безопасная, надежная привязка, подходящая для связи между компьютерами.»).

Таким образом, net.tcp можно использовать только в контексте WCF, и он просто основан на протоколе TCP. Но вы не можете сказать, net.tcp = TCP. net.tcp просто использует TCP. По сравнению с другими привязками он считается производительным, но не совместимым.

То же самое относится к net.pipe, net.msmq, это привязки WCF, реализованные по более низким технологиям Windows, соответственно Именованные каналы и MSMQ .

Вот список системных привязок WCF: Системные привязки

3 голосов
/ 09 декабря 2011

Хорошая статья, описывающая различия между привязками wcf, здесь .

2 голосов
/ 29 декабря 2010

Это протоколы, установленные в стеке Microsoft в качестве дополнительных опций в коммуникациях WCF.В основном, инструменты, которые вы можете использовать для своих услуг связи.Имейте в виду, однако, что, хотя каждый из них может иметь различные преимущества, протоколы net *, которые Microsoft выдвигает для WCF, не подходят для пользователей этих служб, не относящихся к WCF (и не Microsoft).Если возникает проблема совместимости, они могут вызвать головную боль позже.

1 голос
/ 29 декабря 2010

Префикс .net предполагает, что авторы инфраструктуры обернули протокол, чтобы предоставить вам API, который скрывает сложность и облегчает разработчикам его использование.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...