2010-03-15 2 views
6

WCF Двоичная опция по TCP, применима ли она только для Интранета или Интернета?WCF с двоичным кодом по TCP

Является ли TCP применимым только для интрасети?

+0

Что вы хотите * выполнить *, переключившись на TCP? Могут быть другие (возможно, даже лучшие) варианты, которые не связаны с открытием отверстий. –

+0

@Marc - Я просто пытаюсь понять и изучить доступные варианты. Я знаю и использую HTTP. Попытка узнать другие варианты (TCP на данный момент), а также их плюсы и минусы. – user274915

ответ

2

Ответ: это зависит. Насколько мне известно, двоичная кодировка WCF требует, чтобы обе конечные точки были конечными точками WCF (которые в настоящее время ограничивают вас до Windows, если/пока Mono не поддерживает двоичное кодирование). Другая проблема будет заключаться в том, сможете ли вы дойти до порта, на котором прослушивается удаленный сервер. Одной из причин, по которым запущенные сервисы через HTTP стали настолько популярными, является то, что порт 80 больше похож на открытие.

+0

+1 точно - теоретически, он должен работать нормально - но это TCP - не HTTP - поэтому ожидайте проблемы с брандмауэром, а ваш другой конец должен также говорить о одной и той же привязке tcp/ip с двоичной кодировкой, поэтому она полезна только если вы управляете оба конца сообщения, действительно. –

+0

Спасибо. Итак, согласно вам, если я открою порт 434 (или что-то другое для TCP), я должен иметь доступ к нему через Интернет? Или мне нужно настроить VPN-туннель с клиентом? – user274915

+0

@ jobless-spt - То, что вам нужно сделать для доступа к удаленному порту, будет сильно отличаться в зависимости от конфигурации безопасности сети. Вам нужно поговорить с вашими местными специалистами IT/Sec, чтобы разобраться в них. Обратите внимание, однако, что люди безопасности, вероятно, будут очень неохотно открывать дополнительный порт для внешних сетей; и если это не так, вам могут потребоваться новые люди безопасности. –

3

Сериализатор и транспорт в значительной степени не связаны. Есть предопределенные привязки для общих сценариев, но я понимаю, что вы можете подключить двоичный сериализатор (NetDataContractSerializer) к любому транспорту. Или напишите свой собственный ;-p

Однако, если у вас есть другой транспорт может быть более сложным для настройки (брандмауэры и т. Д.), Чем простой HTTP.

See here (хотя я бы оспаривать утверждение скорости, я видел NetDataContractSerializerлупили по случаю ...)


Re комментарий - не столько транспорта (я подозреваю вас» Лучше всего оставайтесь с http), но рассмотрите this и this. Альтернативный двоичный код serializer, отлично подходит для отправки некоторых типов сообщений. И он отлично работает с MTOM (через http).

+0

Спасибо, Марк. Существуют ли какие-либо ссылки, которые вы можете предоставить по ограничениям протокола, отличного от HTTP. Мне нужно понять, можем ли мы использовать другие протоколы через Интернет или нет? Если возможно, что нужно для этого (открытие порта и т. Д.)? – user274915

+0

@ jobless-spt: добавил некоторые ссылки –

+0

+1, двоичный код HTTP - хороший компромисс. Он оставляет возможность размещать службу в IIS (я не могу сказать вам, что в последний раз, когда я потрудился написать свой собственный хост WCF), и это брандмауэр. Накладные расходы HTTP, вероятно, очень низки, если вы не используете потоковые фрагменты или часто общаетесь. – Josh

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