Konfigurieren einer Windows Communication Foundation-Anwendung für die Abfangfunktion
Sie müssen die BAM-Interceptorsoftware installieren und Ihre Anwendung für die Verwendung des WCF-Interceptordiensts (BAM Windows Communication Foundation) konfigurieren, bevor Sie mit der Erfassung von BAM-Aktivitätsdaten beginnen können. Es wird davon ausgegangen, dass Sie BizTalk Server und dessen Abhängigkeiten erfolgreich installiert und mindestens eine BizTalk-Gruppe erstellt haben.
Installieren der Software für BAM-Ereignisse
Bevor Sie Ihre WCF-Anwendung für die Verwendung des BAM-Interceptors für WCF konfigurieren können, müssen Sie die BAM-Eventing-Software mithilfe des BizTalk Server Setup-Programms installieren. Weitere Informationen zum Installieren der BAM-Eventing-Software und zum Registrieren der Leistungsindikatoren finden Sie unter Installieren der BAM-Eventing Software.
Konfigurieren einer WCF-Anwendung für die Überwachung
Vier Aufgaben müssen abgeschlossen sein, bevor Ihre WCF-Anwendung mit dem Schreiben von BAM-Ereignisinformationen beginnen kann:
Ein Beobachtungsmodell muss mithilfe BizTalk Server BAM-Tools erstellt und dann mit dem BAM-Manager-Befehlszeilentool (bm.exe) bereitgestellt werden.
Sie müssen eine Interceptorkonfigurationsdatei erstellen und mit dem Befehlszeilentool BAM-Manager (bm.exe) bereitstellen.
Der Benutzer, der die Hostanwendung ausführt, muss Mitglied des entsprechenden BAM-Aktivitätsereignisschreibers (bam_<activity>_EventWriter) SQL Server Rollen sein, damit die Anwendung die Informationen zur Interceptorkonfiguration lesen und in die BAM-Aktivitäten schreiben kann.
Die Datei App.config für die Server- und die Clientanwendung muss geändert werden, damit der BAM-Überwachungsdienst geladen wird. Nach dem Ändern der Datei App.config muss die Anwendung neu gestartet werden.
Erst nachdem diese Aufgaben erfolgreich abgeschlossen wurden, werden Ereignisse in der BizTalk Server BAM-Datenbank angezeigt.
Bereitstellen eines Überwachungsmodells
Bevor Sie eine Interceptorkonfigurationsdatei bereitstellen oder BAM-Aktivitäten in der Anwendung erfassen können, müssen Sie ein Überwachungsmodell bereitstellen.
So stellen Sie ein Überwachungsmodell mit „bm.exe“ bereit
Klicken Sie auf Start und dann auf Ausführen , um die Windows-Eingabeaufforderung zu öffnen.
Geben Sie cmd in das Feld Öffnen ein, und klicken Sie dann auf OK.
Wechseln Sie mit dem Befehl zum Wechseln des Verzeichnisses in das Verzeichnis, in dem sich das bereitzustellende Überwachungsmodell befindet. Beispiel : cd c:\businessprocess\Orders.
Stellen Sie das Beobachtungsmodell mit bm.exe bereit:
\Programme (x86)\Microsoft BizTalk Server <VERSION>Tracking\bm.exe deploy-all -Definitionfile:<definitionfile.xml>
Ersetzen Sie <definitionfile.xml> durch den Namen der Beobachtungsmodelldatei, die Sie bereitstellen möchten. Weitere Optionen finden Sie unter Interceptor-Verwaltungsbefehle.
Hinweis
Auf einem System, das Unterstützung für die Benutzerkontensteuerung (User Account Control, UAC) bietet, müssen Sie das Tool möglicherweise mit Administratorrechten ausführen.
Geben Sie Exit ein , und drücken Sie dann die EINGABETASTE, um die Eingabeaufforderung zu schließen.
Bereitstellen einer Interceptorkonfigurationsdatei
Sie müssen eine Interceptorkonfigurationsdatei bereitstellen, bevor die Anwendung BAM-Aktivitäten erfassen kann.
So stellen Sie eine Interceptorkonfigurationsdatei mit „bm.exe“ bereit
Klicken Sie auf Start und dann auf Ausführen , um die Windows-Eingabeaufforderung zu öffnen.
Geben Sie cmd in das Feld Öffnen ein, und klicken Sie dann auf OK.
Wechseln Sie mit dem Befehl zum Wechseln des Verzeichnisses in das Verzeichnis, in dem sich die bereitzustellende Interceptorkonfigurationsdatei befindet. Beispiel : cd c:\businessprocess\Orders.
Stellen Sie die Interceptorkonfigurationsdatei mit bm.exe bereit:
\Programme (x86)\Microsoft BizTalk Server <VERSION>Tracking\bm.exe deploy-interceptor -Filename:<icfile.xml>
Ersetzen Sie <icfile.xml> durch den Namen der Interceptorkonfigurationsdatei, die Sie bereitstellen möchten.
Hinweis
Sie können das Flag -Force:True verwenden, um vorhandene Ereignisquellen mit demselben Namen wie die in Der Interceptorkonfigurationsdatei zu überschreiben. Stellen Sie in diesem Fall sicher, dass Sie die vorhandene Konfiguration mithilfe des Befehls get-interceptor sichern. Wenn Sie das Kennzeichen -Force:True verwenden, werden u. U. Interceptorkonfigurationen gelöscht, die auf die überschriebenen Ereignisquellen verweisen.
Hinweis
Auf einem System, das Unterstützung für die Benutzerkontensteuerung (User Account Control, UAC) bietet, müssen Sie das Tool möglicherweise mit Administratorrechten ausführen.
Geben Sie Exit ein , und drücken Sie dann die EINGABETASTE, um die Eingabeaufforderung zu schließen.
Wenn Sie Ihre WCF-Anwendung bereits bereitgestellt haben, wird die neue Konfiguration erst im nächsten Abrufintervall geladen. Wenn Sie jedoch die Anwendung konfigurieren und neu starten, wird die Konfiguration sofort übernommen.
Hinzufügen des Benutzers zur entsprechenden Rolle für die BAM-Aktivität
Im BAM Interceptor Framework werden aktivitätsbasierte SQL Server-Rollen verwendet, um den Zugriff auf Aktivitäten und Konfigurationsinformationen zu steuern. Sie müssen das Konto des Benutzers, der die WCF-Anwendung ausführt, den entsprechenden Rollen für BAM-Aktivitäten in der Datenbank BAMPrimaryImport hinzufügen.
Konfigurieren der Windows Communication Foundation-Anwendung zum Laden des BAM-Überwachungsdiensts
Wenn Sie die Anwendung so konfigurieren möchten, dass der BAM-Überwachungsdienst geladen wird, fügen Sie der Datei App.config für die Server- oder Clientanwendung einige Zeilen hinzu.
Um die BAM-Nachverfolgung in Ihrem WCF-Server oder Ihrer Clientanwendung zu aktivieren, müssen Sie die App.config Konfigurationsdatei so ändern, dass sie eine zusätzliche Endpunktverhaltens- und Verhaltenserweiterung enthält, und ein Verhaltenskonfigurationsattribut hinzufügen. Die Vorlagen für Dienst und Client weisen ähnliche Formate auf.
Beachten Sie beim Konfigurieren der WCF-Anwendung Folgendes. Wenn in der Datei App.config mehrere BAM-Endpunktverhalten für dieselbe Anwendung, d. h. für denselben Client oder Dienst, definiert sind, werden von BAM folgende Aktionen ausgeführt:
Wenn die Verbindungszeichenfolgen nicht übereinstimmen, wird eine Ausnahme ausgelöst.
Wenn die Abrufintervalle nicht übereinstimmen, wird ein Intervall ausgewählt und der Vorgang fortgesetzt. Zur Entwurfszeit kann kein Einfluss darauf genommen werden, welches Abrufintervall ausgewählt wird.
Hinweis
Wenn die Verbindungszeichenfolgen identisch sind, d. h. auf denselben Computer verweisen, wird die BAM-Verarbeitung normal fortgesetzt.
Das folgende Beispiel App.config Vorlage ist für eine WCF-Serveranwendung konfiguriert. Er definiert einen Endpunkt, der ein benutzerdefiniertes Verhalten "bamEndpointBehavior" verwendet, das für die Verwendung des WCF-Interceptors konfiguriert ist.
<system.serviceModel>
<services>
<service name="Service.CreditCardAuthorization">
<!-- The endpoint will use the "bamEndpointBehavior" -->
<endpoint address="http://localhost:8081/CreditCardService" contract="Service.ICreditCardAuthorization" name="CreditCardEndPoint" binding ="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding_ICreditCardAuthorization" behaviorConfiguration="bamEndpointBehavior"/>
</service>
</services>
<bindings>
<wsDualHttpBinding>
<binding name="wsDualHttpBinding_ICreditCardAuthorization" transactionFlow="true" />
</wsDualHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<!-- Define a new behavior named "bamEndpointBehavior" -->
<behavior name="bamEndpointBehavior">
<BamEndpointBehaviorExtension ConnectionString="Initial Catalog=BamPrimaryImport;Data Source=MyMachine;Integrated Security=SSPI;" InterceptorConfigurationPollingInterval="1500" />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<!-- Define a new enpoint behavior extension using WCF interceptor -->
<add name="BamEndpointBehaviorExtension" type="Microsoft.BizTalk.Bam.Interceptors.Wcf.BamEndpointBehavior, Microsoft.BizTalk.Bam.Interceptors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</behaviorExtensions>
</extensions>
</system.serviceModel>
Sie müssen an dieser Vorlage einige geringfügige Änderungen vornehmen, bevor Sie sie in Ihrer eigenen Datei App.config verwenden können.
So verwenden Sie diese Vorlage in der Datei „App.config“ für den WCF-Dienst
Öffnen Sie die zu der Anwendung gehörende Datei App.config in Notepad.exe oder einem anderen Text-Editor.
Fügen Sie dem Element mithilfe des folgenden XML die WCF BamEndpointBehavior-Verhaltenserweiterung hinzu
extensions
:<behaviorExtensions> <add name="BamEndpointBehaviorExtension" type="Microsoft.BizTalk.Bam.Interceptors.Wcf.BamEndpointBehavior, Microsoft.BizTalk.Bam.Interceptors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> </behaviorExtensions>
Hinweis
Die Verhaltenserweiterung heißt BamEndpointBehaviorExtension. Sie kann entsprechend den Anforderungen der Umgebung geändert werden.
Fügen Sie dem Element mithilfe des folgenden XML-Elements ein neues Endpunktverhalten hinzu
behaviors
, das die neue Verhaltenserweiterung verwendet. Durch die Verhaltenserweiterung werden eine Verbindungszeichenfolge und ein Abrufintervall in Sekunden angegeben.<endpointBehaviors> <behavior name="bamEndpointBehavior"> <BamEndpointBehaviorExtension ConnectionString="Initial Catalog=BamPrimaryImport;Data Source=MyMachine;Integrated Security=SSPI;" InterceptorConfigurationPollingInterval="1500" /> </behavior> </endpointBehaviors>
Ersetzen Sie den Wert für Data Source durch den Namen des Computers, der die Datenbank BamPrimaryImport in der Umgebung hostet. Ändern Sie das Abrufintervall entsprechend Ihren Anforderungen. eine höhere Zahl bedeutet, dass der WCF-Interceptor länger benötigt, um Konfigurationsänderungen zu erkennen. Wenn Sie den Namen der Verhaltenserweiterung geändert haben, ersetzen Sie BamEndpointBehaviorExtension durch diesen Namen.
Hinweis
Der Name des Verhaltens lautet bamEndpointBehavior. Dieser kann entsprechend den Anforderungen Ihrer Umgebung geändert werden.
Hinweis
Vermeiden Sie die Verwendung einer Kombination aus Benutzername und Kennwort im Klartext, wenn Sie angeben
ConnectionString
. Dadurch würden Sie die Sicherheit des Datenbankservers gefährden.Hinweis
Sie müssen einen
PollingIntervalSec
größer als oder gleich 5 (Sekunden) angeben. Wenn Sie einen niedrigeren Wert angeben oder dasPollingIntervalSec
Element weglassen, wird ein Fehler ausgelöst, und die Überwachung wird nicht konfiguriert.Fügen Sie das
behaviorConfiguration
Attribut dem Endpunkt hinzu, den Sie nachverfolgen möchten, und geben Sie den Namen des neuen Verhaltens an:<endpoint address="http://localhost:8081/CreditCardService" contract="Service.ICreditCardAuthorization" name="CreditCardEndPoint" binding ="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding_ICreditCardAuthorization" behaviorConfiguration="bamEndpointBehavior"/>
Hinweis
Wenn Sie einen anderen Namen für das Verhalten verwendet haben, geben Sie diesen stattdessen an.
Sie können die Verhaltenskonfiguration auf mehrere Endpunkte anwenden.
Speichern Sie die geänderte Datei App.config, und starten Sie die Anwendung neu.