Мне нужно написать клиент-серверное приложение. Прежде всего, я собираюсь написать сервер приложений. Также мой сервер приложений должен подключиться к базе данных (MS Sql Server) и предоставить данные из него в клиентское приложение. Итак, как я знаю, я должен использовать WCF. Это хорошая идея? Может, мне нужно взглянуть на что-то еще?
Давайте начнем с архитектуры клиент-сервер.
Предполагая, что вы доработали, что вам нужен клиент и сервер, но решила ли вы тщательно архитектуру? Я имею в виду, какой тип сервера и какой тип клиента вы собираетесь создавать?
Давайте посмотрим здесь варианты:
сервер
1. Какой тип хостинга вы собираетесь использовать?
2. Какой тип и сколько нагрузки требуется вашему серверу?
клиент
1. Тип потребителя вашей услуги
2. Необходимо ли развертывание клиента на локальном компьютере или он должен быть основан на сети?
Очевидно, есть больше проблем, чем выше. Первоначальный дизайн должен быть максимально гибким.
Итак, теперь давайте рассмотрим некоторые решения, касающиеся архитектуры.
Сервер:
1. Application Hosted WCF server: каждый раз, когда вам нужно управлять жизненным циклом сервера. Кроме того, это не масштабируется. Поэтому, если вы ищете масштабируемую архитектуру, вам нужно посмотреть больше.
2. Сервер IIS с поддержкой IIS: это может быть хорошей идеей наряду с некоторыми проблемами архитектуры в соответствии с вашими потребностями.
3. Веб-метод. Очевидно, что это произошло после WCF, но WCF все еще на своем месте. Таким образом, основное отличие заключается в том, в чем разница между веб-методом asp.net и службой wcf?
Теперь Клиент:
1. ASP.NET: это позволит использовать одно клиентское приложение для каждой платформы, очевидно, из-за HTML
2. WPF/WinForms: это будет сложно использовать в качестве клиента, поскольку вам нужно развернуть клиентское приложение на компьютере пользователя, и здесь возникает проблема безопасности данных. В прошлом вы можете напрямую использовать SSL или какой-либо другой способ отправки данных в браузер. Хотя в этом случае, если вы не используете WCF с HTTPS, и некоторые проприетарные данные переходят по проводам, это может быть проблемой.
Если вы ищете кросс-платформенное использование своего сервера, вы можете использовать HTML.
Вывод:
Вы можете использовать сервер как хостинг-службу WCF (либо в IIS, либо в автономном приложении), либо в качестве клиента ASP.NET.
-----------------------------
Если этого недостаточно, вы можете использовать ASP.NET как сервер, а затем браузер как клиент (нет необходимости создавать клиент).
----------------------------
Вы можете создать сервер как WCF как веб-методы и развернуть клиент на пользовательском компьютере.
----------------------------
WCF достаточно хорош, и он также может обрабатывать ваши собственные типы данных.
WCF - хорошая вещь, но я бы использовал ASP.Net Self-Hosted Web-API. Это более современно. И у вас есть полноценный интерфейс для отдыха, который гораздо более популярен.
Вот сравнение: WCF и ASP.NET Web API
Вот хорошая отправная точка: Self-Host ASP.NET Web API 1 (С#)