WCF, веб-службы или службы данных ADO.NET: что мне использовать? - PullRequest
6 голосов
/ 11 февраля 2010

Для проекта мне необходимо установить связь между базой данных, размещенной на веб-сервере, и несколькими клиентами в Интернете. Прочитав немного и посмотрев несколько вступительных видеороликов о возможных (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)? И почему вы бы порекомендовали это?

Заранее большое спасибо за любые советы!

1 Ответ

10 голосов
/ 11 февраля 2010

Ну нет. (2) веб-сервисы старого стиля ASP.NET выходят из эксплуатации - они старые, более не разрабатываются - их заменили WCF.

Таким образом, остаются варианты 1 (прямой WCF) и 3 (службы данных ADO.NET - недавно переименованные службы данных WCF).

Оба используют WCF в качестве своей базовой технологии, поэтому изучение и знание WCF является обязательным в обоих случаях.

С прямым WCF (Вариант 1) у вас есть больше опций - вы можете самостоятельно размещать, размещать свой сервис в IIS, использовать различные протоколы и привязки и так далее. Но с выбором приходит сложность - вам нужно учиться и знать все эти вещи - по крайней мере, до некоторой степени. Ваш клиент должен иметь возможность общаться с вами по протоколу SOAP - практически любой язык (конечно, .NET, Java, Ruby, PHP - вы его называете) может так или иначе говорить по SOAP.

Если вы в основном заинтересованы в предоставлении данных из баз данных внешним клиентам, я думаю, что WCF Data Services действительно является хорошим выбором. Он основан на REST, так что вы можете запустить службу данных WCF с помощью браузера и просто посмотреть, что произойдет. Он достаточно мощный и даже предлагает поддержку на стороне клиента LINQ - вы формулируете запрос LINQ, и это переводится в ваш соответствующий вызов REST для вашей службы данных.

С WCF Data Services вашему клиенту ничего не нужно, кроме стека HTTP - даже у iPhone есть это :-) Но с клиентом .NET все, конечно, лучше, удобнее и эффективнее.

Я бы сказал, сначала ознакомьтесь с Службой данных WCF и посмотрите, удовлетворяет ли это вашим потребностям, а если нет, покопайтесь глубже в WCF. Также ознакомьтесь с кратким описанием Службы данных WCF .

UPDATE:

Марк, я правильно тебя понял что WCF на сервере это выполняет требование? И ADO.NET (WCF) Данные услуги тоже?

Абсолютно. WCF (обычный или с Data Services) на стороне сервера NOT диктует клиенту каким-либо образом, в той или иной форме. Вы можете подключить iPhone к службе данных WCF, если вам действительно это нравится :-) WCF с самого начала был спроектирован так, чтобы быть очень функционально совместимым - фактически, это единственная платформа, которая реализует наибольшую часть индустрии WS- *. стандарты кроссплатформенной связи.

...