2016-06-29 8 views
0

Verzeihen Sie mir, wenn dies ein Duplikat, fand ich nicht die Antwort.Architektur für interne WCF Aufruf seiner dummen DMZ-Version mit dem Internet

Wir haben folgende Netzwerk-Setup

Internal | DMZ | Internet

Ich glaube, es für Sicherheitsstandard ist.

Ich habe dann einen internen WCF Service, der sowohl Geschäftslogik und Persistenz hat.

Da die Daten sollten nicht in idealer Weise in der DMZ gehostet werden, gehe ich davon aus, dass die beste Lösung wäre eine „dumme“ Schale des gleichen Dienst an der DMZ bereitgestellt werden müssen und ist übergebenen Parameter notwendig mit dem Internet kommunizieren

ich glaube, es ist etwas würde wie folgt aussehen:

Internal | DMZ | Internet WCF_Full <---> | <-- WCF_Thin --> | <----> (Third party)

  1. Was wäre der beste Ansatz?

Meine Lösung ist

  • in einen Dienstverweis mit WCF_Full die zu WCF_Thin verweist.
  • beide mit identischen Schnittstellen und WCF_Thin nur

Die Herausforderung kam mit dem Internet auf Nachrichten vorbei, dass ich mehr Daten (config + Business-Nachrichten) entlang des Drahtes, passieren WCF_Thin zu erhalten zu arbeiten, was ich sonst nicht tun würde, wenn ich Persistenz auf WCF_Thin hätte.

  1. Ist das ein lohnender Kompromiss, oder mache ich es falsch?

Antwort

1

1) Der „beste Ansatz“ ist subjektiv und es wird immer abhängig von Kontext

2) Ich habe es, wie Sie für extern initiierten Verkehr beschreiben aber nur getan gesehen. Die DMZ hostet eine "Relay" -Version des Dienstes und wie du es beschreibst, hat sie einfach den Verkehr an die Vollversion weitergegeben. In unserem Fall wurde die Vollversion in einem "internen" Netzwerk gehostet, das dann auf den Datenspeicher zugreift und ihn zurück an die Kette schickt. Nicht sicher, warum Sie dies für intern initiierten Datenverkehr tun müssten.

Diese "Relay" -Lösung hat eine ziemlich große Komplexität mit sich gebracht und wir haben sie schließlich durch ein Application-Layer-Gateway (ALG) ersetzt, das im Grunde genommen das gleiche getan hat, wenn auch mit geringerer Komplexität. Der ALG-Proxy leitete den Datenverkehr zur Vollversion des Dienstes und die 'Relay' -Version wurde zurückgezogen. Wenn Sie Google "Application-Layer-Gateway" finden Sie eine Reihe von Informationen.

Die gleiche Proxy-Funktion kann für intern initiierte Anrufe verwendet werden, die für den Außenbereich bestimmt sind. Stellen Sie sich einen Lasttest vor, bei dem Sie die Dienste Ihres Anbieters nicht laden oder pro Anruf bezahlen möchten. Um dies zu unterstützen, können Sie das ALG so einrichten, dass es die Signatur der Nachricht erkennt und auf jede von Ihnen festgelegte Art antworten kann.

HTH

+0

Vielen Dank für Ihr Feedback. Will es als eine Antwort markieren. Ihr letzter Absatz ist genau das, was wir auch getan haben, als wir unsere Komponente testen mussten. Nur dass wir echte Anrufe durch einen Scheindienst ersetzt haben – user919426