Ich habe bereits viele Artikel im Web gelesen, in denen die Unterschiede zwischen der WCF- und der ASP.Net-Web-API beschrieben wurden. Leider konnte ich keine klare Vorstellung davon bekommen, was meinem Zweck dient. Die meisten Artikel, die ich gelesen habe, hoben die Gestaltungsperspektive der beiden Webservices hervor. Aber ich bin verwirrt, was für mein Projekt am besten funktioniert und warum? Hier ist meine kurze Beschreibung des Projekts.
Ich muss einen Kommunikationskanal zwischen zwei Servern erstellen (beide sind in C # geschrieben). Die Server kommunizieren über Nachrichten (bestimmte Befehlsarten). Die Nachrichten können manchmal nur Bestätigungen sein, und manchmal enthalten die Nachrichten Anweisungen zum Ausführen einiger Berechnungen. Zum Beispiel kann eine Nachricht etwas zeichnen oder eine SMS senden usw. Die Nachrichten beinhalten nicht notwendigerweise Datenbank-Transaktionen. Die Nachrichten können jedoch manchmal große Textdateien als Nutzlast senden (max. 1 bis 5 MB). Was ich glaube, dass WCF sehr wahrscheinlich ist, wird dies sicherlich tun, aber ich kann dasselbe mit der ASP.net-Web-API tun. Denn bisher sind alle Beispiele, die ich für ASP.Net-Web-API gesehen habe, gut: Sie sind gut für RESTful-Dienste, die eine Art DB-Speicher (GET, PUT, DELETE) manipulieren. In meinem Fall muss ich jedoch Servicepunkte offenlegen, die dies tun
eine Art Verarbeitung ausführen, z. B. den Wert einer Berechnung zurückgeben, Nachrichten senden und bestätigen usw.
Nicht nur einen DB-Store manipulieren.
Was sollte also der beste und einfachste Weg sein, dies zu tun? Es muss erwähnt werden, dass ich kein einfaches Beispiel dafür gefunden habe, dies mithilfe der ASP.Net-Web-API zu erreichen.
Die Frage, die Sie gestellt haben, ist zu breit oder hauptsächlich auf Meinungsbildern aufgebaut und es ist schwer, ein Beispiel für das zu geben, was Sie gefragt haben.
Wichtige Punkte:
- Erstens, wenn Sie einen Dienst erstellen möchten, der auf verschiedenen Plattformen verwendet wird, gehen Sie zu WCF.
- Zweitens: Wenn Sie einen Internetdienst erstellen, der external resource verwendet, dann gehen Sie zur Web-API.
- Die Web-API ist die beste Wahl, wenn Sie einen Dienst für Geräte mit niedriger Bandbreite oder mobile Geräte erstellen, um auf client.HTTP .__ zuzugreifen. request/response ist auch besser lesbar als SOAP, weil es enthält Header, Body usw., wodurch es komplex wird.
Nehmen Sie sich einfach ein paar Minuten und lesen Sie den untenstehenden Artikel, bis Sie einige Prinzipien vollständig verstanden haben.
Originalquelle Kann gefunden werden Hier , Hier und Hier .
Zu wem wählen Sie zwischen WCF oder WEB API:
Warum Web-API wählen
Meine Meinung:
Ich hoffe, das gibt Ihnen eine klare Vorstellung davon, was Sie wählen sollten ...
Zunächst einmal ist RESTful eine zustandslose und einheitliche Schnittstellennorm, die auf Webdienste angewendet werden kann. Es muss nicht automatisch und nur ein einfacher alter CRUD-Dienst sein, der von einer DB unterstützt wird.
In der realen Welt können wir kaum sagen, dass alle web REST API die Norm voll und ganz einhalten, tatsächlich tun sie dies meistens nicht, vor allem der zustandslose Teil.
Für Ihre nachrichtenbasierte API, insbesondere wenn sie bidirektional und ereignisbasiert ist, können Sie Websockets verwenden und die API REST als eine Möglichkeit betrachten, eine einheitliche, zustandslose Weboberfläche bereitzustellen, um diese zu erstellen. Und ja, Sie können Websockets mit ASP.NET WebApi verwenden Es gibt eine Menge Tutorials auch für den neueren ASP.NET Core.
Der Interaktionsteil "Zwischen Diensten" unterscheidet sich nicht vom üblichen Webdienst <=> Webbrowser. Sie verwenden nur C # -Code anstelle von JS für den Client.
Ich kann WCF kaum empfehlen, das SOAP verwendet, da es heutzutage für Webstandards kaum tragbar ist. Wenn Sie beispielsweise einen Browser-Client anstelle eines anderen ASP.NET-Dienstes verwenden möchten, müssen Sie zusätzlichen Code-Client-Seite ausführen, um die Unterstützung zu unterstützen.
Sie können WCF-Websockets verwenden und bietet so gut wie alle Vorteile von WCF-SOAP.
tl; dr:
WebAPI eignet sich nicht nur für RESTful-Webservices. Sie können auf einfache Weise Anforderungen an einen WebAPI-Controller senden und wie gewünscht bearbeiten: Berechnungen, Senden von Nachrichten, Interaktion mit einem CRM, Interaktion mit der Datenbank oder etwas anderes.
WCF wurde zur Verwaltung von SOAP - basierten Webservices entwickelt und bietet zusätzliche Komplexität. Es behandelt TCP, Mime ...
Wenn Sie nur HTTP-Anforderungen verarbeiten müssen, verwenden Sie die WebAPI.
Ich würde eine Web-API vorschlagen, wenn es sich um REST-fähige Dienste handelt, da WCF nie als Restful-Dienste dienen sollte, obwohl Sie als Web-API dienen können, bei dem die Web-API speziell dafür erstellt wurde.