С чего начать веб-сервис REST в C # или ASP.Net - PullRequest
18 голосов
/ 21 июля 2009

Я думаю начать писать некоторые веб-сервисы REST как способ предоставления данных. Я предполагаю, что когда мои веб-службы REST станут доступны, некоторые из моих веб-приложений и консольных приложений смогут использовать веб-службу REST в качестве службы данных для получения, добавления, обновления и удаления данных в базах данных. Кроме того, я хотел бы добавить функцию аутентификации для идентификации любого запроса.

Мой вопрос: с чего мне начать? Я видел Microsoft ADO.Net Data Services . Не уверен, что это хорошее начало? Есть ли примеры?

Ответы [ 5 ]

14 голосов
/ 21 июля 2009

Проверьте REST на сайте MSF WCF и стартовый комплект . Хорошая статья здесь тоже.

10 голосов
/ 21 декабря 2010

Вы также можете попробовать servicestack.net Кроссплатформенная, высокопроизводительная платформа веб-сервисов с открытым исходным кодом, которая позволяет разрабатывать веб-сервисы с использованием кода в первую очередь, строго типизированные DTO, которые автоматически (без какой-либо конфигурации) будут сразу же доступны на различных конечных точках (например, XML, JSON, JSV, SOAP 1.1 / 1.2).

REST, RPC и SOAP из коробки

Кроме того, те же самые веб-службы можно сделать доступными через любой URL-адрес ReST по вашему выбору, где предпочитаемый формат сериализации может быть указан вашим клиентом REST, т.е.

  • Использование HTTP Принять: заголовок
  • Добавление предпочтительного формата к строке запроса, например, ? Format = xml

См. Пример веб-службы Ничего, кроме REST! ​​ о том, как разработать полноценное приложение REST-ful Ajax CRUD, содержащее только 1 страницу jQuery и 1 страницу C # .

Хорошее начало для примера - пример Hello World , чтобы узнать, как легко добавить веб-службы ServiceStack в любое существующее веб-приложение ASP.NET.

Performance

Для повышения производительности ServiceStack представляет собой отличный сервер Ajax, поскольку он поставляется с самым быстрым сериализатором JSON для .NET (> в 3 раза быстрее, чем другие сериализаторы JSON).

Оформить заказ это живое Ajax-приложение на вкус (живая демонстрация, размещенная на Linux / Nginx / MONO).

Пример простого северного ветра

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

    public class CustomersService : RestServiceBase<Customers>
    {
            public IDbConnectionFactory DbFactory { get; set; }

            public override object OnGet(Customers request)
            {
              return new CustomersResponse { Customers = DbFactory.Exec(dbCmd =>
                    dbCmd.Select<Customer>()) 
            };
    }

Без других настроек вы можете теперь вызвать вышеупомянутый веб-сервис REST-полностью возвращая все:

Доступ к веб-сервисам на клиенте

Вы можете вызвать вышеупомянутый веб-сервис повторно, используя те же DTO, с которыми были определены ваши веб-сервисы (т. Е. Код не требуется), используя предпочитаемый вами универсальный ServiceClient (т.е. Json, Xml и т. Д.). Это позволяет вам вызывать ваши веб-сервисы, используя строго типизированный API и всего одну строку кода:

Пример синхронизации C #

IServiceClient client = new JsonServiceClient("http://host/service");
var customers = client.Send<CustomersResponse>(new Customers());

И поскольку ваши веб-службы также являются службами REST, они бесперебойно работают с JavaScript-клиентами ajax, например:

Использование jQuery

$.getJSON("http://host/service", function(r) { alert(r.Customers.length); });
7 голосов
/ 02 октября 2012

ASP.NET Web API теперь является платформой Microsoft для создания служб RESTful.

http://www.asp.net/web-api

4 голосов
/ 21 июля 2009

Если вы новичок в REST в мире .net, тогда начните с OpenRasta . Другие решения Microsoft могут выполнить REST, если вы усердно работаете над этим, но они помогут вам выбрать путь, по которому вы, скорее всего, получите POD (простые старые данные) по HTTP. Это не то, что REST все о. Если это все, что вы хотите, то это тоже круто, но это не ОТДЫХ.

1 голос
/ 21 июля 2009
  • Если вы собираетесь на WCF, отличный стартовый набор для WCF REST, на который ссылается JP.
  • Омар Аль-Забир предоставляет довольно хороший пример использования ASP.NET MVC для предоставления RESTful-сервисов, свободно владеющих как XML, так и JSON
  • Вы также можете выбрать предложенный маршрут служб данных ADO.NET. Эти сервисы построены поверх стека WCF.

Я никогда не сталкивался с каким-либо действительно хорошим руководством о том, как выбирать между этими вариантами. В ASP.NET MVC вы берете на себя большую часть водопроводной нагрузки, но также имеете максимальный контроль. Прямой RESTful WCF - это золотая середина, хотя WCF стремится к тому, чтобы все было по-своему. Службы данных ADO.NET довольно волшебны, и их недостаток заключается в том, чтобы полностью приобрести определенный подход к созданию этих служб и потерять большую гибкость.

Есть пара хороших книг, которые вы можете прочитать на тему сервисов RESTful с .NET. И O'Reilly, и Microsoft Press недавно выпустили книги на эту тему. Возможно, самый важный совет, который я могу вам дать, - это использовать и понять несколько открытых сервисов RESTful (например, Twitter, Amazon, Flickr), чтобы понять проектные решения, которые были приняты при создании сервисов. Предоставление пользователя, механизм аутентификации и поддерживаемые типы контента (например, JSON, XML, RSS / ATOM) - это некоторые из решений, которые вы можете наблюдать в действии, чтобы помочь вам на пути к созданию API службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...