Ich bitte nicht um einen Best-Practice-Tipp, da es im Internet zahlreiche Blog-Posts und Tutorials zum Thema gibt.Was ist der richtige Weg, um eine Web-API selbst zu hosten?
Ich frage aus der Verwirrung, seit Microsoft eine Menge Änderungen an der gesamten Selbsthosting-Prozedur vorgenommen hat und jedes Tutorial, das ich finde, einen anderen, veralteten oder unbekannten Ansatz nimmt.
Mein Ziel ist es ein selbst gehosteten Web API in einem Legacy-Windows-Dienst einrichten, um verschiedene lange laufende Aufgaben von einem Nicht-Windows-Client, wie zum Beispiel einer Android-Anwendung zu steuern, wo ein WCF Integration/SOAP Klient kann wirklich ein PITA sein.
Ich bin mir bewusst darüber, dass WCF Lage ist, einen RESTful Service anbieten zu können, aber da Web API wirklich für eine solche Aufgabe geeignet ist, ich dachte, dass ich ihm einen Schuss gab.
Dies ist, wie ich meine API derzeit gehostet beginnen OWIN (Katana):
public class ApiBootstrap {
var httpConfiguration = new HttpConfiguration();
// ... configure routes etc.
appBuilder.UseWebApi(httpConfiguration); // appBuilder = IAppBuilder
var disposable = WebApp.Start<ApiBootstrapper>(_myBaseUri);
}
Aber die meisten Tutorials gehen auf einen anderen Ansatz:
var config = new HttpSelfHostConfiguration("http://localhost:999");
// ... configure routes etc..
var server = new HttpSelfHostServer(config);
server.OpenAsync().Wait();
Jetzt verstehe ich, Die HttpSelfHostServer
Klasse ist von System.Web.Http.SelfHost
und nicht mit OWIN, und beide funktionieren gut.
Aber ich bin zu kämpfen für Tage sehr einfache Aufgaben zu erreichen, wie die Sicherung der Verbindung mit SSL, Autorisierung zu schaffen usw., nur weil jedes Tutorial ich zu diesen Themen finden referr auf die selbst gehosteten Methode nicht mit OWIN. Aber AFAIK, OWIN (Katana) ist Microsofts bevorzugter Ansatz, um selbst zu hosten.
Als Anfänger bin ich völlig verwirrt und hilflos!
bearbeiten: 4 upvotes, 1 fav und 30 Ansichten in nur 6 Minuten, aber immer noch keine Antwort. Ich kann nicht wirklich sagen, ob ich genialen Kaffee hier mache oder ob es nur eine unglaublich dumme Frage ist.
Kommentar zum Bearbeiten: Ich schätze, es liegt daran, dass Sie hier ziemlich neue Wege gehen. OWIN als bevorzugter Ansatz von MS war das nicht für eine sehr lange Zeit, habe ich recht? Ich bin mir auch nicht sicher, ob das, was du sagst, "sehr einfache Aufgaben" sind. Es kann sein, dass die Antwort auf diese Frage ist "es kann nicht getan werden. Verwenden Sie IIS". – Nilzor
@Nilzor Ja, das könnte auch der Fall sein. Ich habe bereits über die Verwendung von IIS zur Bereitstellung einer Web-API nachgedacht, aber das Problem ist, dass ich einen ständig laufenden Dienst für CPU-intensive Aufgaben benötige. Ich könnte den Dienst von der API trennen, indem ich einen WCF-Host implementiere und über z. eine MVC-Webanwendung (die auch die API anbietet), aber ein WCF-Client in MVC ist auch ein echter Schmerz in meiner Erfahrung. – Acrotygma