it-swarm.com.de

ASP.Net Web API vs WCF, welche sollte ich in meinem Projekt auswählen

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. 

8
P basak

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:

  1. Wählen Sie WCF, wenn Sie einen Dienst erstellen möchten, der spezielle Szenarien wie Einwegnachrichten, Nachrichtenwarteschlangen, Duplexkommunikation usw. unterstützen soll.
  2. Wählen Sie WCF, wenn Sie einen Dienst erstellen möchten, der schnelle Transportkanäle verwenden kann, z. B. TCP, Named Pipes oder sogar UDP (in WCF 4.5). Außerdem möchten Sie HTTP unterstützen, wenn alle anderen Transportkanäle nicht verfügbar sind.
  3. Wählen Sie die Web-API, wenn Sie ressourcenorientierte Dienste über HTTP erstellen möchten, die alle HTTP-Funktionen (z. B. URIs, Request/Response-Header, Caching, Versionsverwaltung und verschiedene Inhaltsformate) verwenden können.
  4. Wählen Sie die Web-API, wenn Sie Ihren Service für eine breite Palette von Kunden bereitstellen möchten, z. B. Browser, Handys, iPhone und Tablets.

Warum Web-API wählen

  • Das Web-API hat keine langwierige und umfangreiche Konfiguration wie WCF REST service.
  • Es ist sehr einfach, einen Dienst mit Web-API zu erstellen. Wie bei WCF-REST ist die Erstellung von Services etwas schwierig (erfordert ein klares Verständnis der Konfigurationen).
  • Die Web-API basiert nur auf HTTP und HTTPS und ist einfach zu definieren, verfügbar zu machen und auf REST-Ebene zu verwenden.
  • Web-API ist eine leichte Architektur und eignet sich für Geräte mit begrenzter Bandbreite wie Smartphones.

Meine Meinung:

  • Einfachste Möglichkeit - Web-API (Da Sie dafür keine Beispiele haben)
  • Der härteste Weg ist (Konfigurationen) - WCF (Besser mit WCF, da Sie Beispiele haben)

Ich hoffe, das gibt Ihnen eine klare Vorstellung davon, was Sie wählen sollten ...

9
RajeshKdev

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:

  • Sie können RESTful und Websockets mischen, es kann tatsächlich besser sein, als voll REST oder vollständige Websockets zu gehen
  • Es ist persönliche Vorliebe, SOAP über Websockets zu verwenden, hat aber eine potenzielle technische Verschuldung, wenn man bedenkt, was man danach tun möchte
  • Die Nachrichten-API zwischen Diensten unterscheidet sich nicht von der Nachrichten-API zwischen einem Dienst und einem Browser
2
Uwy

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.

0
PMerlet

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.

0
Rohit N.