Frage

Ich schreibe einen Webdienst, der Powershell-Skripts (Active Directory, Directory Management usw.) ausführt.

Jetzt, runspace wird pro Webanfrage erstellt.Da die Runspace-Initialisierung zeitaufwändiger Betrieb ist, muss ich oft Module importieren, wie ActivEdirectory, die auch langsamer Betrieb sind.

In diesem Blog-Beitrag Exchange 2007 Empfänger mit C # verwalten, die Runspace-Instanz wird in einem statischen Feld aufbewahrt.

Ich wandere, was wäre, wenn ich Runspace-Instanz in einem statischen Feld halte, würde es Faden sicher sein?Vielleicht gibt es andere Nachteile, es so zu tun?

danke

War es hilfreich?

Lösung

Runspaces sind nicht fadensicher, auch können sie garantieren, dass die von ihnen ausgeführten Skripte entweder sind.

Ich würde vorschlagen, dass Sie ein RunPacePool erstellen und Ihre Web-Service-Warteschlange daran arbeiten lassen. Dies ist eigentlich ziemlich einfach zu tun. Ich habe über IT für v2 ctp3 bloggt, aber die API hat sich nicht für RTM geändert.

http://www.nivot.org/2009/01/22/ Ctp3therunSpaceFactoryandPowerShellacceleratoren.aspx

update:

Wenn Sie jeden Run-Speicher im Pool mit einem oder mehreren Modulen vorladen möchten, verwenden Sie die Überlastung von runspacefactory.createrunSPACEpool (InitialSessionState). Um zu sehen, wie er erstellt und initialisiert wird, siehe:

http://www.nivot.org/2010/05/03/ PowerShell20DeveloperEssentials1InitialisierungTarunPaceWithamodule.aspx

Jedes Mal, wenn Sie eine PowerShell-Instanz erstellen, ordnen Sie den Pool in der RunPacePool-Eigenschaft zu.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top