Какая разница между протоколом net.tcp и TCP?

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

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

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

Ответы

Ответ 1

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

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

Префикс 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 и именованные каналы явно являются протоколами Microsoft, и поэтому отсутствие интероперабельности неудивительно, TCP является основным протоколом Интернета, и поэтому, безусловно, он используется в WCF не должен быть специфичным для .NET?

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

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


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

Ответ 2

net.tcp живет в пространстве имен службы (WCF). Он представлен многими классами, наиболее заметным из которых является класс NetTcpBinding. Таким образом, по существу net.tcp является привязкой WCF ( "Безопасное, надежное связывание, подходящее для межмашинной связи".).

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

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

Ниже приведен список системных привязок WCF: привязанные к системе привязки

Ответ 4

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

Ответ 5

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