Microsoft SharePoint 2010: Sandkastencode für Profil und Paket

Das richtige Verpacken und Erstellen des richtigen Profils zum Ausführen einer Sandkastenumgebung ermöglicht Ihnen mehr Kontrolle über Ressourcenverwendung und Skalierbarkeit.

V. Gnanasekaran

Wenn Sie eine Enterprise-Klasse Web-Lösung auf Basis von SharePoint 2010 erstellen, sind Leistung optimieren und testen ein wichtiger Bestandteil des Entwicklungszyklus. Wenn Ihre Lösung eine Menge von benutzerdefiniertem Code enthält, dann ist es nicht nur wichtig, unerlässlich.

SharePoint bietet Ihnen viele Anpassungsoptionen, wie z. B. WebParts, benutzerdefinierten Empfänger, benutzerdefinierte Aktionen und so weiter. Sie können auch Optionen für die verschiedenen Modelle zu geben Ihnen mehr Kontrolle über Leistung, Sicherheit und hohe Verfügbarkeit. Eine "Sandbox-Lösung" ist eine solche Ausführungsmodell.

Sie können ein Leistungsprofil der Codeblöcke erstellen, die Sie erstellen in eine Sandbox-Umgebung mithilfe des Visual Studio 2010 eigenständigen Profilers ausführen. Ein weiterer wichtiger Faktor, der Leistung und Skalierbarkeit von Sandbox Lösungen auswirkt ist die Art und Weise Sie verpacken und Bereitstellen von benutzerdefinierten Code-Blöcke wie z. B. WebParts. Sie können diese Komponenten geschützten Diensten über mehrere Server, vor allem in der Enterprise-Klasse Serverfarmen nutzen verpacken.

SharePoint 2010 hat verschiedene Instrumente, um potenzielle Engpässe in den benutzerdefinierten Code identifizieren durch die Untersuchung der Zeitaufwand für die Ausführung von Code; Aufrufe an externe Ressourcen wie z. B. Webdienste, Datenbanken, Datenbankabfragen und Anzahl der Abfragen ausgelöst werden; und so weiter. Das Developer Dashboard können Sie verstehen, die unterschiedliche Codeblöcke Zeit nehmen zum Ausführen. Außerdem können Sie die Ausführungszeit mit Unified Logging Service (ULS) Protokolle analysieren.

Bestimmte Einschränkungen

Das Developer Dashboard wird nicht in der Sandbox Lösungen nutzbare Informationen bieten. Es wird nicht auch jeder Ausführungsinformationen über die Sandbox-Lösung im ULS-Protokoll zur Verfügung. Sandkasten-Komponenten sind nicht berechtigt, Informationen in den ULS-Protokollen zu protokollieren. Da SharePoint 2010 nicht Ihnen helfen, das Verhalten der benutzerdefinierten Code-Blöcke in eine Sandbox-Umgebung zu verstehen, müssen Sie die Profilerstellung Funktionen von Visual Studio Team System2010 abhängen.

Wenn es darum geht, code, Profilerstellung, haben Sie grundsätzlich zwei Möglichkeiten: Performance Tests der Projektvorlagen in Visual Studio 2010 oder einen Visual Studio Team System eigenständigen Profiler verwenden. Wenn Sie Performance-Tests der Visual Studio-Projektvorlagen sind, sollten Sie einrichten Ihren Source-Code mit allen erforderlichen Abhängigkeiten in der gleichen Maschine dem Visual Studio Team System (VSTS) 20 Ultimate Edition installiert ist. Sie werden nur in der Lage, dies in der Entwicklungsumgebung verwenden. Denken Sie daran, dass es nicht im Zusammenhang mit der Ausführung von Code in einer Sandbox-Umgebung Informationen erfassen, noch es mit dem Hostheader-Websitesammlungen funktioniert.

Wenn Sie einen Visual Studio Team System eigenständigen Profiler verwenden, müssen Sie nicht den Quellcode. Es arbeitet mit kompilierte Ausgabe. Können Sie es im upstream Umgebungen — wie Bühne, User Acceptance Testing (UAT), in der Nähe von Produktion und so weiter — wo Entwicklungstools installieren ist nicht zulässig. Diese Methode gibt Ihnen auch einige Flexibilität, so dass Sie alle Prozesse abgesehen von W3WP.exe profilieren können. Dadurch können Sie Details im Zusammenhang mit Ausführung von Code in einer Sandbox-Umgebung in Bezug auf Speicher und Ausführungszeit zu extrahieren.

Im Falle von Code-Blöcken in eine Sandbox-Umgebung funktioniert die zweite Option gut, wie es Ihnen die Flexibilität gibt, jede Prozessprofils als erforderlich. Bei einem eigenständigen Profiler haben Sie zwei Möglichkeiten:

  1. VSAspNetCmd.exe, die für die Profilerstellung W3WP.exe ausschließlich gemeint ist.
  2. VSPerfCmd.Exe, die Sie verwenden können, jeder Prozess ein Profil.

Die Berichte, dass diese Profiler generiert wird geben Ihnen ausführlichere Informationen als das Developer Dashboard, einschließlich Informationen der "Ebene". Dies sind Informationen über die Anfragen kommen in Maschinen und Netzwerke für externe Ressourcen wie z. B. die Datenbank Sandbox Lösung.

In der Sandbox Lösung können Sie zwei Optionen: Den gesamten Code in einer Sandbox-Prozess ausführen oder mithilfe eines voll vertrauenswürdige Proxys (Hybrid). Manchmal, um die Einschränkungen des geschützten Prozesses zu vermeiden, sollten Sie den Code in eine voll vertrauenswürdige Proxy ausführen. In beiden Fällen wird nicht die Ausführung von Code in W3WP.exe, geschehen, denn das ist, was passiert in Bauernhof-basierte, heraus-von-dkasten Lösungen und benutzerdefinierten Code. Daher wird nicht Profilerstellung W3WP.exe alle für die Sandbox-Codeblöcke Ergebnissen.

Basierend auf die Option, die Sie wählen, wird die Ausführung von Code für die Sandbox-Lösung SPUCWorkerProcess.exe oder SPUCWorkerProcessProxy.exe geschehen. Um Profil Ausführung von Code und Code Verhalten verstehen, sind diese beiden Prozesse basierend auf dem gewählten Modell profiliert. Bei einer Sandbox finden Sie SPUCWorkerProcess.exe Profil. Bei der Hybridansatz voller Vertrauenswürdigkeit Proxy verwenden werden Sie ein SPUCWorkerProcessProxy.exe Profil.

Wie jeder Prozess benötigt ein Profil "VSPerCMD.exe" ausgelegt ist, können Sie es SPUCWorkerProcess.exe und SPUCWorkerProcessProxy.exe Prozesse Profil. Dies generiert ausführliche Informationen, die Ihnen weitere Informationen über die Ausführung von Code in einer Sandbox-Umgebung in Bezug auf Speicher und Ausführungszeit hilft.

Profilerstellung für Sandbox Code

Wenn Profilerstellung Sandbox Code, haben Sie zwei Möglichkeiten: Sampling und Instrumentation. Stichproben geben Ihnen Informationen auf einer höheren Ebene. Instrumentierung wird bevorzugt, wenn Sie eingehende Analyse benötigen. In der Regel Probenahme für gemeinsame Code-Profilerstellung Anforderungen genügt.

Hier ist die Reihenfolge der Befehle zum Ausführen eines Profils. Zuerst müssen Sie zum Einrichten der erforderlichen Umgebungsvariablen:

VSPerfClrEnv /globalsampleon

Starten Sie den Computer neu, und dann verwenden Sie den folgenden Befehl:

VSPerfClrEnv /globalinteractionon

Der Befehl "Globalsampleon" wird das Profil Stichproben durchführen. Der Befehl "Globalinteractionon" ermöglicht den Profiler, die die Ebene Interaktion Daten sammeln. Nach dem Festlegen dieser Umgebungsvariablen, starten Sie den Rechner.

Der Profiler nicht in die Ebene Informationen konsistent. Also wenn Stufe Informationen nicht verfügbar ist, müssen Sie diese Variablen einrichten und starten Sie den Computer neu. Das ist das natürliche Verhalten der aktuellen Version des Profilers.

Im nächsten Schritt nach dem Neustart die Maschine, richten Sie den Profiler mit Ausgabedateinamen und Probenahme.

Die jeweilige Web-Anwendung zu starten. Die Prozess-ID des jeweiligen Prozesses für diese Anwendung zu identifizieren — wenn mehrere Web-Anwendungen auf diesem Computer ausgeführt werden – wenden Sie dann den folgenden Code:

VSPerfCmd /Start:Sample /Output:<FILE_NAME>.vsp /user:everyone /CrossSession

Nächste, basierend auf der Ausführungsmodell Sie sich entscheiden, identifizieren "SPUCWorkerProcess.exe" oder "SPUCWorkerProcessProxy.exe" und den Profiler an den ausgewählten Prozess angehängt werden:

VSPerfCmd /Attach:<PROCESS-ID>

Aktionen Sie Benutzer-die Webanwendung:

VSPerfCmd /Detach:<PROCESS-ID> VSPerfCmd /Shutdown

Wenn Sie Fragen im Zusammenhang mit Symbolen gegenüberstehen, fügen Sie dann die Symbole zu den Berichten:

VSPerfReport.exe /summary:all /packsymbols <ReportName.VSP>

Schließlich setzen der Umgebungsvariablen:

vsperfclrenv /globaloff

Sie können die Berichte, dass diese Profiler generiert Visual Studio 2010 Ultimate Edition "heißen Pfade" identifizieren und verstehen das Verhalten des Codes in eine Sandbox-Umgebung öffnen. Dies hilft dabei, die geeignete Korrekturmaßnahme zur Leistungsoptimierung.

Stellen Sie sicher, dass die Visual Studio-Umgebung mit den korrekten Symbolen eingerichtet ist, öffnen Sie den Bericht ohne Informationsverlust. In den Maschinen mit eigenständigen Profiler zusammen mit einer beliebigen Edition von Visual Studio 2010 (mit Ausnahme von Ultimate) installiert können Fehler auftreten. Es ist ratsam, nur eigenständigen Profiler installieren.

Lösung verpacken

Wenn es darum geht, Sandkasten Verpackungslösungen, müssen Sie die Ebene Konfigurationen berücksichtigen. Ebenen in Sandbox Lösungen bieten eine Möglichkeit, Gruppe Sandbox Lösungen basierend auf Ressourcenanforderungen. Durch Konfigurieren von Tiers für weitere Prozesse ausführen, können Sie weitere Sandbox Lösungen gleichzeitig innerhalb einer Serverfarm ausführen. Sie können maximal 20 Worker-Prozesse über alle Ebenen auf einem einzelnen Server haben.

Die Anzahl der Verbindungen pro Prozess sollte kleiner oder gleich der Anzahl von Anwendungsdomänen. Die Anzahl der Verbindungen auch weniger für das Tier sein sollte, die Eigenschaft "ResourceMaxValue" auf einen höheren Wert festgelegt ist.

Sie können nur eine Sandbox-Lösung jederzeit in jeder Anwendungsdomäne ausgeführt. Die Anzahl der Anwendungsdomänen stellt die Anzahl von Sandbox-Lösungen, die Sie jederzeit laden können. Eine einzelne WSP-Datei stellt eine Sandbox-Lösung dar. Nach dem Hochladen eines WSP Paket, können Sie sehen, dass es mit den anderen Sandbox Lösungen im Lösungskatalog aufgeführt.

Sandbox-Lösungen können Sie im lokalen Modus oder im remote-Modus konfigurieren. Verwenden Sie remote-Modus in Szenarien, in denen widmet der Farm Server für Sandkasten Codeausführung und Skalierbarkeit.

Also, wenn alle Webparts und benutzerdefinierte Code-Blöcke als Teil eines einzelnen Pakets verpackt sind, dann das Paket in einer Ebene in eine Anwendungsdomäne geladen wird. Die anderen Anwendungsdomänen bleiben in der gleichen Ebene und wird nicht verwendet werden, so dass es Lastverteilung über Ebenen und Server werden nicht. Dies kann in der Leistung und Skalierbarkeitsengpässe führen.

Sandbox-Code-Blöcke, die in mehreren Paketen verpackt führt mehrere Sandbox Lösungen. Dies bietet folgende Vorteile:

  1. Haben mehrere Sandbox Lösungen verbessern hilft, Überwachung von Ressourcen. Dadurch können Sie erkennen, welche Sandbox-Lösung in Ressourcen-Verbrauch hoch ist. Dann können Sie für jede Chance zur Optimierung des Ressourcenverbrauchs für diese bestimmten Sandbox-Lösung suchen. Dies hilft auch bei der Planung der Ebene. Nachdem alle Sandkasten-Codeblöcke in eine einzelne Projektmappe oder Paket geben nicht Sie alle Details auf die Ressourcenverwendung des bestimmten Webparts oder Sandbox Code-Blöcke.
  2. Können Sie eine Tier-Konfiguration basierend auf der durchschnittlichen Ressourcennutzung der einzelnen Sandbox Lösungen, so dass es richtige Auslastung der Serverressourcen führen wird.
  3. Der Bereitstellungsprozess wird einfacher sein. Einzelnen Webparts und Gruppen können bereitgestellt oder leicht aktualisiert, statt die gesamte Lösung für ein kleines Update für ein bestimmtes WebPart bereitstellen.

Basierend auf diesen Faktoren, ist es besser, logisch gruppieren, Webparts und andere Code-Blöcke für mehrere Projektmappen Pakete statt Verpacken sie alle in einer einzigen Sandbox-Lösung. Richtige geschützten Codeblock Verpackung in verschiedenen Projektmappen Pakete werden dazu beitragen, Ihnen mehr Einblick in die Ressourcenverwendung für verschiedene geschützten Codeblöcken.

Haben Sie eine bessere Sicht in der Ressourcennutzung, können Sie die Profilerstellung Übung um potenzielle Bereiche der Verbesserung in den verschiedenen Teilen des Code-Blöcke (hinsichtlich der Leistung) und Code-Optimierung Aktivitäten durchzuführen. Sie können auch die Leistung, Skalierbarkeit und effektive Ressourcennutzung verbessern.

V. Gnanasekaran

V. Gnanasekaran hat mehr als 14 Jahren Erfahrung als ein TOGAF 9 Certified Enterprise Architect und Microsoft Consulting Services India, wo er architektonische Beratung für Kunden bietet. Seine aktuellen Schwerpunkten gehören SharePoint, SQL Server OLAP/OLTP und Windows Azure. Er veröffentlichte Technologieartikeln in verschiedenen Zeitschriften einschließlich The Architecture Journal und CodeProject. Er Blogs auf gnanasekaran.com.

Verwandter Inhalt