Beachten Sie die folgende Netzwerksicherheitseinstellung:
%Vor%Ich habe die obige Netzwerkeinrichtung bei vielen Kunden gesehen. Das IT-Infrastrukturteam erlaubt Webservern in DMZ nicht, eine direkte Verbindung zu SQL Server herzustellen, der im internen Netzwerk über Port 1433 gehostet wird. Ironie ist, dass ich web.config auf dem Webserver mit DB-Passwörtern liegen sehe, die sie sind OK mit.
Normalerweise habe ich Lösungen gesehen und bearbeitet, bei denen ein WCF auf dem "App" -Server gehostet wird (, da er an HTTP-Ports verwendet werden kann), wie im Diagramm gezeigt. WCF wird die einzige Möglichkeit für das Web-Frontend, mit der DB zu interagieren. Ein "Vorteil" der Verwendung von WCF besteht darin, dass stark typisierte Objekte zurückgegeben werden, die über das ASP.NET MVC-Frontend einfach zu verwenden sind.
Fragen:
Bitte beachten Sie, dass wir derzeit keinen ASP.NET Core verwenden können.
Da dies ein wiederkehrendes Problem ist, würde ich gerne von der Community hören, wenn es eine bessere Lösung als WCF gibt.
Ich habe gerade ein System mit dem gleichen Problem gemacht, DB-Zugriff ist auf einen App-Server beschränkt.
Die Methode, die wir verwenden wollten, war ein Mvc-Frontend und ein Web-API-Backend, das auf dem App-Server gehostet wurde.
Um die starke Typisierung zu erhalten, die Sie normalerweise über WCF erhalten würden, entschieden wir uns für ein Tool namens Refit: Ссылка . Es ermöglicht Ihnen, eine Schnittstelle mit einer vorkonfigurierten URL-Vorlage in ein Objekt zu verwandeln, das Sie über einen normalen DI-Container injizieren können. Dadurch ist es sehr überprüfbar und entfernt eine Menge des HttpClient-Codes. Dies funktioniert sehr gut mit einem WebApi-Back-End.
Erstellen IIS Reverse Proxy zu Ihrem DMZ-Bereich und Sie benötigen nicht zwei separate Server (Web + App). Wenn der Reverse-Proxy den gesamten relevanten Verkehr an Ihren Webserver weiterleitet, können Sie ihn im internen Netzwerk ausführen.
%Vor%Ich würde folgendes Setup machen:
%Vor%Tags und Links asp.net-mvc asp.net-web-api wcf c# asp.net