2010-02-11 2 views
6

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

1) Windows Communication Foundation (WCF)
2) ASP. NET Веб-службы
3) ADO.NET Data services

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

Или, если быть точнее: какой из следующих задач?

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

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

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

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

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

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

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

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

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

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

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

Большое спасибо за любой совет!

+0

WCF может общаться практически с ** любой ** клиентской стороной - Ruby на Mac, iPhones, .NET, Java - вы называете это.Он поддерживает больше отраслевых стандартов, чем что-либо еще .... –

ответ

10

Ну, нет. (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 вашему клиенту не нужно ничего, кроме стека HTTP - даже у iPhone есть :-) Но с .NET-клиентом все, конечно, приятнее и удобнее и эффективнее.

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

UPDATE:

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

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

+0

«Ну, нет. (2) веб-сервисы старого стиля ASP.NET на пороге - он старый, уже не разрабатываемый - он был заменен WCF». Как холодный вкус, марк? лол. И вы можете просмотреть заявленные требования. –

+0

+1 потому что я дорка. –

+0

Интересно, я не знал, что вы действительно можете написать Linq против Data Services. Могут ли они соединяться, подзапросы и т. Д., Или это в основном ограничено тем, что вы ожидаете от службы REST, простых запросов к одному типу объекта? – Aaronaught