WCF сервис для получения json и добавления записи в базу данных

Мне нужно создать сервис, который будет размещен в IIS. Этот сервис будет иметь функцию с одним параметром типа string. Эта функция будет получать данные Json. Клиент, который будет использовать этот сервис, должен иметь доступ к этому методу сервиса с помощью URL:

http://[local]host/Myservice/mymethod

Я новичок в сфере услуг. Я использую asp.net 4.0 и VS 2010. Мои вопросы:

  1. Должен ли я создать службу SOAP или службу WCF (я предполагаю, что WCF не может быть SOAP)

  2. Если мне нужно использовать службу WCF, то какой тип службы WCF? Я вижу, что есть несколько типов WCF-сервисов, таких как REST-сервис, Data-сервис (и, возможно, сервис JSON).

  3. Я использовал этот шаблон для создания сервиса WCF. Хорошо ли это использовать: http://visualstudiogallery.msdn.microsoft.com/fbc7e5c1-a0d2-41bd-9d7b-e54c845394cd потому что мне не нужно создавать контракты данных и т. Д., Или это может быть статья, где http://www.dotnetspark.com/kb/3189-create-rest-service-wcf-40-step-by-step.aspx потому что мне не нужно изменять web.config и изменять конечные точки вручную?

  4. Этот сервисный метод затем проанализирует json с помощью json.net и получит некоторые значения, а затем добавит их в базу данных и отправит электронное письмо. Значит ли это, что мне нужны службы данных WCF?

Пожалуйста, предложите.

С уважением, Асиф Хамид

1 ответ

Ну, во-первых, WCF очень силен в области SOAP, фактически он поддерживал привязки на основе SOAP только в начале.

SOAP является серьезным конкурентом, если вы хотите иметь возможность "автоматически обнаруживать" ваш сервис и его методы. SOAP имеет хорошо отлаженную систему метаданных (использующую стандарты WSDL и XSD), поэтому клиент может просто указать на местоположение службы и получить полное описание того, что эта служба может делать, какие параметры она ожидает и т. Д. Также: SOAP основан на метафоре "у меня есть сервис с методами x", поэтому вы будете использовать методы сервиса и их параметры в качестве основных элементов для разработки.

SOAP, с другой стороны, немного менее широко доступен - он доступен на большинстве настольных систем, но не на большинстве мобильных устройств, таких как телефоны и планшеты.

Вот где REST сияет - поскольку он использует только HTTP, он доступен везде, и, таким образом, вы можете охватить больше клиентов. Кроме того, поскольку вы специально используете JSON, и ваш сервис выглядит довольно упрощенным (всего один вызов с одним параметром), это может лучше подходить для REST (WCF). webHttpBinding или сервис, основанный на веб-API ASP.NET).

Однако обратите внимание: REST основывается на ресурсах - например, вы не говорите о методах и параметрах метода в REST - вы манипулируете ресурсами. Таким образом, вы будете использовать различные HTTP-глаголы (GET, PUT, POST, DELETE), а URI, о котором вы говорите, представляет ресурс (каким бы он ни был).

Так что, если вы можете смоделировать вашу систему так, чтобы она была похожа на то, что я размещаю новый ресурс (например, новую запись в базе данных), тогда вы можете использовать REST для этого. Чтобы добавить новую строку в вашу базу данных, вы будете делать POST вызовите URI, который представляет вашу коллекцию ресурсов, например

POST  /host/app/MyResourceCollection

и предоставьте необходимые данные для фактического создания новой строки в теле сообщения вашего HTTP-вызова.

Так что ваши требования немного противоречат друг другу:

  • идея использования сервисного метода кажется более подходящей для SOAP
  • идея использования JSON больше подходит для REST

Я бы порекомендовал вам прочитать эту превосходную статью MSDN "Введение в службы RESTful с WCF " Джона Фландерса, чтобы лучше понять, что такое REST и как его использовать. Посмотрите, соответствует ли он вашим потребностям, и если да, то иди с ним, попробуй, испытай, как это работает.

Другие вопросы по тегам