Я создаю приложение WinForms, где оно мне понадобится для работы «локально» (точно так же, как Microsoft Word, сохранение и открытие файлов из файловой системы), а также в многопользовательской среде (связь с сервером в сеть, через TCP / IP).
С точки зрения архитектуры, я думаю о следующих логических слоях:
- Презентация (оконные формы)
- Услуги
- Доступ к данным
Я планирую сделать слой "Сервис" сервисом WCF. Поэтому, когда приложение работает в «локальном» режиме, я бы размещал службу WCF в процессе представления (исполняемый файл). Презентация будет одновременно и хостом, и клиентом. Он получал бы доступ к сервисному уровню через прокси WCF, указывая на «localhost».
Когда приложение находится в сетевой среде, я хотел бы разместить ту же службу WCF в процессе «Служба Windows / NT» на каком-либо другом компьютере, и Presentation будет взаимодействовать с ним с использованием того же прокси-сервера WCF, что и в локальном режим.
То есть для презентации у меня был бы только один API.
Теоретически это выглядит хорошо. Тем не менее, я хотел бы узнать ваше мнение обо всем этом. Это плохая практика использовать WCF таким образом, когда сервер и клиент находятся в одном процессе? Можете ли вы найти альтернативный / лучший способ сделать это?
Другой (возможно, не связанный) вопрос: могу ли я разместить и использовать службу WCF в том же исполняемом файле Windows Forms, если я ставлю под сомнение установку клиентского профиля .NET Framework?
Я ценю ваши комментарии:)