WCF, веб-службы или ADO.NET службы данных: что я должен использовать?

для проекта я должен реализовать связь между базой данных, размещенной на веб-сервере, и несколькими клиентами в интернете. Прочитав немного и просмотрев несколько вводных видеороликов о возможных (Microsoft) технологиях, я понял, что у меня есть (по крайней мере) три варианта:

1) Windows Communication Foundation (WCF)
2) ASP.NET веб-службы
3) услуги передачи данных ADO.NET

потому что я не знаком ни с одним из них три технологии, которые я должен изучить (надеюсь, только), одна из них в глубине - и вопрос: какая из них?

или точнее: что для следующих задач?

данные должны быть загружены с клиента на сервер / базу данных, а также некоторые другие данные должны быть загружены. На стороне клиента это произойдет не интерактивно пользователем, который работает в браузере, а как автоматический процесс на клиенте, который будет выполняться периодически (каждые 2 часа для экземпляр.)

a) на стороне веб-сервера будет:

  • база данных SQL Server
  • .Framework 3.5 с пакетом обновления 1
  • библиотека классов, представляющая структуру базы данных и моделируемая с помощью ADO.NET Entity Framework
  • (An ASP.NET веб-приложение, которое представит данные в базе данных в браузере: я помещаю это в скобки здесь, потому что это веб-приложение действительно не имеет значения, так как упомянутые данные не будут загружены срабатывает через GUI-браузера.)

b) сторона клиента менее ясна и должна быть более гибкой. Здесь я должен различать два требования:

i) приоритет один (с точки зрения времени, которое у меня есть для разработки):

  • клиентская сторона находится под моим контролем, это означает: у меня есть любая ОС Windows на клиенте, я могу установить .NET Framework, и я могу решить разработать службу Windows, консольное приложение, Windows Forms заявление или что-то еще. И у меня есть знания и доступ к библиотеке классов, упомянутых выше.

ii) более низкий приоритет, но должен быть будущим вариантом:

  • мне нужно выставить любое описание интерфейса, которое позволяет другим разработчикам создавать свои собственные приложения для загрузки/загрузки данных.
  • клиенты, для которых будут разрабатываться другие, могут работать с любой ОС (Windows, UNIX, MacOS и многое другое). Также они будут свободны как можно выбрать собственный предпочтительный язык программирования.

из-за последнего момента принуждение разработчиков использовать .NET Framework на стороне клиента не является опцией. Коммуникация на стороне клиента должна быть любой "стандартной" технологией, доступной с различных платформ и языков. Я читал такие термины, как "мыло", "отдых" или "AtomPub" во время моего небольшого исследования, и они кажутся своего рода стандартным протоколом или коммуникационной технологией (а не проприетарной Microsoft изобретение.) Но я не уверен и не знаю, какая технология "актуальна", имеет" лучшее будущее", наиболее распространена и хорошо известна, является самой мощной или простой в использовании (с точки зрения других возможных разработчиков! Поэтому вопрос в том, что я должен поддерживать, чтобы сделать большинство разработчиков на стороне клиента счастливыми).

последний момент: безопасность важна! Загрузка / выгрузка данных должна быть ограничена специальными лицами. Не должно быть возможности использовать или исследовать интерфейс без соответствующих учетных данных.

какую технологию лучше всего использовать сейчас? (1), (2) или (3)? И почему вы это рекомендуете?

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

1 ответов


Ну, нет. (2) Старый стиль ASP.NET webservices на своем пути - он старый, больше не разрабатывается - он был заменен WCF.

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

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

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

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

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

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

обновление:

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

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