Для проекта мне необходимо установить связь между базой данных, размещенной на веб-сервере, и несколькими клиентами в Интернете.
Прочитав немного и посмотрев несколько вступительных видеороликов о возможных (Microsoft) технологиях, я понял, что у меня есть (как минимум) три варианта:
1) Windows Communication Foundation (WCF)
2) Веб-сервисы ASP.NET
3) Службы данных ADO.NET
Поскольку я не знаком ни с одной из этих трех технологий, я должен изучить (надеюсь, только) одну из них в глубину - и вопрос: какая из них?
Или, если быть более точным: какой из них для следующей задачи?
Данные должны быть загружены с клиента на сервер / базу данных, а также должны быть загружены некоторые другие данные. На стороне клиента это будет происходить не в интерактивном режиме пользователем, который работает в браузере, а как автоматический процесс на клиенте, который будет запускаться периодически (например, каждые 2 часа).
a) На стороне веб-сервера будет:
- База данных SQL Server
- .NET Framework 3.5 SP1
- Библиотека классов, представляющая структуру базы данных и смоделированная с помощью ADO.NET Entity Framework
- (Веб-приложение ASP.NET, которое будет представлять данные в базе данных в браузере: здесь я заключил это в квадратные скобки, потому что это веб-приложение на самом деле не имеет значения, так как упомянутые данные не загружаются и не запускаются GUI браузера.)
b) Клиентская сторона менее ясна и должна быть более гибкой. Здесь я должен различать два требования:
i) Приоритет Один (с точки зрения времени, которое у меня есть для разработки):
- Клиентская сторона находится под моим контролем, это означает: у меня есть любая ОС Windows на клиенте, я могу установить .NET Framework и принять решение о разработке службы Windows, консольного приложения, приложения Windows Forms или чего-либо еще. И у меня есть знания и доступ к библиотеке классов, упомянутой выше.
ii) Более низкий приоритет, но должен быть вариант будущего:
- Мне нужно предоставить любое описание интерфейса, которое позволит другим разработчикам создавать свои собственные приложения для загрузки / выгрузки данных.
- Клиенты, для которых будут разрабатываться другие, могут работать с любой ОС (Windows, UNIX, MacOS и т. Д.). Также они должны быть максимально свободны в выборе своего предпочтительного языка программирования.
Из-за последнего пункта, заставляющего разработчиков использовать .NET Framework на стороне клиента, это не вариант. Связь на стороне клиента должна быть любой «стандартной» технологией, доступной на разных платформах и языках. Во время моего небольшого исследования я читал такие термины, как «SOAP», «REST» или «AtomPub», и они, похоже, являются своего рода стандартным протоколом или коммуникационной технологией (а не запатентованным изобретением Microsoft). Но я не уверен и не знаю, какая технология является «современной», имеет «лучшее будущее», является наиболее распространенной и общеизвестной, наиболее мощной или простой в использовании (с точки зрения других возможных разработчики! Поэтому вопрос в том, что я должен поддержать, чтобы сделать большинство разработчиков на стороне клиента счастливыми).
Еще один момент: безопасность важна! Загрузка / выгрузка данных должна быть разрешена только отдельным лицам. Не должно быть возможности использовать или исследовать интерфейс без соответствующих учетных данных.
Какую технологию лучше всего использовать сейчас? (1), (2) или (3)? И почему вы бы порекомендовали это?
Заранее большое спасибо за любые советы!