WCF продвигают клиенту через брандмауэр? [закрытый]

Нам разрешено определять синоним типа, чтобы мы могли создать собственный «стандарт».

На машине, в которой sizeof (int) == 4, мы можем определить:

typedef int int32;

int32 i;
int32 j;
...

Итак, когда мы передаем код на другую машину, на самом деле размер которой длинен int is 4, мы можем просто переопределить единственное вхождение int.

typedef long int int32;

int32 i;
int32 j;
...
9
задан Community 23 May 2017 в 10:29
поделиться

6 ответов

Я нашел несколько решений:

Лед ZeroC GPL с коммерческой опцией. Только протестировали быстро. Выглядит более мощным, чем Дистанционная работа.NET и очень активно разрабатывается.

RemObjects Коммерческая, активная разработка, поддержки почти, кажется, не имеют весь больше расширенных функций, которые используют GenuineChannels.

GenuineChannels. Это использует дистанционную работу с большим количеством хороших дополнительных функций, при этом самый важный - это работы через NATs без потребности открыть клиентский брандмауэр. К сожалению, кажется, очень мертв.

Другое решение состоит в том, чтобы использовать потоковую передачу с IIS, в соответствии с этой статьей: Хранение соединений открывается в IIS

Клиент устанавливает первую связь (http с IIS6, tcp с IIS7) к серверу в порте 80, соединение затем сохранено открытым с ответом потоковой передачи, который никогда не заканчивается.

У меня не было времени для экспериментирования с этим, и я не нашел образец, который говорит, что конкретно решает проблему брандмауэра, но здесь является превосходным образцом, который, вероятно, работает: Потоковая передача XML.

4
ответ дан 4 December 2019 в 22:31
поделиться

В большинстве установок брандмауэра соединение TCP будет разъединено брандмауэром, если это будет неактивно для сохранения ресурсов. Неактивный тайм-аут - вероятно, не что-то, чем можно управлять. Некоторые разъединят их, если они будут неактивны, и предел ресурса поражается.

Большинство сред корпорации не позволит никаким машинам делать исходящее соединение TCP так или иначе.

Кроме того, использование этого механизма означает, что Вы собираетесь иметь масштабирующиеся проблемы. Я думаю, что более надежное решение состоит в том, чтобы стоять в очереди информация и сделать, чтобы Ваши клиенты регулярно опрашивали относительно них. Используйте кэширование, если возможный таким образом, что последующий клиентский опрос получит кэшированные данные от клиентского кэша прокси-сервера, если они используют тот.

Если необходимо продвинуть данные своевременно, на подвторой земле (т.е. финансовые услуги), затем считать некоторую обменивающуюся сообщениями инфраструктуру таким дистрибьютором NServiceBus на стороне клиента, но это потребует клиентской установки...

Поэтому Вы попытались использовать Toredo? Считав, что казалось бы там, что это - prob, также сложный для пользователя для установки.

1
ответ дан 4 December 2019 в 22:31
поделиться

Я не попробовал сценарий, который Вы говорите о том, таким образом, я не могу быть слишком большим количеством справки, извините. Если все, что необходимо обойти, является клиентским брандмауэром, Вы могли бы хотеть проверить это сообщение.

Удачи.

1
ответ дан 4 December 2019 в 22:31
поделиться

Имейте Вас, пытался смотреть на: http://www.codeproject.com/KB/WCF/WCF_Duplex_UI_Threads.aspx

Можно ли обеспечить примеры того, чего Вы уже делали попытку? С деталями брандмауэров и т.д., сообщений об ошибках?

Если и клиент и сервер может быть обращен непосредственно и брандмауэры, не проблема, имеет Вас рассмотренный разрешением клиентам зарегистрировать URL, предоставляющий поддерживаемый контракт. Сервер может затем назвать этот сервис каждый раз, когда он должен, без потребности установить длительное (но главным образом неактивное соединение), избегает потребности в сердцебиении и может быть сделан эластичным через sessions\connections.

2
ответ дан 4 December 2019 в 22:31
поделиться

Вы пробовали это? DuplexHttpBinding

Он использует метод интеллектуального опроса, инкапсулированный в виде настраиваемой привязки WCF. Так что это должно работать из коробки.

1
ответ дан 4 December 2019 в 22:31
поделиться

Вы можете сделать следующие изменения в клиенте для доступа к дуплексному веб-сервису на клиенте с включенным брандмауэром.

  • Установите опцию WebHttp отмеченной в Firewall -> Advanced -> Settings (of Network Connection Setting) -> Web Server (Http)
-1
ответ дан 4 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: