2010-12-29 4 views
17

Я читаю < Изучение WCF> от Michele Leroux Bustamante. В этой книге, когда дело доходит до net.tcp протокола, автор просто говорит TCP вместо этого. Так в чем же разница между net.tcp и знаменитым протоколом TCP?В чем разница между протоколом net.tcp и TCP?

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

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

+0

Почему я не могу начать щедрость за этот вопрос? я не видел кнопку стартовой баунти. – smwikipedia

+1

net.tcp является схемой uri, тогда как TCP является единственным протоколом. это используется для WCF для приема или отправки сообщения WCF через TCP с использованием бинарного протокола .NET framing при использовании привязки по умолчанию. По умолчанию для этого является порт 808, а формат кадрирования использует .net двоичное сообщение. – Sajay

ответ

1

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

+0

Спасибо за сообщение. Таким образом, net.tcp и TCP - это, по сути, одно и то же. – smwikipedia

+0

Нет, я этого не говорил. Я предположил, что net.tcp является оболочкой для TCP. Посмотрите и посмотрите, правильно ли это. – duffymo

2

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

4

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, соответственно Named Pipes и MSMQ.

Вот список системных WCF при условии привязки: System-Provided Bindings

28

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

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

Префикс net на всех трех указывает, что схема URI была разработана исключительно для использования на платформе Microsoft .NET и обычно не принимается в более широком Интернете. (Другие схемы URI, такие как http и ftp, имеют общепринятые значения и поэтому используются в WCF без префикса). Поэтому префикс net служит предупреждающим звонком, что связанная конечная точка будет иметь ограниченную/несовместимую с другими приложениями, которые не работают на платформе .NET.

Пример URIs:

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, можно найти here. Так, например, адрес net.tcp может указывать на то, что NetTcpBinding, NetPeerTcpBinding или NetTcpContextBinding не требуется.

+4

С тех пор, как http работает поверх tcp, мы просто называем это «http», а ftp на tcp называется просто «ftp», а bittorrent поверх tcp - «торрент» (и то же самое касается всех других интернет-протоколов). Я думаю, что Microsoft должен был назвать его «net.wcf» вместо «net.tcp». – slebetman

+0

:-) Хорошая точка. Возможно, это немного упростило ситуацию. –

+0

Это лучший ответ. Можете ли вы дать мне ресурс для получения более глубокой технической информации о net.tcp? – csteinmueller

Смежные вопросы