2013-12-13 11 views
25

Nie proszę o poradę dotyczącą najlepszych praktyk, ponieważ istnieje wiele postów na blogu i samouczków na ten temat w Internecie.Jaki jest właściwy sposób samodzielnego hostowania interfejsu Web API?

Pytam z nieporozumień, ponieważ Microsoft wprowadził wiele zmian w całej procedurze samoobsługi i każdy samouczek, który uważam za inny, przestarzały lub nieznany.

Moim celem jest stworzenie samodzielnym gospodarzem Web API w dziedzictwo usługi Windows kontrolować różne zadania długo uruchomiony z klientem niż Windows, takich jak Android aplikacji gdzie Integracja WCF/SOAP klient naprawdę może być PITA.

Jestem świadomy faktu, że WCF jest w stanie zaoferować usługę REST, ale ponieważ interfejs Web API naprawdę nadaje się do takiego zadania, pomyślałem, że dałam mu szansę.

To jak ja obecnie rozpocząć mój API obsługiwany za pomocą OWIN (Katana):

public class ApiBootstrap { 

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

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

} 

Ale większość samouczki pójść na innym podejściu:

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

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

Teraz rozumiem klasa HttpSelfHostServer jest z System.Web.Http.SelfHost i nie używa OWIN i oba działają poprawnie.

Ale ja walczą o dzień, aby osiągnąć bardzo prostych zadań, takich jak zabezpieczenia połączenia przy użyciu protokołu SSL, tworząc zezwolenia itd., Po prostu dlatego, że każdy poradnik znajdę się na te tematy referr do siebie gospodarzem metoda nie używając OWIN. Ale AFAIK, OWIN (Katana) to preferowane przez firmę Microsoft podejście do samodzielnego hostingu.

Jako początkujący jestem całkowicie zdezorientowany i bezradny!

Edytuj: 4 upvotes, 1 fav i 30 widoków w zaledwie 6 minut, ale wciąż nie ma odpowiedzi. Nie mogę powiedzieć, czy robię tutaj genialne rzeczy do kawy, czy to po prostu niewiarygodne głupie pytanie.

+0

Komentarz do edycji: Zgaduję, że to dlatego, że kroczysz tutaj całkiem nowym gruntem. OWIN jako preferowane podejście MS nie było tak od bardzo dawna, czy mam rację? Nie jestem też pewien, że to, co mówisz, to "bardzo proste zadania". Być może odpowiedź na to pytanie brzmi: "nie da się tego zrobić. Użyj IIS". – Nilzor

+0

@Nilzor Tak, tak też może być. Już myślałem o użyciu IIS do ujawnienia Web API, ale problemem jest to, że potrzebuję stale działającej usługi do wykonywania zadań intensywnych dla CPU. Mógłbym oddzielić usługę od interfejsu API poprzez wdrożenie hosta WCF i dostęp do niego za pośrednictwem np. aplikacja internetowa MVC (która oferuje również API), ale klient WCF w MVC jest również prawdziwym bólem w moim doświadczeniu. – Acrotygma

Odpowiedz

5

Serwer HttpSelfHostServer został oznaczony jako dziedzictwo w Nuget. Jednak Owin HTTPListener został tylko RTM przez dość krótki czas teraz.

Częścią intencji Owina jest zapewnienie identycznej konfiguracji oprogramowania pośredniego, niezależnie od tego, w jaki sposób hostujesz. Więc prawdopodobnie nie zobaczysz wielu artykułów kierujących bezpośrednio do hostingu Owin HttpListener, ponieważ nie powinno to mieć znaczenia, z jakiego hosta korzystasz.

OwinHttpListener obecnie używa standardowego .net HttpListener pod okładkami, co w rzeczywistości jest tym samym, co użyty HttpSelfHostServer. Dlatego rzeczy takie jak SSL powinny być skonfigurowane w niemal taki sam sposób.

Jeśli chodzi o uwierzytelnianie, czy spojrzał na Microsoft.Owin.Security, najprawdopodobniej wszystko, czego potrzebujesz, jest tam.

Powiązane problemy