Ich suche nach einer "Top Ten" -Liste mit Gründen, warum wir über einen Webdienst eine Verbindung zu entfernten Datenbanken herstellen sollten, anstatt eine direkte Verbindung zur Datenbank herzustellen. Dies ist derzeit eine interne Debatte, und ich bin ein Pro-Web-Dienst, verliere aber das Argument. Ich habe ein grundlegendes Verständnis für WCF / Webdienste, das sonst niemand tut. Wir können tun, was wir wollen, aber wir müssen bei dem bleiben, was wir jetzt wählen.
Folgendes habe ich mir ausgedacht. Nicht mehr?
- WCF-Webdienste können bei korrekter Konfiguration sicherer sein.
- Änderungen an der Datenbank müssen nur auf Serviceebene vorgenommen werden (Konfigurationsdatei oder Dienst neu kompilieren).
- Einmal eingerichtet und gehostet, sind Webdienste einfacher zu nutzen.
quelle
Meiner Meinung nach sollten Sie Ihre Datenbank nicht automatisch als Webdienst verfügbar machen. Wenn sich herausstellt, dass Sie einen Dienst benötigen, um Ihre Daten verfügbar zu machen, schreiben Sie einen, aber nicht der gesamte Datenbankzugriff sollte über Webdienste erfolgen.
quelle
Die meisten dieser Punkte gelten für jede formale API, nicht speziell für Webdienste.
quelle
Das Schreiben eines Webdienstes, der Aufrufe an gespeicherte Prozeduren einfach umschließt, scheint ein fehlgeleiteter Ansatz beim Entwerfen eines guten DAL zu sein. Höchstwahrscheinlich handelt es sich bei Ihren gespeicherten Prozeduren um Legacy-Code, der von älteren Client-Server-Systemen übrig geblieben ist, dh Geschäftsregeln sind in den SPs vergraben. Wenn das der Fall ist, versuchen Sie wirklich, eine Seidenhandtasche aus dem Ohr einer Sau zu erstellen.
Darüber hinaus fügen Sie eine SOAP-Nachrichtenprotokollschicht hinzu, die Web-Apps, die zur Datierung dieses "Schweins" gezwungen wurden, einen Leistungseinbruch verleiht. Ich arbeite gerade an einem Projekt, in dem unsere neue MVC-4-App angewiesen wurde, eine solche DAL zu verwenden. Wir müssen sowohl die WebMethod-Signatur als auch die SP-Signatur ändern, wenn eine neue User Story erscheint, die solche Änderungen erforderlich macht. Was für uns jeder einzelne Sprint ist. In einem solchen Durchgangsansatz sind zwei eng gekoppelte Ebenen enthalten.
quelle
1) Die Kopfschmerzen bei der Pflege der Datenbank werden von Entwicklern reduziert, sodass sie sich nur auf die Entwicklung konzentrieren können.
2) Der Webdienst unterstützt die Kommunikation verschiedener Plattformen (Betriebssysteme wie Windows, iOS, Android usw.) auf sehr einfache und effektive Weise. Stellen Sie sich zum Beispiel eine Situation vor, in der Android Application & iOS Application mit einer Java-basierten Website kommunizieren möchte. Für die Kommunikation aller drei Dinge ist der Webservice die beste Lösung, anstatt drei verschiedene Datenbanken zu verwalten.
quelle
Allgemein
Ich werde gerade mit ASP.NET Web Api angestarrt und plane, zuerst Datendienste zu erstellen.
Ich habe mich kürzlich auf .NET MVC-Webanwendungen unter Verwendung des Entity-Frameworks konzentriert.
Ich befand mich kürzlich in einer frustrierenden Situation mit einer MVC-Web-App, die ich ursprünglich basierend auf gespeicherten Oracle-Prozeduren erstellt hatte. Die ursprüngliche Version als Oracle 9 oder noch früher, die ein weiteres Problem darstellte, als Visual Studio 2012 einen moderneren Ansatz für die Verbindungsfactory vorstellte, bei dem Assemblys mit Ladezeit anhand von Webkonfigurationsverbindungen und TNS-Namen die richtigen DLL-Dateien fanden.
Versuche, eine Verbindung zur Datenbank herzustellen, schlugen mit Fehlermeldungen fehl, die nicht mehr unterstützt wurden. Aus Neugier habe ich Oracle 12c heruntergeladen und einige Verbindungen auf Anwendungsebene hergestellt, die mit meinen TNS-Namen und der Load Assembly-DLL gut funktionierten, und ich konnte problemlos mit Oracle arbeiten.
Es wurden einige Webdienste erstellt, die mit Verbindungen zur älteren Oracle-Version arbeiteten. Sie wurden mit Methoden erstellt, die speziell zu meiner Enttäuschung ausgewählten Tabellen zugeordnet wurden. Ich müsste meine eigenen schreiben.
Mir wurde gesagt, dass die Gruppe, die für die Pflege der Oracle-Datenbanken verantwortlich war, neue gespeicherte Prozeduren schreiben würde, um die älteren zu ersetzen, die ich zum Abstrahieren der Clientschnittstellen- und Geschäftslogikschichten verwendete.
Meine ersten Gedanken waren also, dass alle gängigen Datenanforderungen wie das Ausfüllen von Dropdown-Listen oder die automatische Vervollständigung mit unternehmensweiten Daten über Datendienste erfolgen, die die gespeicherten Oracle-Prozeduren aufrufen. Warum sollte dieser Vorgang für jede Anwendung wiederholt werden und jeder Entwickler hat Probleme mit der Konfiguration und der Versions- / Lade-Assembly, TNS-Probleme?
so....
Ich bin ein Anwendungsentwickler / -analyst und kein DBA. Meine Perspektive ist also eine aus Erfahrung mit der unendlichen Frustration, Anwendungen ständig ändern zu müssen, wenn sich Datenbank-Tools weiterentwickeln.
quelle