2013-12-13 5 views
25

Я не прошу совета по лучшей практике, так как есть многочисленные сообщения в блогах и учебные пособия по этой теме по всему Интернету.Каков правильный способ самостоятельного размещения веб-API?

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

Моя цель состоит в том, чтобы создать самодостаточно Web API в наследство службы Windows, чтобы контролировать различные длительные задания от клиента, не Windows, такие как Android приложения, где Интегрирование WCF/SOAP клиент действительно может быть PITA.

Я знаю, что WCF способен предлагать услугу RESTful, но поскольку веб-API действительно подходит для такой задачи, я думал, что сделал это.

Это, как я в настоящее время начать свой API, размещенные с помощью Owin (Katana):

public class ApiBootstrap { 

    var httpConfiguration = new HttpConfiguration(); 
    // ... configure routes etc. 

    appBuilder.UseWebApi(httpConfiguration);  // appBuilder = IAppBuilder 
    var disposable = WebApp.Start<ApiBootstrapper>(_myBaseUri); 

} 

Но большинство обучающих программ перейти на другой подход:

var config = new HttpSelfHostConfiguration("http://localhost:999"); 
// ... configure routes etc.. 

var server = new HttpSelfHostServer(config); 
server.OpenAsync().Wait(); 

Теперь я понимаю, класс HttpSelfHostServer составляет от System.Web.Http.SelfHost и не используется OWIN, и оба хорошо работают.

Но я борюсь за дни, чтобы достичь очень простых задач, таких как обеспечение соединения с использованием SSL , созданием авторизации и т.д., только потому, что каждый учебник я найти по этим темам referr к самодостаточно методам не используются Owin. Но AFAIK, OWIN (Katana) - это предпочтительный подход Microsoft для достижения самостоятельного хостинга.

Как новичок, я совершенно смущен и беспомощен!

Редактировать: 4 upvotes, 1 fav и 30 просмотров всего за 6 минут, но ответа еще нет. Не могу сказать, если я делаю здесь гениальный кофе или если это просто невероятный тупой вопрос.

+0

Комментарий к редактированию: Я предполагаю, что это потому, что вы наступаете здесь довольно неплохо. OWIN как предпочтительный подход MS не так давно, я прав? Я также не уверен, что на самом деле это то, что вы говорите, «очень простые задачи». Возможно, ответ на этот вопрос: «Это невозможно сделать. Используйте IIS». – Nilzor

+0

@ Нилзор. Да, это тоже может быть. Я уже думал об использовании IIS для публикации веб-API, но проблема в том, что мне нужна постоянно работающая служба для выполнения задач с интенсивным использованием ЦП. Я мог бы отделить службу от api, выполнив хост WCF и получив доступ к нему через, например, веб-приложение MVC (которое также предлагает API), но клиент WCF в MVC также является настоящей болью в моем опыте. – Acrotygma

ответ

5

HttpSelfHostServer теперь отмечен как наследие на Nuget. Тем не менее, Owin HTTPListener был только RTM в течение довольно короткого периода времени.

Кроме того, часть намерения Овина обеспечить то, как вы устанавливаете промежуточное программное обеспечение, идентично независимо от того, как вы принимаете. Таким образом, вы вряд ли увидите множество статей, ориентированных на хостинг Owin HttpListener, потому что это не имеет значения, какой хост вы используете.

В настоящее время OwinHttpListener использует стандартный .net HttpListener под обложками, что на самом деле является тем же, что и HttpSelfHostServer. Поэтому такие вещи, как SSL, должны быть настроены примерно так же.

Что касается аутентификации, взгляните на Microsoft.Owin.Security, скорее всего, все, что вам нужно, находится там.

Смежные вопросы