2016-02-23 14 views
5

Ich erstelle eine neue E-Commerce-Anwendung in MVC und SQL-Server als Datenbank.Ich möchte Entity-Framework für die gleiche verwenden. Ich bin verwirrt in der Auswahl meiner Datenzugriffsschicht. Welche sollte ich unter WCF vs Web API vs Web Services verwenden. Es ist möglich, dass wir in Zukunft Android und IOS App benötigen. Ich denke, Web-API wird die beste Option dafür sein.WCF vs WEB api vs Web-Services für neue E-Commerce-Website

Ich versuche, den Unterschied zwischen Web API und WCF zu finden, was ich gefunden habe, ist das. Die neue ASP.NET-Web-API ist eine Fortsetzung des vorherigen WCF-Web-API-Projekts (obwohl einige der Konzepte geändert wurden).

WCF wurde ursprünglich erstellt, um SOAP-basierte Dienste zu aktivieren. Für einfachere RESTful- oder RPCish-Dienste (denken Sie an Clients wie jQuery) sollte ASP.NET Web API eine gute Wahl sein. Es gibt tausend Links, die über Rest, TCP, FTP, Seife, Http erzählen. Aber nein, wo ich meine Antwort gefunden habe. Ich bin immer noch verwirrt, welcher mein Problem lösen wird. Noch eine Sache, wenn ich Web API wähle, kann Entity Framework mit Web API integrieren. Ich bin neu bei dot net. Jede Hilfe wird sehr hilfreich sein.

Bearbeiten: @win danke für Ihre Hilfe. Ich will wissen, wie man entscheidet, welchen ich wählen sollte, RESTFull (Web API) oder WCF (Soap). Welche Faktoren in der Anwendung entscheiden, welche zu verwenden.

+1

ich hoffe, dass Sie Ihre Antwort in einer anderen Frage in Stackoverflow gebucht bekommen können [hier] (http://stackoverflow.com/questions/9348639/wcf-vs-asp-net-web-api) –

+0

Das ist hängt davon ab, was Sie werden schaffen, was Sie brauchen und von Ihrer Kern-API erwarten. Sie können REST und Web Services mit WCF plus erhalten. WCF ist eine Plattform, mit der Sie tiefgreifende Anpassungen vornehmen können. Web API und Web Services sind leichter als WCF, aber Sie sollten das innerhalb Ihrer Bedürfnisse entscheiden. –

+1

** Entity Framework ** hat nichts mit ** Web API ** und ** WCF ** zu tun. Wenn Sie sowohl ** SOAP ** als auch ** REST ** unterstützen müssen, verwenden Sie ** WCF **. Andernfalls verwenden Sie ** Web API **. Wenn Sie mit der Web-API noch nicht vertraut sind, [ASP.NET Web API 2: Erstellen eines REST-Dienstes von Anfang bis Ende] (http://www.amazon.com/ASP-NET-Web-API-Building-Service/dp/ 1484201108/ref = sr_1_1? Ie = UTF8 & qid = 1456236356 & sr = 8-1 & keywords = web + api + start + bis + finish) führt Sie Schritt für Schritt zum Erstellen der Web-API * (Hinweis: Es verwendet NHibernate für Data Access Layer, aber Sie können es leicht in Entity Framework ändern) *. – Win

Antwort

6

WCF bietet eine Menge Funktionalität, aber auf Kosten von verrückt-mad Konfiguration Setup. Sehr verrückt. Es beinhaltet die Definition eines "ABC", Adresse, Bindung, Vertrag. Ich sage den Leuten immer "mit WCF: es ist die Konfiguration, nicht der Code". Es gibt nur so viele Möglichkeiten, es zu konfigurieren.

Wenn Sie kleine Datenmengen an "Clients" (Browser, Android, iPhone) übertragen müssen, ist WebApi die beste Wahl.

Eine Funktion, WebApi gibt Ihnen xml ODER json über, wie die Anfrage eingerichtet wird (in der 'Kopfzeile').

Mit WCF müssen Sie entweder/oder/für json und xml "codieren" und es ist nicht super trivial. Aka, müssen Sie Attribute auf die Service-Methoden (der "Vertrag" des ABC) setzen, um zu sagen "diese Methode wird xml zurücksenden" oder "diese Methode wird json zurücksenden".

Ihre WebApi-Ebene bietet Dienste an. Dies bedeutet in der Regel die Bereitstellung von JSON-Daten oder die Verwendung von JSON-Daten. Und MS hat sich um das "Plumbing" für Sie gekümmert, auf der Serviceseite passiert das also automatisch.

Ich habe beide seit 2005 codiert (nun, WCF 2005 und folgende, und später mit WebApi).

WebApi ist viel einfacher zu handhaben, besonders für einen Anfänger.

Also, wenn Sie nicht einen sehr konkreten Grund haben, WCF zu verwenden, würde ich WebApi verwenden.

Soweit ein ORM, das passiert vollständig auf der "Server-Seite", so dass Sie wählen können, was Sie wollen. Ich würde Poco/Code-First/Entity-Framework ODER NHibernate auswählen.

Hier ist eine kleine Erklärung der automatischen magic wire ... wo Sie nicht jSON auf der SERVER-Seite hand-parsen.

http://encosia.com/using-jquery-to-post-frombody-parameters-to-web-api/

und hier

http://encosia.com/rest-vs-rpc-in-asp-net-web-api-who-cares-it-does-both/

Außerhalb meiner Meinungen hier, hier ist ein Microsoft Vergleich Artikel:

https://msdn.microsoft.com/en-us/library/jj823172.aspx

und das Zitat:

Verwenden Sie WCF, um zuverlässige, sichere Webdienste zu erstellen, auf die über eine Vielzahl von Transporten zugegriffen werden kann. Verwenden Sie die ASP.NET-Web-API zum Erstellen von HTTP-basierten Diensten, auf die von einer Vielzahl von Clients aus zugegriffen werden kann. Verwenden Sie die ASP.NET-Web-API, wenn Sie neue REST-ähnliche Dienste erstellen und entwerfen. Obwohl WCF einige Unterstützung für das Schreiben von REST-artigen Diensten bietet, ist die Unterstützung für REST in der ASP.NET-Web-API vollständiger und alle zukünftigen Verbesserungen der REST-Funktion werden in der ASP.NET-Web-API vorgenommen. Wenn Sie über einen vorhandenen WCF-Dienst verfügen und zusätzliche REST-Endpunkte verfügbar machen möchten, verwenden Sie WCF und WebHttpBinding.

+0

Jemand, der darüber viel mehr dachte als ich: http://blogs.microsoft.co.il/idof/2012/03/05/wcf-or-aspnet-web-apis -my-zwei-Cent-am-Thema / – granadaCoder