Нажмите, если вам нравится проект. Запрос на извлечение высоко ценится. Следуйте за мной @kansiris87, чтобы получать технические обновления.
| Нет. | Вопросы |
|---|---|
| 1 | [Что такое ОТДЫХ?](#Что такое ОТДЫХ?) |
| 2 | [Объяснить принцип REST?](#Объяснить принцип REST?) |
| 3 | [В чем разница между REST и SOAP?](#В чем разница между REST и SOAP?) |
| 4 | [Что такое ASP.NET WEB API?](#Что такое ASP.NET WEB API?) |
| 5 | [Почему выбирают ASP.NET WEB API?](#Почему выбирают ASP.NET WEB API?) |
| 6 | [В чем разница между WCF и ASP.NET WEB API, а также WCF REST и веб-службой?](#В чем разница между WCF и ASP.NET WEB API, а также WCF REST и веб-службой?) |
| 7 | [Какой выбрать между WCF и WEB API?](#Какой выбрать между WCF и WEB API?) |
| 8 | [В чем разница между ASP.NET MVC и ASP.NET WEB API?](#HВ чем разница между ASP.NET MVC и ASP.NET WEB API?) |
| 9 | [Можете ли вы вернуть просмотр с помощью метода WEB API?](#Можете ли вы вернуть просмотр с помощью метода WEB API?) |
| 10 | [Можете ли вы изменить имя действия WEB API, например ASP.NET MVC?](#Можете ли вы изменить имя действия WEB API, например ASP.NET MVC?) |
|1 | [Можете ли вы ограничить вызов метода действия WEB API только HTTP GET, POST, PUT или DELETE?](#Можете ли вы ограничить вызов метода действия WEB API только HTTP GET, POST, PUT или DELETE?)| |2 | [Как вызвать WEB API в ASP.NET MVC?](#Как вызвать WEB API в ASP.NET MVC?)| |3 | [Чем маршрутизация API ASP.NET отличается от маршрутизации ASP.NET MVC?](#Чем маршрутизация API ASP.NET отличается от маршрутизации ASP.NET MVC?)| |4 | [Как включить маршрутизацию атрибутов в ASP.NET WEB API2?](#Как включить маршрутизацию атрибутов в ASP.NET WEB API2?)| |5 | [Как определить маршрутизацию атрибутов в ASP.NET WEB API2?](#Как определить маршрутизацию атрибутов в ASP.NET WEB API2?)|
REST означает передачу представительского состояния. Это протокол обмена данными в распределенной среде. REST — это архитектурный стиль, в котором каждая служба рассматривается как ресурс и осуществляется доступ к данным с помощью методов протокола HTTP, таких как GET, POST, PUT и DELETE.
Архитектуры в стиле REST состоят из клиентов и серверов. Клиенты инициируют запросы к серверам, которые обрабатывают эти запросы и возвращают ответы на основе этих запросов. Эти запросы и ответы строятся вокруг передачи представлений этих ресурсов.
REST — это набор принципов, определяющих, как следует использовать веб-стандарты, такие как HTTP и URI. Ниже приведены пять важных принципов REST:
Адресуемые ресурсы. Каждый ресурс должен быть идентифицирован URI (уникальным идентификатором).
Простые и унифицированные интерфейсы. REST основан на протоколе HTTP, поэтому для выполнения действий используйте методы HTTP GET, POST, PUT и DELETE. Это делает REST простым и единообразным.
Ориентация на представление — представление ресурсов обменивается. GET используется для возврата представления, а PUT, POST передает представление на сервер, чтобы базовые ресурсы могли измениться. Представление может быть во многих форматах, таких как XML, JSON и т. д.
Общайтесь без сохранения состояния. Приложение может иметь состояние, но на сервере не хранятся данные сеанса клиента. Любые данные, специфичные для сеанса, должны храниться и поддерживаться клиентом и передаваться на сервер с каждым запросом по мере необходимости.
Кэшируемость — клиенты должны иметь возможность кэшировать ответы для дальнейшего использования.
Разница между REST и SOAP приведена ниже: SOAP REST SOAP означает простой протокол доступа к объектам. REST означает REpresentational State Transfer. Это протокол на основе XML, построенный на основе HTTP или иногда TCP/IP, SMTP. REST — это не протокол, а архитектурный стиль, основанный на ресурсах. SOAP имеет спецификации как для реализации, так и для реализации с сохранением состояния. REST полностью не имеет состояния. SOAP применяет формат сообщения как XML. REST не применяет формат сообщения как XML или JSON. SOAP имеет определенную стандартную спецификацию. Например, WS-Security — это спецификация для реализации безопасности. Он не имеет определенных стандартных характеристик. Сообщение SOAP состоит из конверта, который включает заголовки SOAP и тело для хранения фактической информации, которую вы хотите отправить. REST использует встроенные заголовки HTTP (с различными типами носителей) для переноса метаинформации и использует команды GET, POST, PUT и DELETE для выполнения операций CRUD. SOAP использует интерфейсы и именованные операции для предоставления доступа к вашей службе. REST использует URI и такие методы, как (GET, PUT, POST, DELETE), для предоставления ресурсов. Производительность медленная по сравнению с REST. REST работает быстрее по сравнению с SOAP.
ASP.NET WEB API — это платформа для создания HTTP-сервисов, которые могут использоваться широким кругом клиентов, включая браузеры, мобильные телефоны, iPhone и планшеты. Он очень похож на ASP.NET MVC, поскольку содержит такие функции MVC, как маршрутизация, контроллеры, результаты действий, фильтр, привязки моделей, контейнер IOC или внедрение зависимостей. Но это не часть MVC Framework. Он является частью базовой платформы ASP.NET и может использоваться с MVC и другими типами веб-приложений, такими как веб-формы ASP.NET. Его также можно использовать как автономное приложение веб-служб. Возможности ASP.NET WEB API 1. Он поддерживает действия CRUD на основе соглашений, поскольку работает с HTTP-глаголами GET, POST, PUT и DELETE. 2. Ответы имеют заголовок Accept и код состояния HTTP. 3. Ответы форматируются с помощью MediaTypeFormatter веб-API в JSON, XML или любой другой формат, который вы хотите добавить в качестве MediaTypeFormatter. 4. Он может принимать и генерировать контент, который может не быть объектно-ориентированным, например изображения, файлы PDF и т. д. 5. Он имеет автоматическую поддержку OData. Следовательно, поместив новый атрибут [Queryable] в метод контроллера, который возвращает IQueryable, клиенты могут использовать этот метод для составления запросов OData. 6. Его можно разместить в приложении или в IIS. 7. Он также поддерживает функции MVC, такие как маршрутизация, контроллеры, результаты действий, фильтр, привязки моделей, контейнер IOC или внедрение зависимостей, что делает его более простым и надежным.
Сегодня веб-приложения недостаточно для охвата клиентов. Люди очень умны, они используют iPhone, мобильные телефоны, планшеты и т. д. устройства в своей повседневной жизни. На этих устройствах также имеется множество приложений, облегчающих жизнь. На самом деле, мы движемся от Интернета к миру приложений.
Итак, если вы хотите быстро и просто предоставлять данные своего сервиса браузерам, а также приложениям всех этих современных устройств, у вас должен быть API, совместимый с браузерами и всеми этими устройствами.
Например, Twitter, Facebook и Google API для веб-приложений и телефонных приложений.
WEB API — это отличная платформа для предоставления доступа к вашим данным и сервисам различным устройствам. Более того, WEB API с открытым исходным кодом является идеальной платформой для создания REST-сервисов на базе .NET Framework. В отличие от службы WCF Rest, она использует все возможности HTTP (например, URI, заголовки запросов/ответов, кэширование, управление версиями, различные форматы контента), и вам не нужно определять какие-либо дополнительные параметры конфигурации для разных устройств, в отличие от службы WCF Rest.
Если нам нужен веб-сервис и не нужен SOAP, лучшим выбором будет ASP.NET WEB API.
Он используется для создания простых HTTP-служб, не основанных на SOAP, поверх существующего конвейера сообщений WCF.
У него нет утомительной и обширной настройки, такой как служба WCF REST.
Простое создание сервиса с помощью WEB API. При использовании служб WCF REST создание служб затруднено.
Он основан только на HTTP и его легко определить, предоставить и использовать с помощью REST.
Это легкая архитектура, подходящая для устройств с ограниченной пропускной способностью, таких как смартфоны.
Это открытый исходный код.
В .NET Framework имеется ряд технологий, которые позволяют создавать HTTP-сервисы, такие как веб-сервис, WCF, а теперь и WEB API. Между этими четырьмя есть следующие различия:
Веб-сервис
Он основан на SOAP и возвращает данные в форме XML.
Он поддерживает только протокол HTTP.
Это не открытый исходный код, но его может использовать любой клиент, понимающий XML.
Он может быть размещен только на IIS.
WCF
Он также основан на SOAP и возвращает данные в форме XML.
Это развитие веб-службы (ASMX) и поддержка различных протоколов, таких как TCP, HTTP, HTTPS, именованные каналы, MSMQ.
Основная проблема WCF — это утомительная и обширная настройка.
Это не открытый исходный код, но его может использовать любой клиент, понимающий XML.
Его можно разместить в приложении, в IIS или с помощью службы Windows.
WCF Отдых
Чтобы использовать WCF в качестве службы WCF Rest, вам необходимо включить webHttpBindings.
Он поддерживает команды HTTP GET и POST с помощью атрибутов [WebGet] и [WebInvoke] соответственно.
Чтобы включить другие команды HTTP, вам необходимо выполнить некоторую настройку в IIS, чтобы принять запрос этого конкретного глагола в файлах .svc.
Передача данных через параметры с помощью WebGet требует настройки. Необходимо указать UriTemplate.
Он поддерживает форматы данных XML, JSON и ATOM.
ВЕБ-API
Это новая платформа для простого и простого создания HTTP-сервисов.
WEB API — это идеальная платформа с открытым исходным кодом для создания REST-сервисов на базе .NET Framework.
В отличие от службы WCF Rest, он использует все функции HTTP (например, URI, заголовки запросов/ответов, кеширование, управление версиями, различные форматы контента).
Он также поддерживает функции MVC, такие как маршрутизация, контроллеры, результаты действий, фильтр, привязка моделей, контейнер IOC или внедрение зависимостей, модульное тестирование, что делает его более простым и надежным.
Его можно разместить в приложении или в IIS.
Это легкая архитектура, подходящая для устройств с ограниченной пропускной способностью, таких как смартфоны.
Ответы форматируются с помощью MediaTypeFormatter веб-API в JSON, XML или любой другой формат, который вы хотите добавить в качестве MediaTypeFormatter.
Следующие пункты помогут вам выбрать между WCF и WEB API:
Выберите WCF, если вы хотите создать службу, которая должна поддерживать специальные сценарии, такие как односторонний обмен сообщениями, очереди сообщений, дуплексная связь и т. д.
Выберите WCF, если вы хотите создать службу, которая может использовать быстрые транспортные каналы, когда они доступны, например TCP, именованные каналы или, возможно, даже UDP (в WCF 4.5), а также вы хотите поддерживать HTTP, когда все другие транспортные каналы недоступны.
Выбирайте WEB API, если вы хотите создавать ресурсо-ориентированные службы через HTTP, которые могут использовать все функции HTTP (например, URI, заголовки запросов/ответов, кэширование, управление версиями, различные форматы контента).
Выбирайте WEB API, если хотите предоставить свой сервис широкому кругу клиентов, включая браузеры, мобильные телефоны, iPhone и планшеты.
Существуют следующие различия между ASP.NET MVC и WEB API:
ASP.NET MVC используется для создания веб-приложений, которые возвращают как представления, так и данные, но ASP.NET WEB API используется для создания полноценных HTTP-сервисов простым и простым способом, который возвращает только данные, а не просмотр.
WEB API помогает создавать REST-сервисы на базе .NET Framework, а также поддерживает согласование содержимого (речь идет о выборе наилучшего формата ответа, который может быть приемлем для клиента. Это могут быть JSON, XML, ATOM или другие форматированные данные). ), самостоятельный хостинг, которого нет в MVC.
WEB API также заботится о возврате данных в определенном формате, таком как JSON, XML или любом другом, на основе заголовка Accept в запросе, и вы не беспокоитесь об этом. MVC возвращает данные только в формате JSON, используя JsonResult.
В WEB API запрос сопоставляется с действиями на основе HTTP-глаголов, но в MVC он сопоставляется с именем действия.
ASP.NET WEB API — это новая платформа, являющаяся частью основной платформы ASP.NET. Привязка модели, фильтры, маршрутизация и другие функции MVC, существующие в WEB API, отличаются от MVC и существуют в новой сборке System.Web.Http. В MVC эти функции существуют в System.Web.Mvc. Следовательно, WEB API также можно использовать с ASP.NET и в качестве автономного уровня обслуживания.
Вы можете объединить WEB API и контроллер MVC в одном проекте для обработки расширенных запросов AJAX, которые могут возвращать данные в формате JSON, XML или любом другом формате, и создания полноценного HTTP-сервиса. Обычно это называется самостоятельным размещением WEB API.
Если вы смешали контроллер MVC и WEB API и хотите реализовать авторизацию, вам необходимо создать два фильтра: один для MVC, а другой для WEB API, поскольку оба они разные.
Более того, WEB API представляет собой легкую архитектуру и, кроме веб-приложения, его также можно использовать с приложениями для смартфонов.
В отличие от ASP.NET MVC, WEB API используется для возврата только данных. Данные могут быть строковыми, JSON, XML, текстовыми и т. д. Они не могут возвращать представление, как ASP.NET MVC.
Как и в случае с ASP.NET MVC, вы также можете изменить имя действия WEB API, используя атрибут ActionName, как показано ниже:
[HttpGet] [ActionName("GetProducts")] public IEnumerable ProductList() { return db.Products.AsEnumerable(); }
Как и в случае с ASP.NET MVC, вы также можете ограничить вызов метода действия WEB API только определенным HTTP-запросом, применив атрибут HttpGet, HttpPost, HttpPut или HttpDelete.
Если вы хотите ограничить метод действия только для запроса HTTP Get, украсьте его атрибутом селектора метода действия HttpGet, как показано ниже:
[HttpGet] public IEnumerable ProductList() { return db.Products.AsEnumerable(); }
ASP.NET WEB API можно вызвать с помощью HttpClient и адреса WEB API, как указано ниже:
общественный класс ProductController: Контроллер {HttpClient Client = new HttpClient (); Uri BaseAddress = новый Uri("http://localhost:131/"); общественный индекс ActionResult () {Client.BaseAddress = BaseAddress; Ответ HttpResponseMessage = Client.GetAsync("productservice/GetProducts").Result; если (response.IsSuccessStatusCode) {var data = response.Content.ReadAsAsync<IEnumerable>().Result; вернуть представление (данные); } Вернуть Просмотр(); } }
ASP.NET MVC и ASP.NET WEB API используют маршрутизацию для отслеживания входящего запроса, и для работы определен по крайней мере один маршрут. Разница между этими двумя маршрутизациями приведена ниже:
В шаблоне маршрута WEB API параметр {action} не является обязательным, но вы можете включить параметр {action}. В ASP.NET MVC параметр {action} является обязательным.
Методы действий, определенные в контроллере API, должны либо иметь атрибут глаголов действия HTTP (GET, POST, PUT, DELETE), либо иметь один из глаголов действия HTTP в качестве префикса для имени методов действий. В ASP.NET MVC по умолчанию метод действия может вызываться с помощью команд HTTP GET или POST, а для использования других команд HTTP необходимо определить их как атрибут.
В отличие от ASP.NET MVC, веб-API может получать в качестве параметра только один сложный тип.
Включить маршрутизацию атрибутов в вашем ASP.NET WEB API2 просто: просто добавьте вызов метода MapHttpAttributeRoutes() с помощью метода Register() файла WebApiConfig.cs.
public static class WebApiConfig { public static void Register(HttpConfiguration config) { //включение маршрутизации атрибутов config.MapHttpAttributeRoutes(); } }
Вы также можете комбинировать маршрутизацию атрибутов с маршрутизацией на основе соглашений.
общедоступный статический класс WebApiConfig { public static void Register (конфигурация HttpConfiguration) {
//включение маршрутизации атрибутов config.MapHttpAttributeRoutes(); // Маршрутизация на основе соглашений. config.Routes.MapHttpRoute(имя: «DefaultApi»,
RouteTemplate: "api/{controller}/{id}", значения по умолчанию: новый { id = RouteParameter.Optional });
} }
Как и в ASP.NET MVC5, вы также можете определить маршрутизацию атрибутов в WEB API2 на уровне контроллера и уровне действий, как показано ниже:
[RoutePrefix("Service/User")] public class UserController : ApiController { //GET маршрут: api/User public IEnumerable Get() { return new string[] { "value1", "value2" };
}
[Route("{id}")] //GET маршрут: Service/User/1 public string Get(int id) { return "value"; }
[Route("")] //POST-маршрут: Service/User/ public void Post([FromBody]string value) { } }
• Маршрутизация уровня действия. Вы можете определить маршруты на уровне действия, которые применяются к определенному действию в контроллере.
публичный класс UserController : ApiController { //GET маршрут: api/User
public IEnumerable Get() { return new string[] { "value1", "value2" };
}
[Route("Service/User/{id}")] //GET маршрут: Service/User/1 public string Get(int id) { return "value"; } [Route("Service/User/")] //POST-маршрут: Service/User/ public void Post([FromBody]string value) { } }