Kann eine asp.net mvc-Anwendung auch über einen Webdienst verfügen?

Ich habe eine asp.net mvc-Anwendung und jetzt muss ich einen Web-Service hinzufügen, um mit ihm zu gehen. Was ist die beste Lösung dafür? Erstellen Sie einfach ein neues Webdienstprojekt, und fügen Sie es meiner Lösung hinzu und stellen Sie es dann mit einer anderen URL auf demselben Webserver bereit? Ich möchte, dass es nur ein Teil der mvc-Anwendung ist, weil ich meinen gesamten Datenbankcode darin habe.

Alle Vorschläge würden geschätzt. Danke.

Antwort auf "Kann eine asp.net mvc-Anwendung auch über einen Webdienst verfügen? " 6 von antworten

MVC basiert auf dem asp.net Framework. Sie sollten in der Lage sein, einen Webdienst in dasselbe Projekt einzuschließen. Ich habe es nicht getan, aber ich weiß, dass Sie asp.net Formularanwendungen mit MVC-Anwendungen im selben Projekt kombinieren können. Dasselbe sollte auch für Webdienste gilt.

Es sei denn, Ihre Anwendung ist sehr klein, ich würde empfehlen, dass Sie verschiedene Projekte für jeden logischen Teil der Anwendung erstellen. Ein guter Blickpunkt ist ein Projekt für jeden von diesen:

  • Domain-Objekte
  • Datenzugriff
  • Web Services
  • UI (Ihre ASP.NET MVC-App)

Dies bietet eine saubere Trennung entsprechend Ihrer Architektur und unterstützt die Wiederverwendung.

Webdienst kann einen Seifen-basierten Webdienst oder einen RESTful-Webdienst bedeuten. Ich kann mir keinen Grund vorstellen, warum Sie nicht einfach eine Asmx-Datei zu Ihrem Projekt hinzufügen und im Geschäft sein könnten. Das ist die Seifen-Basierte Route. Wenn Sie wirklich cool sein möchten, können Sie jedoch einfach XML von einer Controller-Aktion zurückgeben und eine RESTful-Lösung direkt über das MVC-Framework implementieren.

Es gibt keinen Grund, kein Webdienstprojekt hinzuzufügen.

Sie geben an, dass sich der gesamte Datenbankcode in Ihrem MVC-Projekt befindet. Ich empfehle Ihnen dringend, es von dort in ein separates Klassenbibliotheksprojekt zu entfernen. Dieses dritte Projekt würde sowohl vom Webdienst als auch von der MVC-Anwendung verwendet werden.

Ich empfehle auch dringend, ASMX-Webdienste nicht für neu zu verwenden.

Verwenden Sie nur WCF, es sei denn, Sie haben überhaupt keine Wahl. Es gibt ein Missverständnis, dass WCF-Dienste keine SOAP-Dienste verwenden - sie tun es, und WCF hat ASMX ersetzt.

Wenn Sie einen regulären ASP.NET asmx Web-Service nutzen möchten, ist es durchaus möglich. Hier ist ein example from Scott Hanselman that does just what you are asking about and it throws in some other ASP.NET technologies for good measure., das genau das tut, wozu Sie fragen, und es wirft einige andere ASP.NET Technologien für ein gutes Maß ein.

Alles, was Sie tun müssen, ist Datei -> Neuer Artikel -> Web-Service und es sollte wie eine regelmäßige ASP.NET Anwendung in Ihrem Mvc-Projekt funktionieren.

Ich denke, es gibt ein paar Dinge hier.

können Sie tatsächlich einen Webdienst zu einer MVC-Anwendung hinzufügen. Sie können sogar erwägen, die Webdienste als Skriptdienst zu identifizieren, um REST-ähnliche Operationen über Javascript zu vereinfachen. Dies ist aufgrund Ihrer Umstände möglicherweise nicht erforderlich.

Ich denke, es gibt eine stärkere Frage nach der zugrunde liegenden Architektur. Wenn Sie den Webdienst mit Ihrer mvc-Anwendung platzieren, weil Ihr Datenbankcode bereits vorhanden ist... sollte es sein? Es könnte ein guter Zeitpunkt sein, um Ihre Datenschicht ein wenig abzustrahieren. Wenn Sie es jedoch mit einem relativ kleinen Projekt zu tun haben und die Flexibilität nicht benötigen, dann fügen Sie sicherlich einen Web-Service direkt hinzu. Ich schätze, was es wirklich läuft auf die tatsächlichen Bedürfnisse Ihrer Anwendung.