Sdílet prostřednictvím


Řízení instancí a dotazy na instance

V této ukázce je předveden způsob použití dotazů na úložiště trvalosti a zprostředkovatelů řízení. Zprostředkovatel dotazů zpřístupní rozhraní C# API, které umožňuje uživateli zadávat dotazy na instance uložené v úložišti trvalosti. Zprostředkovatel řízení zpřístupní rozhraní C# API, které umožňuje uživateli vydávat řídicí příkazy (pro pozastavení, obnovení, zrušení, ukončení, odstranění) vůči instanci uložené v úložišti trvalosti.

Tato ukázka obsahuje zkušební službu WF, aplikaci konzoly systému Windows pro zadávání dotazů na instance a aplikaci konzoly systému Windows pro řízení instancí.

Poznámka

Ukázky slouží pouze ke vzdělávacím účelům. Nejsou určeny k použití v provozním prostředí a nebyly v takovém prostředí testovány. Společnost Microsoft neposkytuje k těmto ukázkám technickou podporu.

Požadavky

  • Internetová informační služba (IIS) verze 7.0

  • Inicializované úložiště trvalosti

  • Aplikace Visual Studio 2010 a technologie Windows Server AppFabric ve stejném počítači

Soubory a umístění ukázky

Dokument Readme je umístěn ve složce <Ukázky>\Samples\Hosting\InstanceQueryAndControl.

Všechny soubory, které budete potřebovat ke spuštění této ukázky, jsou umístěny ve složce <Ukázky>\Samples\Hosting\InstanceQueryAndControl:

  • Složka InstanceControl obsahuje všechny soubory, které jsou požadovány pro ukázkovou aplikaci pro řízení instancí.

  • Složka InstanceQuery obsahuje všechny soubory, které jsou požadovány pro ukázkovou aplikaci pro zadávání dotazů na instance.

  • Složka TestWorkflow obsahuje všechny soubory, které jsou požadovány pro ukázkový pracovní postup.

  • Soubor řešení InstanceQueryAndControl.sln definuje řešení, které vytváří všechny artefakty ukázky.

Nastavení a spuštění ukázky

  1. Vytvořte úložiště trvalosti, pokud jste tak již neučinili během nastavení technologie Windows Server AppFabric.

    1. Spusťte soubor C:\Windows\System32\AppFabric\Microsoft.ApplicationServer.Configuration.exe jako správce. V kroku Konfigurace pracovního postupu zaškrtněte políčko Nastavit konfiguraci trvalosti. Jako zprostředkovatele trvalosti vyberte položku sqlStoreProvider a potom klikněte na možnost Konfigurovat.

    2. V okně Konfigurace úložiště trvalosti SQL zaškrtněte políčka Přidat registraci úložiště trvalosti do kořenového souboru web.config a Inicializovat úložiště trvalosti. Jako název databáze úložiště trvalosti zadejte ApplicationServerWorkflowInstanceStore. Kliknutím na tlačítko OK vytvořte databázi úložiště trvalosti se zadaným názvem. Pokud se rozhodnete zvolit jiný název databáze, je třeba změnit ukázkový kód (viz níže).

  2. Pokud spouštíte tuto ukázku v 64bitovém systému, zkopírujte soubor C:\Windows\System32\AppFabric\Microsoft.ApplicationServer.StoreManagement.dll do složky projektu.

    Poznámka

    Tuto cestu použijete v kroku 3.

  3. Sestavte řešení.

    1. Spusťte aplikaci Visual Studio 2010 jako správce: Klikněte na možnosti Start --> Všechny programy --> Microsoft Visual Studio 2010. Pravým tlačítkem myši klikněte na položku Microsoft Visual Studio 2010 a klikněte na příkaz Spustit jako správce.

    2. Otevřete ukázkový projekt: V aplikaci Visual Studio klikněte na možnosti File (Soubor) --> Open (Otevřít) --> Project/Solution (Projekt/Řešení). Vyberte ukázkový soubor řešení <Ukázky>\Samples\InstanceQueryAndControl\InstanceQueryAndControl.sln. Při otevírání souboru zobrazí aplikace Visual Studio upozornění, že adresa URL místního serveru IIS pro ukázkovou službu dosud nebyla vytvořena. Potvrďte vytvoření nového virtuálního adresáře.

    3. Pokud spouštíte tuto ukázku v 64bitovém systému, proveďte pro metodu InstanceQuery a projekt InstanceControl následující kroky: V řádku 17 souboru Program.cs změňte cestu k souboru Microsoft.ApplicationServer.StoreManagement.dll na umístění, do něhož jste zkopírovali soubor v kroku 2.

    4. V této ukázce se předpokládá, že je pracovní postup uložen v databázi trvalosti ApplicationServerWorkflowInstanceStore, jejímž hostitelem je systém SQL Express. V řádcích 44 a 45 souboru Program.cs projektu InstanceControl a v řádcích 37 a 38 souboru Program.cs projektu InstanceQuery můžete změnit název databáze a instanci serveru SQL.

    5. Stisknutím klávesy F6 sestavíte řešení. Tím dojde k automatickému nasazení aplikace TestWorkflow do služby IIS.

  4. Nakonfigurujte aplikaci TestWorkflow.

    1. Spusťte Správce služby IIS: Klikněte na možnosti Start --> Ovládací panely --> Nástroje pro správu --> Správce Internetové informační služby.

    2. Nastavte správný fond aplikací a povolte protokol net.pipe pro web.

      • V okně Připojení ve službě IIS vyberte uzel <Počítač>/Weby/Výchozí web.

      • V okně Akce ve službě IIS klikněte na odkaz Upřesnit nastavení.

      • Změňte nastavení Fond aplikací na možnost ASP.NET v4.0.

      • Změňte nastavení Povolené protokoly na možnost http,net.pipe. Upozornění: Mezi čárkou a řetězcem net.pipe nesmí být mezera.

      • Klikněte na tlačítko OK.

    3. Nastavte správný fond aplikací a povolte protokol net.pipe pro aplikaci.

      • V okně Připojení ve službě IIS vyberte uzel <Počítač>/Weby/Výchozí web/TestWorkflow.

      • V okně Akce ve službě IIS klikněte na odkaz Upřesnit nastavení.

      • Změňte nastavení Fond aplikací na možnost ASP.NET v4.0.

      • Změňte nastavení Povolené protokoly na možnost http,net.pipe. Upozornění: Mezi čárkou a řetězcem net.pipe nesmí být mezera.

      • Klikněte na tlačítko OK.

  5. Vytvořte instance služby TestService.

    1. Spusťte zkušebního klienta služby WCF.

      • V okně Připojení ve Správci služby IIS vyberte uzel <Počítač>/Weby/Výchozí web/TestWorkflow.

      • Klikněte pravým tlačítkem myši na položku TestWorkflow a klikněte na příkaz Přepnout na zobrazení obsahu.

      • Klikněte pravým tlačítkem myši na položku TestService.xamlx a klikněte na příkaz Procházet. Spustí se webový prohlížeč a zobrazí úvodní stránku služby TestService.

      • Podle následujících kroků spusťte zkušebního klienta služby WCF: Spusťte zkušebního klienta služby WCF. Klikněte na možnosti Start --> Všechny programy --> Microsoft Visual Studio 2010 --> Visual Studio Tools --> Visual Studio Command Prompt (2010). Na příkazovém řádku zadejte příkaz wcftestclient.

      • Do řádku adresy URL webového prohlížeče zkopírujte adresu URL služby TestService (například https://localhost/TestWorkflow/TestService.xamlx). Ve zkušebním klientovi služby WCF klikněte pravým tlačítkem myši na položku My Service Projects (Moje projekty služby) a klikněte na příkaz Add Service (Přidat službu). Po zobrazení výzvy k zadání adresy koncového bodu vložte adresu URL služby TestService.

    2. Podle následujících kroků vyvolejte službu TestService:

      • V okně zkušebního klienta služby WCF klikněte dvakrát na uzel Invoke() pod uzlem IService (BasicHttpBinding_IService).

      • Na kartě Invoke klikněte na pole (null) ve sloupci Value (Hodnota). Změňte výběr z možnosti (null) na možnost System.Nullable<System.Int32>. Nyní rozbalte uzel int ve sloupci Name (Název). Zobrazí se nový řádek s hodnotou 0.

      • Klikněte na tlačítko Invoke (Vyvolat). Tím dojde k vytvoření instance služby TestService, která bude spuštěna po dobu 10 minut.

      • Změňte položku Value (Hodnota) na hodnotu 1 a klikněte na tlačítko Invoke (Vyvolat). Tím dojde k vytvoření instance služby TestService, která bude ihned provedena.

      • Změňte položku Value (Hodnota) na hodnotu 2 a klikněte na tlačítko Invoke (Vyvolat). Tím dojde k vytvoření instance služby TestService, která vrátí výjimku a pozastaví se.

  6. Zadejte dotaz na instance.

    1. V aplikaci Visual Studio zkontrolujte, zda je výchozím spouštěcím projektem projekt InstanceQuery, a stisknutím klávesy F5 zadejte dotaz na instance. Otevře se okno konzoly a zobrazí se tři instance, které jste vytvořili v kroku 5.b.

    2. Dále můžete na příkazovém řádku spustit příkaz metody InstanceQuery:

      • Otevřete příkazový řádek. Spusťte příkaz <Ukázky>\Samples\Hosting\InstanceQueryAndControl\InstanceQuery\bin\Debug\InstanceQuery.exe [List|Count|Group].
  7. Proveďte řízení instancí.

    1. Na příkazovém řádku spusťte příkaz <Ukázky>\Samples\Hosting\InstanceQueryAndControl\InstanceControl\bin\Debug\InstanceControl.exe <InstanceId> [Suspend|Resume|Cancel|Terminate|Delete]. Použijte 20místný identifikátor GUID pro ID některé z vytvořených instancí. Použijte 20místný identifikátor GUID pro ID některé z dříve vytvořených instancí.

Odebrání ukázky

  1. Odstraňte z úložiště trvalosti všechny instance služby TestWorkflow. Otevřete okno konzoly pro správu a zadejte následující příkazy:

    > powershell
    > import-module applicationServer
    > Get-ASAppServiceInstance -SiteName "Default Web Site" -VirtualPath "/TestWorkflow/TestService.xamlx" | Remove-AsAppServiceInstance
    

Ukázky

Tato ukázka obsahuje tři projekty:

  • Projekt TestWorkflow implementuje službu WF. Hostitelem služby je služba IIS. Při každém vyvolání služby je vytvořena její nová instance. Při vyvolání služby pomocí zkušebního klienta služby WCF předává uživatel službě určitý parametr. V závislosti na tomto parametru běží instance po dobu 10 minut, dojde k jejímu okamžitému dokončení nebo vrátí výjimku.

  • Projekt InstanceQuery implementuje aplikaci konzoly, která zadá dotaz na úložiště trvalosti a vytiskne na obrazovce výsledky. Je nutné, aby uživatel zadal typ dotazu, parametry dotazu a připojovací řetězec úložiště trvalosti.

  • Projekt InstanceControl implementuje aplikaci konzoly, která vydá řídicí příkaz vůči instanci uložené v úložišti trvalosti. Je nutné, aby uživatel zadal typ příkazu, ID instance a připojovací řetězec úložiště trvalosti.

Ukázková aplikace pro zadávání dotazů na instance

Ukázková aplikace pro zadávání dotazů na instance představuje funkce a rozhraní API zprostředkovatele dotazů technologie AppFabric. Zprostředkovatel dotazů umožňuje uživateli zadávat tři typy dotazů:

  • Získání seznamu instancí, které jsou uloženy v úložišti trvalosti a jejichž vlastnosti odpovídají dotazu. Tento dotaz vrátí pole objektů instanceInfo.

  • Získání počtu instancí, které jsou uloženy v úložišti trvalosti a jejichž vlastnosti odpovídají dotazu. Tento dotaz vrátí hodnotu typu int32.

  • Získání počtu instancí, které jsou uloženy v úložišti trvalosti a jejichž vlastnosti odpovídají dotazu, a jejich seskupení podle definovaných kategorií. Tento dotaz vrátí vyčíslitelnou hodnotu typu groupingResult.

Pro každý typ dotazu poskytuje zprostředkovatel dotazů asynchronní rozhraní API, které dotaz spustí. Vstupní a návratový typ se liší podle typu dotazu. Pro všechny typy dotazů může uživatel určit sadu filtrů dotazů. Ukázka nastaví všechny filtry na hodnotu null, což znamená, že dotaz vybere všechny instance, které se nacházejí v úložišti. Je nutné, aby uživatel kromě parametrů filtrů dotazů zadal připojovací řetězec úložiště trvalosti. V ukázce se předpokládá, že jsou instance umístěny v úložišti DefaultSqlWorkflowInstanceStore. Dále se předpokládá, že databáze ověřuje přístup k databázi pomocí integrovaného zabezpečení systému Windows.

Při žádosti o seznam instancí musí uživatel zadat maximální počet vrácených instancí a způsob, jakým mají být instance seřazeny. Zprostředkovatel dotazů momentálně nabízí pouze řazení podle parametru LastUpdatedTime nebo vrácení neseřazeného seznamu.

Při žádosti o počet seskupených instancí musí uživatel zadat parametry seskupování. Tyto parametry jsou zadávány jako List<GroupingMode>. První element definuje hlavní skupinu a každý následující definuje podskupinu.

Ukázková aplikace pro řízení instancí

Ukázková aplikace pro řízení instancí představuje funkce a rozhraní API zprostředkovatele řízení technologie AppFabric. Zprostředkovatel řízení umožňuje uživateli zadat vůči instanci příkaz pro pozastavení, pokračování, zrušení, ukončení nebo odstranění. Je nutné, aby uživatel kromě typu příkazu a ID instance zadal identifikátory služby SiteName, RelativeApplicationPath a VirtualPath. Tyto parametry jsou vyžadovány pro službu WMS k výpočtu řídicího koncového bodu instance služby. (Identifikátory služby jsou vyžadovány pouze pro příkazy Suspend (Pozastavit), Resume (Pokračovat), Cancel (Zrušit) a Terminate (Ukončit). Příkaz Delete (Odstranit) není vůči řídicímu koncovému bodu zadáván. Místo toho je přímo proveden v databázi.)

Je nutné, aby uživatel kromě parametrů filtrů dotazů zadal připojovací řetězec úložiště trvalosti. V ukázce se předpokládá, že jsou instance umístěny v úložišti DefaultSqlWorkflowInstanceStore. Dále se předpokládá, že databáze ověřuje přístup k databázi pomocí integrovaného zabezpečení systému Windows.

Ukázková aplikace pro řízení instancí zařazuje všechny příkazy Suspend (Pozastavit), Resume (Pokračovat), Cancel (Zrušit) nebo Terminate (Ukončit) do fronty příkazů úložiště trvalosti. Daný příkaz je pak spuštěn později. Pomocí ukázkové aplikace pro zadávání dotazů můžete zobrazit, zda a kdy byl příkaz spuštěn.

Příkaz pro instanci lze zařadit do fronty pouze v případě, že pro tuto instanci není do fronty zařazen žádný další příkaz čekající na vyřízení.

V následující tabulce je popsán účinek příkazů při jejich zadání vůči instancím v různých stavech.

Aktuální stav Suspend (Pozastavit) Resume (Pokračovat) Cancel (Zrušit) Terminate (Ukončit) Delete (Odstranit)

Spuštěno

Pozastaví instanci.

Žádná operace

Zruší instanci.

Ukončí instanci.

Odebere instanci z úložiště trvalosti.

Pozastaveno

Žádná operace

Obnoví instanci.

Zruší instanci.

Ukončí instanci.

Odebere instanci z úložiště trvalosti.

Dokončeno

Není povoleno.

Není povoleno.

Není povoleno.

Není povoleno.

Odebere instanci z úložiště trvalosti.

Upozornění

Odebrání spuštěných instancí z úložiště trvalosti může vést k neočekávanému chování. Nedoporučuje se.

  2011-12-05