Вам определенно понадобится слой веб-службы, если вы собираетесь получать к нему доступ через нативный клиент через Интернет.
Очевидно, что есть много подходов и решений для достижения этой цели, однако я считаю, что правильное архитектурное руководство, которому нужно следовать, - это иметь четко определенный Сервисный интерфейс на Сервере, к которому обращается Шлюз на клиенте. Затем вы будете использовать POCO DTO (обычный старый DTO) для связи между конечными точками. Основная цель DTO состоит в том, чтобы обеспечить оптимальное представление вашего веб-сервиса по проводам, а также позволяет вам избежать необходимости иметь дело с сериализацией, поскольку она должна прозрачно обрабатываться библиотеками Client Gateway и Service Interface.
Это действительно зависит от того, насколько велик ваш проект / приложение, зависит от того, хотите ли вы приложить усилия для сопоставления вашего DTO с моделями доменов клиента и сервера. Для больших приложений общий подход заключается в том, чтобы на клиенте отображать ваши DTO на ваши модели пользовательского интерфейса и привязывать ваши представления пользовательского интерфейса к этому. На сервере вы сопоставите свои DTO с моделями вашего домена , и в зависимости от реализации службы сохраните это.
REST - это архитектурный шаблон, который для небольших проектов я считаю дополнительными накладными расходами / сложностью, поскольку он не настолько хорош для программирования, как веб-сервисы RPC / Document Centric. Кратко говоря, общая идея REST - развить ваши сервисы вокруг ресурсов . Эти ресурсы могут иметь несколько представлений, которые должна предоставлять ваша веб-служба, в зависимости от предпочтительного типа контента, указанного вашим HTTP-клиентом (т. Е. В заголовке HTTP ACCEPT). Канонические URL-адреса для ваших веб-сервисов также должны быть логически сформированы (например, / customer / reports / 1 в отличие от / GetCustomerReports? Id = 1), и ваши веб-сервисы в идеале должны возвращать список «допустимых состояний, в которые ваш клиент может войти» с каждым ответ. По сути, REST - это хороший подход, способствующий слабосвязанной архитектуре и повторному использованию, однако он требует больше усилий, чтобы «придерживаться», чем стандартные веб-сервисы на основе RPC / Document, преимущества которых вряд ли будут видны в небольших проектах.
Если вы все еще оцениваете, какую технологию веб-службы вам следует использовать, вы можете рассмотреть возможность использования моей веб-платформы с открытым исходным кодом , поскольку она оптимизирована для этой задачи. DTO, которые вы используете для определения интерфейса веб-сервисов, могут быть повторно использованы на клиенте (что обычно не так), чтобы предоставить строго типизированный интерфейс, где вся сериализация выполняется за вас. Это также дает дополнительное преимущество, заключающееся в том, что каждый создаваемый вами веб-сервис автоматически вызывается веб-сервисами SOAP 1.1 / 1.2, XML и JSON без какой-либо дополнительной настройки, поэтому вы можете выбрать наиболее оптимальную конечную точку для каждого клиентского сценария, то есть Native Desktop или Веб-приложение и т. Д.