WCF для локального и сетевого режима приложения - плюс вопрос о .NET Client Profile - PullRequest
1 голос
/ 24 октября 2009

Я создаю приложение WinForms, где оно мне понадобится для работы «локально» (точно так же, как Microsoft Word, сохранение и открытие файлов из файловой системы), а также в многопользовательской среде (связь с сервером в сеть, через TCP / IP).

С точки зрения архитектуры, я думаю о следующих логических слоях:

  • Презентация (оконные формы)
  • Услуги
  • Доступ к данным

Я планирую сделать слой "Сервис" сервисом WCF. Поэтому, когда приложение работает в «локальном» режиме, я бы размещал службу WCF в процессе представления (исполняемый файл). Презентация будет одновременно и хостом, и клиентом. Он получал бы доступ к сервисному уровню через прокси WCF, указывая на «localhost».

Когда приложение находится в сетевой среде, я хотел бы разместить ту же службу WCF в процессе «Служба Windows / NT» на каком-либо другом компьютере, и Presentation будет взаимодействовать с ним с использованием того же прокси-сервера WCF, что и в локальном режим.

То есть для презентации у меня был бы только один API.

Теоретически это выглядит хорошо. Тем не менее, я хотел бы узнать ваше мнение обо всем этом. Это плохая практика использовать WCF таким образом, когда сервер и клиент находятся в одном процессе? Можете ли вы найти альтернативный / лучший способ сделать это?

Другой (возможно, не связанный) вопрос: могу ли я разместить и использовать службу WCF в том же исполняемом файле Windows Forms, если я ставлю под сомнение установку клиентского профиля .NET Framework?

Я ценю ваши комментарии:)

1 Ответ

1 голос
/ 24 октября 2009

Я бы сказал, что совсем не плохая практика - размещать сервер и клиента в одном процессе - это называется межпроцессным взаимодействием! : -)

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

Для сценария локальной сети просто переключитесь на NetTcpBinding - очень быстро и эффективно.

Должен работать как шарм.

Согласно этой странице в клиентском профиле .NET Framework, в профиле клиента должна поддерживаться практически вся WCF:

Функции WCF, поддерживаемые .Net Профиль клиента Framework

Следующая связь Windows Основные функции поддерживаются Профиль клиента .NET Framework:

* All of WCF is supported except for Cardspace and web hosting.
* Remoting TCP/IP channels are supported.
* Asmx (Web Services) are not supported.

Марк

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