7 Stimmen

Wie lässt sich eine API in ASP.NET mit MVC am besten implementieren?

Ich bin ein langjähriger ASP.NET-Entwickler im Webforms-Modell und nutze ein neues Projekt als Gelegenheit, meine Füße mit ASP.NET MVC nass zu machen.

Die Anwendung benötigt eine API, damit eine Gruppe von anderen Anwendungen mit ihr kommunizieren kann. Ich habe immer API's aus nur mit einem Standard-Web-Service vor diesem gebaut.

Nebenbei bemerkt zögere ich ein wenig, mich kopfüber in den REST-Stil der Erstellung von APIs zu stürzen, zumindest in diesem speziellen Fall. Diese Anwendung wird wahrscheinlich ein Konzept der API-Versionierung benötigen, und ich denke, dass der REST-Ansatz, wo die API im Wesentlichen über alle Controller der Website verstreut ist, ist ein wenig schwerfällig in dieser Hinsicht. (Aber ich bin nicht völlig dagegen, wenn es eine gute Antwort auf die potenzielle Versionierung potenzielle Anforderung ist).

Also, was sagt ihr, Stack Overflow-Bewohner?

8voto

Switters Punkte 1563

Ich würde Kilhoffer zustimmen. Versuchen Sie, eine "Facade"-Wrapper-Klasse zu verwenden, die von einer "IFacade" erbt. In Ihrer Facade-Klasse platzieren Sie Ihren Code, um Ihren Webdienst zu nutzen. Auf diese Weise werden Ihre Controller einfach Aufrufe an die Facade machen. Der Vorteil dabei ist, dass Sie eine "DummyFacade" austauschen können, die dieselbe IFacade-Schnittstelle implementiert, aber nicht wirklich mit dem Webdienst kommuniziert und nur statische Inhalte zurückgibt. So kann man tatsächlich einige Unit-Tests durchführen, ohne den Dienst anzugreifen. Im Grunde die gleiche Idee wie das Repository-Muster.

3voto

Kilhoffer Punkte 31599

Ich würde immer noch eine Diensteschicht empfehlen, die clientseitige oder serverseitige Verbraucher bedienen kann. Möglicherweise werden die Daten sogar in einer Vielzahl von Formaten zurückgegeben, je nach dem, wer sie abruft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X