2013-12-13 21 views
25

Non sto chiedendo un consiglio sulle migliori pratiche poiché ci sono numerosi post e tutorial sul tema in Internet.Qual è il modo giusto per ospitare autonomamente un'API Web?

Sto chiedendo confusione da quando Microsoft ha apportato un sacco di modifiche all'intera procedura di self hosting e ogni tutorial che trovo ha un approccio diverso, deprecato o sconosciuto.

Il mio obiettivo è quello di istituire un auto ha ospitato Web API in un lascito di Windows Service per controllare vari compiti lunga che parte da un client non-Windows, ad esempio un'applicazione Android in cui l'integrazione di un WCF/SOAP il cliente può davvero essere un PITA.

Sono consapevole del fatto che WCF è in grado di offrire un servizio RESTful, ma dal momento che l'API Web è davvero adatta per tale compito, ho pensato di dargli una possibilità.

è così che ho attualmente iniziare il mio API ospitato utilizzando OWIN (Katana):

public class ApiBootstrap { 

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

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

} 

Ma la maggior parte tutorial andare su un approccio diverso:

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

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

Ora, capisco la classe HttpSelfHostServer proviene da System.Web.Http.SelfHost e non utilizza OWIN ed entrambi funzionano correttamente.

Ma io sto lottando per giorni per raggiungere compiti molto semplici come garantire la connessione utilizzando SSL , la creazione di autorizzazione ecc, proprio perché ogni esercitazione trovo su questi argomenti referr al metodo ospitato sé non usare OWIN. Ma AFAIK, OWIN (Katana) è l'approccio preferito da Microsofts per raggiungere l'auto hosting.

Come principiante, sono completamente confuso e indifeso!

Modifica: 4 upvotes, 1 fav e 30 visualizzazioni in soli 6 minuti ma ancora nessuna risposta. Non posso davvero dire se sto facendo roba da caffè geniale qui o se è solo un'incredibile domanda stupida.

+0

Commento al montaggio: Immagino sia perché stai calpestando un terreno completamente nuovo qui. OWIN come approccio preferito da MS non è stato così a lungo, ho ragione? Non sono nemmeno sicuro che ciò che dici siano "compiti molto semplici" sono in effetti questo. Può darsi che la risposta a questa domanda sia "non può essere fatto. Usa IIS". – Nilzor

+0

@Nilzor Sì, anche questo potrebbe essere il caso. Ho già pensato di utilizzare IIS per esporre un'API Web, ma il problema è che ho bisogno di un servizio costantemente in esecuzione per svolgere attività ad alta intensità di CPU. Potrei separare il servizio dall'API implementando un host WCF e accedendolo tramite ad es. un'applicazione web MVC (che offre anche l'API), ma un client WCF in MVC è anche un vero dolore per la mia esperienza. – Acrotygma

risposta

5

HttpSelfHostServer è ora contrassegnato come legacy su Nuget. Tuttavia, Owin HTTPListener è stato solo RTM per un breve periodo di tempo.

Inoltre, parte dell'intenzione di Owin di garantire che l'impostazione del middleware sia identica indipendentemente dal modo in cui si ospita. Quindi probabilmente non vedrai molti articoli che indirizzano hosting Owin HttpListener direttamente perché dovrebbe essere irrilevante quale host stai usando.

OwinHttpListener attualmente utilizza lo standard HttpListener. NET sotto le copertine, che in realtà è la stessa cosa utilizzata da HttpSelfHostServer. Quindi cose come SSL dovrebbero essere configurate più o meno allo stesso modo.

Per quanto riguarda l'autenticazione, hai guardato Microsoft.Owin.Security, molto probabilmente tutto ciò di cui hai bisogno è lì dentro.

Problemi correlati