Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Computeranwendungsserver wie BizTalk Server sind so konzipiert, dass bestimmte Aufgaben im Auftrag von Benutzern ausgeführt werden. Diese Aufgaben werden als Clientanforderungen initiiert, die als Nachrichten an den Anwendungsserver gesendet werden, die einem Standard entsprechen, den der Anwendungsserver versteht, über ein Protokoll, das der Anwendungsserver versteht. Beispielsweise können Clients die Verarbeitung von E-Mails initiieren, indem Internet-E-Mail-Nachrichten über das SMTP-Protokoll an einen E-Mail-Server gesendet werden. Ebenso verarbeiten Webserver Client-HTML- oder ASP-Anforderungen, Datenbankserver verarbeiten CLIENT-SQL-Anforderungen und BizTalk Server können Clientnachrichten verarbeiten, die in Übereinstimmung mit mehreren Branchennachrichtenstandards mit zahlreichen Branchenstandardprotokollen formatiert sind. Die Workloadkapazität eines Anwendungsservers wird in der Regel anhand der Anzahl der Nachrichten gemessen, die der Anwendungsserver in einem bestimmten Zeitraum verarbeiten kann. Die Arbeitsauslastungskapazität von BizTalk Server wird ebenfalls als die durchschnittliche Anzahl der "pro Sekunde empfangenen Dokumente", "pro Sekunde verarbeitete Dokumente" und/oder "Orchestrierungen abgeschlossen pro Sekunde" über einen längeren Zeitraum gemessen, z. B. ein beschäftigter Arbeitstag oder sogar eine Arbeitswoche. Visual Studio 2010-Auslastungstestfunktionen können ein Ladeprofil von bis zu Hunderten von Benutzern simulieren, die gleichzeitig auf eine Serveranwendung zugreifen. Diese Auslastungstestfunktion bietet Echtzeitmetriken für ausgewählte Key Performance Indicators sowie die Möglichkeit, diese Metriken in einer Datenbank für die zukünftige Analyse zu speichern. In diesem Dokument wird die Verwendung von Visual Studio Test-Projekten zum Zwecke des Ladentests einer BizTalk Server-Anwendung, einschließlich der Erstellung von Komponententests, der Erstellung von Auslastungstests und der Konfiguration von Auslastungstests zum Erfassen von Leistungsindikatorendaten, die erforderlich sind, um den maximalen nachhaltigen Durchsatz (MST) einer BizTalk Server-Anwendung zu ermitteln, festgelegt.
Erstellen eines Visual Studio-Komponententests zum Übermitteln von Dokumenten an BizTalk Server
Ein Visual Studio Unit-Test verweist auf den Microsoft.VisualStudio.TestTools.UnitTesting (https://go.microsoft.com/fwlink/?LinkID=132293)-Namespace, der mehrere Klassen bereitstellt, die Unterstützung für Komponententests bereitstellen. Der Namespace UnitTesting (https://go.microsoft.com/fwlink/?LinkID=132293) enthält insbesondere die Klasse Microsoft.VisualStudio.TestTools.UnitTesting.TestContext (https://go.microsoft.com/fwlink/?LinkID=208233) zum Speichern von Informationen, die für Komponententests bereitgestellt werden, und die Klasse "Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute (https://go.microsoft.com/fwlink/?LinkID=208235)" wird zum Definieren von Testmethoden verwendet. Zum Ladentest von BizTalk Server sollten Testmethoden die zu ladende Nachricht und den Endpunkt/die URL angeben, an den die Nachricht gesendet werden soll. Der Endpunkt/die URL dient dann als Nachrichteneinstiegspunkt in BizTalk Server, wenn ein entsprechender BizTalk-Empfangsort erstellt wird.
Zur Veranschaulichung beschreibt der Beispielcode in diesem Thema Testmethoden, die die System.ServiceModel.ChannelFactory(TChannel) (https://go.microsoft.com/fwlink/?LinkID=208238)-Klasse verwenden, um Nachrichten an Dienstendpunkte zu senden, die den WCF net.tcp-Endpunkt verwenden und vom BizTalk-WCF-Custom Empfangsadapter überwacht werden. Dienstendpunkte für Testnachrichten werden in der Anwendungskonfigurationsdatei (app.config) des Testprojekts definiert.
Weitere Informationen zu Visual Studio-Komponententests finden Sie unter Anatomy of a Unit Test (https://go.microsoft.com/fwlink/?LinkID=208232).
Führen Sie die schritte in den folgenden Abschnitten aus, um ein Testprojekt mit einem Komponententest zu erstellen, um Dokumente an einen oder mehrere BizTalk Server-Computer zu übermitteln. Diese Schritte wurden mit Visual Studio 2010 Ultimate Edition abgeschlossen.
Festlegen von Visual Studio 2010-Testprojektoptionen
Starten Sie Visual Studio 2010 Ultimate Edition. Klicken Sie auf "Start", zeigen Sie auf "Alle Programme", zeigen Sie auf Microsoft Visual Studio 2010 , und klicken Sie dann auf Microsoft Visual Studio 2010.
Klicken Sie in Visual Studio 2010 auf "Extras " und dann auf "Optionen ", um das Dialogfeld "Optionen " anzuzeigen.
Klicken Sie, um die Testtools zu erweitern und dann auf "Projekt testen " zu klicken, um Optionen zum Erstellen neuer Testprojekte anzuzeigen.
Legen Sie die Standard-Testprojektsprache fest: auf Visual C#-Testprojekt.
Wählen Sie unter der Option zum Auswählen der Dateien aus, die jedem neuen Testprojekt hinzugefügt werden sollen. Wählen Sie standardmäßig visual C#-Testprojekt aus, und deaktivieren Sie alle Testtypen für Visual C#-Testprojekte mit Ausnahme von Komponententest.
Klicken Sie auf OK, um das Dialogfeld Optionen zu schließen.
Erstellen Sie eine neue Visual Studio 2010-Projektmappe mit einem Testprojekt
Erstellen Sie den Ordner "C:\Projects " auf dem Visual Studio 2010 Ultimate-Computer.
Klicken Sie in Visual Studio 2010 auf "Datei", zeigen Sie auf "Neu", und klicken Sie auf "Projekt ", um das Dialogfeld " Neues Projekt " anzuzeigen.
Klicken Sie unter "Installierte Vorlagen ", um Visual C# zu erweitern, und klicken Sie auf "Testen".
Geben Sie unten im Dialogfeld "Neues Projekt " die folgenden Optionen an:
Name:BTSLoad
Location:C:\Projects\
Lösungsname:LoadTest
Stellen Sie sicher, dass die Option " Verzeichnis für Lösung erstellen " aktiviert ist, und klicken Sie dann auf "OK".
Fügen Sie dem BTSLoad-Projekt einen Ordner hinzu; Dieser Ordner enthält Testnachrichten, die an BizTalk Server übermittelt werden sollen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das BTSLoad-Projekt, zeigen Sie auf "Hinzufügen", und klicken Sie auf "Neuer Ordner". Ein Ordnersymbol mit dem hervorgehobenen Text NewFolder1 wird unter dem BTSLoad-Projekt angezeigt, geben Sie "TestMessages" ein, um den hervorgehobenen Text zu ändern, und drücken Sie die EINGABETASTE , um den Ordner C:\Projects\LoadTest\BTSLoad\TestMessages zu erstellen.
Aktualisieren des Codes im Testprojekt und Hinzufügen einer Anwendungskonfigurationsdatei zum Testprojekt
Klicken Sie im Projektmappen-Explorer, um UnitTest1.cs auszuwählen und den vorhandenen Code durch den folgenden Beispielcodeeintrag zu ersetzen:
#region Using Directives using System; using System.IO; using System.Diagnostics; using System.Text; using System.Configuration; using System.Collections.Generic; using System.Linq; using System.Xml; using System.ServiceModel; using System.ServiceModel.Channels; using Microsoft.VisualStudio.TestTools.UnitTesting; #endregion namespace Microsoft.BizTalk.Samples { [TestClass] public class BTSLoadTest { #region Constants private const int MaxBufferSize = 2097152; private const string Source = "BTS Load Test"; private const string Star = "*"; private const string TestMessageFolderParameter = "testMessageFolder"; private const string TestMessageFolderDefault = @"C:\Projects\LoadTest\BTSLoad\TestMessages"; private const string TestMessageFolderFormat = @"Test Message Folder = {0}"; private const string TestXmlDocument = "testxmldocument.xml"; #endregion #region Private Instance Fields private TestContext testContextInstance; #endregion #region Private ThreadStatic Fields [ThreadStatic] private static ChannelFactory<IRequestChannel> channelFactory; [ThreadStatic] private static IRequestChannel channel = null; [ThreadStatic] private static byte[] buffer = null; #endregion #region Private Static Fields private static string testMessageFolder = null; #endregion #region Public Instance Constructor public BTSLoadTest() { } #endregion #region Public Static Constructor static BTSLoadTest() { try { testMessageFolder = ConfigurationManager.AppSettings[TestMessageFolderParameter]; if (string.IsNullOrEmpty(testMessageFolder)) { testMessageFolder = TestMessageFolderDefault; } } catch (Exception ex) { Trace.WriteLine(ex.Message); EventLog.WriteEntry(Source, ex.Message, EventLogEntryType.Error); } } #endregion #region Public Properties /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } #endregion #region Test Methods [TestMethod] public void BTSMessaging() { InvokeBizTalkReceiveLocation("BTSMessagingEP", testMessageFolder, TestXmlDocument, MessageVersion.Default, SessionMode.Allowed); } [TestMethod] public void BTSMessaging2() { InvokeBizTalkReceiveLocation("BTSMessagingEP2", testMessageFolder, TestXmlDocument, MessageVersion.Default, SessionMode.Allowed); } [TestMethod] public void BTSOrchestration() { InvokeBizTalkReceiveLocation("BTSOrchestrationEP", testMessageFolder, TestXmlDocument, MessageVersion.Default, SessionMode.Allowed); } #endregion #region Helper Methods public void InvokeBizTalkReceiveLocation(string endpointConfigurationName, string requestMessageFolder, string requestMessageName, MessageVersion messageVersion, SessionMode sessionMode) { XmlTextReader xmlTextReader = null; Message requestMessage = null; Message responseMessage = null; try { if (channel == null || channel.State != CommunicationState.Opened) { channelFactory = new ChannelFactory<IRequestChannel>(endpointConfigurationName); channelFactory.Endpoint.Contract.SessionMode = sessionMode; channel = channelFactory.CreateChannel(); } if (buffer == null) { string path = Path.Combine(requestMessageFolder, requestMessageName); string message; using (StreamReader reader = new StreamReader(File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read))) { message = reader.ReadToEnd(); } buffer = Encoding.UTF8.GetBytes(message); } MemoryStream stream = new MemoryStream(buffer); xmlTextReader = new XmlTextReader(stream); requestMessage = Message.CreateMessage(messageVersion, Star, xmlTextReader); TestContext.BeginTimer(requestMessageName); responseMessage = channel.Request(requestMessage); } catch (FaultException ex) { HandleException(ex); throw; } catch (CommunicationException ex) { HandleException(ex); throw; } catch (TimeoutException ex) { HandleException(ex); throw; } catch (Exception ex) { HandleException(ex); throw; } finally { TestContext.EndTimer(requestMessageName); CloseObjects(xmlTextReader, requestMessage, responseMessage); } } private void HandleException(Exception ex) { try { Trace.WriteLine(ex.Message); EventLog.WriteEntry(Source, ex.Message, EventLogEntryType.Error); } catch (Exception) { } } private void CloseObjects(XmlTextReader xmlTextReader, Message requestMessage, Message responseMessage) { try { if (xmlTextReader != null) { xmlTextReader.Close(); } if (requestMessage != null) { requestMessage.Close(); } if (responseMessage != null) { responseMessage.Close(); } } catch (Exception) { } } #endregion } }
Fügen Sie dem Testprojekt eine Anwendungskonfigurationsdatei hinzu:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das BTSLoad-Projekt, zeigen Sie auf "Hinzufügen" , und klicken Sie auf "Neues Element".
Klicken Sie im Dialogfeld " Neues Element hinzufügen " unter "Installierte Vorlagen" auf "Allgemein".
Klicken Sie in der Liste der angezeigten Elemente, um die Anwendungskonfigurationsdatei auszuwählen, und klicken Sie dann auf "Hinzufügen".
Wählen Sie im Projektmappen-Explorer die app.config Datei aus, und ersetzen Sie den Inhalt der app.config Datei durch den folgenden Beispielcode:
Von Bedeutung
Für jeden in dieser Datei definierten Clientendpunkt ist BizTalk Server Computer ein Platzhalter für den tatsächlichen Namen der BizTalk Server-Computer, für die Sie Ladetests durchführen.
<configuration> <system.serviceModel> <!-- Bindings used by client endpoints --> <bindings> <netTcpBinding> <binding name="netTcpBinding" closeTimeout="01:10:00" openTimeout="01:10:00" receiveTimeout="01:10:00" sendTimeout="01:10:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="1048576" maxBufferSize="10485760" maxConnections="400" maxReceivedMessageSize="10485760"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> <security mode="None"> <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" /> <message clientCredentialType="Windows" /> </security> </binding> </netTcpBinding> </bindings> <client> <!-- Client endpoints used to exchange messages with WCF Receive Locations --> <!-- BTSMessagingEP --> <endpoint address="net.tcp://BizTalk Server Computer:8123/btsloadtest" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="System.ServiceModel.Channels.IRequestChannel" name="BTSMessagingEP" /> <endpoint address="net.tcp://BizTalk Server Computer:8123/btsloadtest" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="System.ServiceModel.Channels.IRequestChannel" name="BTSMessagingEP" /> <!-- BTSOrchestrationEP --> <endpoint address="net.tcp://BizTalk Server Computer:8122/btsloadtest" binding="netTcpBinding" bindingConfiguration="netTcpBinding" contract="System.ServiceModel.Channels.IRequestChannel" name="BTSOrchestrationEP" /> </client> </system.serviceModel> <appSettings> <!-- Folder containing test messages --> <add key="testMessageFolder" value="C:\Projects\LoadTest\BTSLoad\TestMessages" /> <add key="ClientSettingsProvider.ServiceUri" value="" /> </appSettings> </configuration>
Klicken Sie in Visual Studio 2010 auf das Menü "Datei ", und klicken Sie dann auf " Alle speichern".
Hinzufügen einer Testnachricht zum Projekt
Für dieses Beispiel werden die Empfangsorte und Sendeports des BizTalk-Servers so konfiguriert, dass sie Pass-Through-Pipelines verwenden und keine Dokumentprüfung durchführen. Führen Sie die folgenden Schritte aus, um dem Projekt eine Testmeldung hinzuzufügen:
Starten Sie Notepad. Klicken Sie auf Start, klicken Sie auf Ausführen, und geben Sie im Dialogfeld Ausführen "Editor" ein.
Kopieren Sie den folgenden Text in Notepad und speichern Sie unter "C:\Projects\LoadTest\BTSLoad\TestMessages\TestXmlDocument.xml"
<BTSLoadTest xmlns="http://Microsoft.BizTalk.Samples.BTSLoadTest"> <MessageText> This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. This is sample message text. </MessageText> </BTSLoadTest>
Editor schließen.
Von Bedeutung
Diese Datei muss unter Verwendung desselben Dateinamens auf jedem Load Test Agent-Computer im selben Pfad gespeichert werden, wenn mehrere Load Test Agent-Computer zum Ladentest verwendet werden.
Hinzufügen erforderlicher Verweise auf das Projekt und Erstellen des Testprojekts
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Ordner "Verweise " für das BTSLoad-Projekt, und klicken Sie dann auf "Verweis hinzufügen".
Klicken Sie im Dialogfeld "Verweis hinzufügen" auf den .NET-Tab und verwenden Sie die STRG+Klick-Kombination von Tastatur und Maus, um die folgenden .NET-Namespaces gleichzeitig auszuwählen:
System.Configuration
System.Runtime.Serialization
System.ServiceModel.Channels
System.ServiceModel
System.Web.Extensions
System.Xml
Nachdem Sie die Namespaces ausgewählt haben, klicken Sie auf "OK ", um diese Assemblys als Verweise auf das BTSLoad-Testprojekt hinzuzufügen.
Klicken Sie mit der rechten Maustaste auf das BTSLoad-Projekt , und klicken Sie dann auf "Erstellen ", um das Projekt in die BTSLoad-Assembly zu kompilieren.