close
Kaspersky Endpoint Security

Welcome to

Kaspersky Endpoint Security


By Kaspersky Endpoint Security


Azure Service Bus Relay mit WCF-Routing-Service



Azure Service Bus (SB) Relais bietet uns die Möglichkeit schaffen öffentlichen Endpunkte für unsere internen On-Premise / corporate WCF-Dienste, die hinter Proxy / Firewall befindet. Das ist ganz in der Entwicklungsphase von externen Anwendungen nützlich, die keine Vor-Ort-LOB Dienste nutzen. Zum Beispiel können wir unsere Entwicklung Cloud (MSDN) verwenden, die in den meisten Fällen brauchen Website nicht zu Site-VPN-Setup zu diesen Diensten zu verbinden. Aber wenn unsere App auf mehr als 1 auf Prämisse Dienstleistungen sprechen dann jeder von ihnen erfordert ein SB-Relay-Endpunkt, also müssen wir mehrere Endpunkt, der an den SB-Namespace Punkt zu verwalten. Zum Glück 4.0 WCF-Unterstützung, die Nachricht ermöglichen, sich auf die unterschiedlichen Regeln wie Endpunktadressen Weiterleitung basiert. Das folgende Diagramm zeigt die Architektur:

Ein WCF-Routing-Service-Host mit Azure Bus Relay-Endpunkt eine Routing-Tabelle, die die Anfrage URLs auf Prämisse WCF Service-Endpunkte zuordnet. Ich werde die Maßnahmen erläutern, dies einzurichten, obwohl es wird nicht detailliert Schritte sein, da die meisten von ihnen in dieser MSDN-Artikeln abgedeckt sind (und). Also im Grunde brauchen wir die Konfiguration von beiden Artikeln kombiniert.

Setup-Windows Azure Service-Namespace als in dieser gezeigt. Lassen Sie sagen, dass der Service-Namespace MyRouting Richten Sie den Routing-Service mit Service Bus Endpoint: Erstellen Sie eine Konsole-Anwendung oder Windows-Dienst Visual Studio, Fügen Sie den Windows Azure Service Bus NuGet Paket (es fügt die DLL erfordern und auch einige WCF-Erweiterungen hinzufügen, die verwendet von Service Bus Relay in der app.config) und auch System.ServiceModel.dll sowie System.ServiceModel.Routing.dll. In Ihrer Konsole App program.cs (in Windows-Dienst Sie diese Routine, die in OnStart & OnStop Methoden hinzufügen), um den Code unten hinzufügen, wie in diesem gezeigt  public static void Main (string [] args)  {     var host = neue Servicehost (typeof (Routenplanung));     host.Open ();     Console.WriteLine ( "Host hört");     Console.ReadLine ();     host.Close ();  } Konfigurieren des Service-Host mit SB-Endpunkt und Routing-Fähigkeit. Grundsätzlich verbindet es die Service-Host-Endpunkt-Konfiguration wie in diesem und Routing-xml gezeigt, wie in der gezeigt.Welche enden mag unten: <Dienste>       <Service behaviorConfiguration = "Routing"                name = "System.ServiceModel.Routing.RoutingService">         <Endpunkt Bindung = "basicHttpRelayBinding"                   Vertrag = "System.ServiceModel.Routing.IRequestReplyRouter"                   Adresse = "                   behaviorConfiguration = "sbTokenProvider"                   bindingConfiguration = "httpServiceBusBinding" />       </ Service> </ Dienstleistungen> Das Routing im Dienst des Verhaltens der Konfiguration definiert wird als Routing-Konfiguration, es enthält die 'Routing-Tabelle ". Da der Endpunkt der basicHttpRelayBinding wird unter Verwendung der Adresse https-Protokoll verwendet. Das Verhalten Konfiguration, wie dargestellt, wie unten <Verhalten>       <ServiceBehaviors>         <Verhalten name = "Routing">           <Routing filterTableName = "LOBFilterTable" routeOnHeadersOnly = "false" />           <ServiceDebug IncludeExceptionDetailInFaults = "false" />         </ Verhalten></ ServiceBehaviors>       <EndpointBehaviors>         <Verhalten name = "sbTokenProvider">           <TransportClientEndpointBehavior>             <TokenProvider>               <Sharedsecret issuerName = "Besitzer" issuerSecret = "** Taste **" />             </ TokenProvider>           </ TransportClientEndpointBehavior>         </ Verhalten>       </ EndpointBehaviors> </ Verhalten> <Bindungen>        <BasicHttpRelayBinding>           <Binding name = "httpServiceBusBinding">             <Security mode = "Transport" relayClientAuthenticationType = "None" />           </ Binding>        </ BasicHttpRelayBinding> </ Bindings> Die Routing definiert die Routing-Tabelle mit dem Namen LOBFilterTable und dem Service Bus Relay-Endpunkt verwendet sbTokenProvider Endpunkt das Verhalten der Azure Service Bus Relay verbinden. WCF-Dienste Da meine Vor-Ort werden mit der Basichttpbinding, verwende ich basicHttpRelayBinding für den Azure Service Bus Endpunkt der Bindung. Der nächste Schritt ist die Definition der Routing-Tabelle alsunten gezeigt. Die filterTable entspricht den Filter mit dem Endpunkt des Kunden. Das Routing basiert auf EndpointAddress (dies zeigt verschiedene Filter, die wir in WCF-Routing-Service verwenden können), in diesem Fall der öffentlichen Endpunkt auf Service Bus Client-Endpunkt (On-Premise-WCF-Dienste Endpunkt) zu wcf abgebildet. <Routing>       <Filter>         <Filter name = "LobSvc_A" Filtertype = "EndpointAddress" filter = "/>         <Filter name = "LobSvc_B" Filtertype = "EndpointAddress" filter = "         <Filter name = "LobSvc_C" Filtertype = "EndpointAddress" filter = "       </ Filter>       <FilterTables>         <FilterTable name = "LOBFilterTable">           <Add filter = "LobSvc_A" endpointName = "LobSvc_A_Client" />           <Add filter = "LobSvc_B" endpointName = "LobSvc_B_Client" />           <Add filter = "LobSvc_B" endpointName = "LobSvc_C_Client" />         </ FilterTable>       </ FilterTables> </ Routing> Schließlich stellen wir die Client-Konfiguration, wie unten dargestellt. Wie Sie sehen können, dass dieClient-Endpunkt der Namen, die mit denen übereinstimmen, in dem filterTable <client>   <Endpunktadresse = "your.onPremise.WCF.A.url" Vertrag = "*"         Bindung = "Basichttpbinding" name = "LobSvc_A_Client" />   <Endpunktadresse = "your.onPremise.WCF.B.url" Vertrag = "*"         Bindung = "Basichttpbinding" name = "LobSvc_B_Client" />   <Endpunktadresse = "your.onPremise.WCF.C.url" Vertrag = "*"         Bindung = "Basichttpbinding" name = "LobSvc_C_Client" /> </ Client> Natürlich können Sie Ihre eigene Bindung Konfiguration und Endpunkt Verhalten an den Client hinzufügen können, wie zum Beispiel mit bestimmten Anmeldeinformationen verbinden. Wir haben mit dem Host beendet damit der nächste Schritt dieser Host der Client eine Verbindung einrichtet. Der Client kann eine Web-Rolle in Azure oder externer Anwendungen, die auf die Vor-Ort-WCF-Dienste verbinden müssen. Dieser Code unten zeigen eine generische Methode Service Bus-Kanal zu erstellen. der Endpunkt-String-Parameter ist der letzte Teil der Endpunkt in der filterFilterKonfiguration. In unserem Beispiel kann es sein,WcfEndpointA, WcfEndpointB oder WcfEndpointC, so WcfEndpointA wird WCF ein Dienst an der Vor-Ort verlegt werden.  private static Channel <T> CreateChannelFactory <T> (string endPoint)  {    var Bindung = new BasicHttpRelayBinding ();    binding.Security.Mode = EndToEndBasicHttpSecurityMode.Transport;    binding.Security.RelayClientAuthenticationType = RelayClientAuthenticationType.None;                 var serviceBusEndpoint = new EndpointAddress (ServiceBusEnvironment.CreateServiceUri ( "https", "myrouting", "rttest /" endPoint));    Channel <T> sbChannelFactory = new Channel <T> (Bindung, serviceBusEndpoint);    sbChannelFactory.Endpoint.Behaviors.Add (           neue TransportClientEndpointBehavior {              TokenProvider = TokenProvider.CreateSharedSecretTokenProvider ( "Eigentümer", "Ihr sb geheimen Schlüssel")    });    Rückkehr sbChannelFactory;  } Abschließend können wir einen Service Bus Endpoint haben, die durch die Verwendung von WCF-Routing-Service für viele Vor-Ort-WCF Dienstleistungen KarteFähigkeit.

Kaspersky Endpoint Security 2014     Endpoint-Security-10 Fenster 10

Categories and tags