В настоящее время я нахожусь в стадии планирования для довольно полной переписки одного из наших основных (коммерческих) предложений программного обеспечения, и я ищу несколько советов.
Наше текущее программное обеспечение представляет собой пакет управления бизнесомнаписанный на Winforms (первоначально в .NET 2.0, но до сих пор переходивший на 4.0), который напрямую связывается с бэкэндом SQL Server.Существует также очень простой веб-сайт ASP.NET Webforms, который предоставляет некоторые основные функции для пользователей в дороге.Каждый наш клиент должен представить этот сайт (и несколько существующих веб-сервисов ASMX) миру, чтобы использовать его, и мы начинаем перерастать эту настройку.
По мере того, как мы переписываем этоМы решили, что было бы лучше, если бы мы сделали пакет более доступным извне, а также предоставили нашим клиентам возможность размещения их данных (мы не определились с поставщиком), вместо того, чтобы требоватьдля размещения на них SQL Server, служб отчетов SQL Server и IIS.
В настоящее время наш план заключается в том, чтобы переписать существующее приложение Winforms с использованием WPF, а также предоставить более богатый опыт работы с клиентами через Интернет.,Однако в дальнейшем наши клиенты проявили интерес к использованию планшетов, поэтому нам также потребуется поддержка собственных приложений iOS и Android в качестве клиентов.
Сочетание нашего желания предложитьхостинг сайтов (без использования архитектуры VPN) и поддержка клиентов на платформах, находящихся за пределами экосистемы .NET, привели нас к выводу, что вся наша клиент-серверная связь должна осуществляться через наш собственный сервис, а не с использованием SQLКлиентский сервер (поскольку мы не хотим показывать это миру, а драйверы SQL Server, насколько мне известно, для некоторых из этих платформ не существуют).
Прямо сейчас, наши варианты, как я их вижу, следующие::
- Напишите полностью настраиваемый сервис, использующий сокеты TCP, и запишите все с нуля (аутентификация, управление сеансами, сериализация и т. Д.).Это то, что я знаю больше всего о , но я предполагаю, что есть что-то лучше.
- Используйте сервис WCF для транспорта и либо сам позаботьтесь об аутентификации и / или управлении сеансом,или используйте что-то вроде долговременных сервисов для управления сеансами
Мой основной вопрос таков:
Какой вариант архитектуры будет наиболее подходящим, а также специфические функции, такие как ASP.NETпроверка подлинности или службы Durable Services для предоставления постоянной и постоянной службы клиентам WPF, ASP.NET, iOS и Android?