Aracılığıyla paylaş


Örnek Sorgusu ve Denetimi

Bu örnekte, kalıcılık deposu sorgusunun ve denetim sağlayıcılarının nasıl kullanılacağı gösterilmektedir. Sorgu sağlayıcısı, kullanıcının kalıcılık deposunda saklanan örnekleri sorgulamasına olanak veren bir C# API'si kullanır. Denetim sağlayıcısı, kullanıcının kalıcılık deposunda depolanan bir örnekte denetim komutları (askıya al, sürdür, iptal, sonlandır ve sil) yayımlamasına olanak veren bir C# API'si kullanır.

Bu örnek bir WF sınama hizmeti, örnekleri sorgulamak için bir Windows konsol uygulaması ve örnekleri denetlemek için bir Windows konsol uygulaması içerir.

Not

Örnekler yalnızca eğitim amaçlı olarak sağlanmıştır. Üretim ortamında kullanılmaları amaçlanmamış ve üretim ortamında sınanmamışlardır. Microsoft bu örnekler için teknik destek sağlamaz.

Önkoşullar

  • Internet Information Services (IIS) sürüm 7.0

  • Kalıcılık deposu başlatılmıştır

  • Visual Studio 2010 ve Windows Server AppFabric aynı bilgisayardadır

Örnek Konum ve Dosyalar

Bu benioku belgesi <örnekler>\Samples\Hosting\InstanceQueryAndControl dizininin altında bulunur.

Bu örneği çalıştırmanız için gereken tüm dosyalar, <örnekler>\Samples\Hosting\InstanceQueryAndControl dizininde bulunur:

  • InstanceControl klasörü, örnek denetimi uygulama örneği için gereken tüm dosyaları içerir.

  • InstanceQuery klasörü, örnek sorgusu uygulama örneği için gereken tüm dosyaları içerir.

  • TestWorkflow klasörü, örnek iş akışı için gereken tüm dosyaları içerir.

  • InstanceQueryAndControl.sln çözüm dosyası, tüm örnek yapılarını oluşturan çözümü tanımlar.

Bu Örneği Kurma ve Çalıştırma

  1. Windows Server AppFabric Kurulumu sırasında yapmadıysanız bir kalıcılık deposu oluşturun.

    1. C:\Windows\System32\AppFabric\Microsoft.ApplicationServer.Configuration.exe dosyasını Yönetici olarak çalıştırın. Çalışan Yapılandır adımında, Kalıcılık yapılandırmasını ayarla onay kutusunu işaretleyin. Kalıcılık sağlayıcınız olarak sqlStoreProvider'ı seçin ve Yapılandır'ı tıklatın.

    2. SQL Kalıcılık Deposu Yapılandırması penceresinde, Kök web.config dosyasına kalıcılık deposu kaydı ekle ve Kalıcılık deposunu başlat onay kutularını işaretleyin. Kalıcılık deposu veritabanının adını ApplicationServerWorkflowInstanceStore olarak belirtin. Belirtilen adda bir kalıcılık deposu veritabanı oluşturmak için Tamam'ı tıklatın. Farklı bir veritabanı adı seçmeye karar verirseniz örnek kodu değiştirmeniz gerekir (aşağıya bakın).

  2. Bu örneği 64 bit sistemde çalıştırıyorsanız, C:\Windows\System32\AppFabric\Microsoft.ApplicationServer.StoreManagement.dll dosyasını proje klasörünüze kopyalayın.

    Not

    Bu yolu 3. adımda kullanacaksınız.

  3. Çözümü oluşturun.

    1. Visual Studio 2010'u Yönetici olarak açın: Başlat --> Tüm Programlar --> Microsoft Visual Studio 2010 öğelerini tıklatın. Microsoft Visual Studio 2010'u sağ tıklatın ve Yönetici olarak çalıştır'ı seçin.

    2. Örnek projeyi açın: Visual Studio'da, Dosya> Aç --> Proje/Çözüm'ü tıklatın. <Örnekler>\Samples\InstanceQueryAndControl\InstanceQueryAndControl.sln adlı örnek çözüm dosyasını seçin. Visual Studio bu dosyayı açarken örnek hizmetin yerel IIS URL'sinin henüz oluşturulmadığı konusunda sizi uyarır. Yeni sanal dizinin oluşturulmasını onaylayın.

    3. Bu örneği 64 bit sistemde çalıştırıyorsanız, InstanceQuery ve InstanceControl projesi için aşağıdaki adımları yürütün: Program.cs dosyasının 17. satırında, Microsoft.ApplicationServer.StoreManagement.dll dosyasının yolunu 2. adımda dosyayı kopyaladığınız konumla değiştirin.

    4. Bu örnek, iş akışının SQL Express tarafından barındırılan ApplicationServerWorkflowInstanceStore kalıcılık veritabanında bulunduğunu varsayar. InstanceControl projesindeki Program.cs dosyasının 44. ve 45. satırlarındaki ve InstanceQuery projesindeki Program.cs dosyasının 37. ve 38. satırlarındaki veritabanı adını ve SQL sunucusu örneğini değiştirebilirsiniz.

    5. Çözümü oluşturmak üzere F6 tuşuna basın. Bu işlem, TestWorkflow uygulamasını IIS'te otomatik olarak dağıtır.

  4. TestWorkflow uygulamasını yapılandırın.

    1. IIS Yöneticisi'ni açın: Başlat -->Denetim Masası->Yönetimsel Araçlar --> Internet Information Services (IIS) Yöneticisi'ni tıklatın.

    2. Doğru AppPool'u ayarlayın ve site için net.pipe protokolünü etkinleştirin.

      • IIS Bağlantılar penceresinde, <bilgisayar>/Sites/Default Web Site düğümünü seçin.

      • IIS Eylemler penceresinde Gelişmiş Ayarlar'ı tıklatın.

      • Uygulama Havuzu ayarını ASP.NET v4.0 olarak değiştirin.

      • Etkin Protokoller ayarını http,net.pipe olarak değiştirin. Dikkat: Virgül ile net.pipe arasında boşluk olmamalıdır.

      • Tamam'ı tıklatın.

    3. Doğru AppPool'u ayarlayın ve uygulama için net.pipe protokolünü etkinleştirin.

      • IIS Bağlantılar penceresinde, <bilgisayar>/Sites/Default Web Site/TestWorkflow düğümünü seçin.

      • IIS Eylemler penceresinde Gelişmiş Ayarlar'ı tıklatın.

      • Uygulama Havuzu ayarını ASP.NET v4.0 olarak değiştirin.

      • Etkin Protokoller ayarını http,net.pipe olarak değiştirin. Dikkat: Virgül ile net.pipe arasında boşluk olmamalıdır.

      • Tamam'ı tıklatın.

  5. TestService örneklerini oluşturun.

    1. WCF Sınama İstemcisi'ni açın.

      • IIS Bağlantılar penceresinde, <bilgisayar>/Sites/Default Web Site/TestWorkflow düğümünü seçin.

      • TestWorkflow'u sağ tıklatın ve ardından İçerik Görünümüne Geç'i seçin.

      • TestService.xamlx öğesini sağ tıklatın ve sonra Gözat'ı seçin. Web tarayıcısı başlatılır ve TestService hoş geldiniz sayfası görüntülenir.

      • WCF Sınama İstemcisi'ni aşağıda belirtilen şekilde açın: WCF Sınama İstemcisi'ni açın. Başlat --> Tüm Programlar --> Microsoft Visual Studio 2010 -->Visual Studio Tools --> Visual Studio Command Prompt (2010) öğelerini tıklatın. Komut isteminde wcftestclient komutunu yayınlayın.

      • Web tarayıcısının URL penceresinde, TestService URL'sini kopyalayın (örneğin, "https://localhost/TestWorkflow/TestService.xamlx"). WCF Sınama İstemcisi'nde, Hizmet Projelerim'i sağ tıklatın ve ardından Hizmet Ekle'yi seçin. Uç nokta adresi sorulduğunda, TestService URL'sini yapıştırın.

    2. TestService'i aşağıda gösterilen şekilde başlatın:

      • WCF Sınama İstemcisi penceresinde, IService (BasicHttpBinding_IService) düğümünün altındaki Invoke() düğümünü çift tıklatın.

      • Çağır sekmesinde, Değer sütunundaki (null) alanını tıklatın. (null) seçimini System.Nullable<System.Int32> olarak değiştirin. Ad sütunundaki int düğümünü genişletin. Değer olarak 0 atanmış yeni bir satır görünür.

      • Çağır'ı tıklatın. Bu işlem, 10 dakika çalışacak bir TestService örneği oluşturur.

      • Değeri 1 olarak değiştirin ve Çağır'ı tıklatın. Bu işlem, hemen tamamlanacak bir TestService örneği oluşturur.

      • Değeri 2 olarak değiştirin ve Çağır'ı tıklatın. Bu işlem, özel durum oluşturup askıya alınacak bir TestService örneği oluşturur.

  6. Örnekler için sorgu çalıştırın.

    1. Visual Studio'da, varsayılan başlangıç projesinin InstanceQuery olduğunu doğrulayın ve örnekleri sorgulamak üzere F5 tuşuna basın. Konsol penceresi açılır ve 5.b adımında oluşturduğunuz üç örneği görüntüler.

    2. Alternatif olarak, komut isteminden InstanceQuery komutunu çalıştırın:

      • Komut istemini açın. <örnekler>\Samples\Hosting\InstanceQueryAndControl\InstanceQuery\bin\Debug\InstanceQuery.exe [List|Count|Group] komutunu çalıştırın.
  7. Örnekleri denetleyin.

    1. Komut isteminden, <örnekler><samples>\Samples\Hosting\InstanceQueryAndControl\InstanceControl\bin\Debug\InstanceControl.exe <InstanceId> [Suspend|Resume|Cancel|Terminate|Delete] komutunu çalıştırın. Oluşturduğunuz örneklerden herhangi birinin 20 karakter uzunluğundaki Örnek Kimliği GUID değerini kullanın. Önceden oluşturduğunuz örneklerden herhangi birinin 20 karakter uzunluğundaki Örnek Kimliği GUID değerini kullanın.

Bu Örneği Kaldırma

  1. TestWorkflow hizmetinin kalıcılık deposundaki tüm hizmet örneklerini silin. Bir Yönetim konsolu penceresi açın ve aşağıdaki komutları yayınlayın:

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

Gösteriler

Örnek, üç proje içerir:

  • TestWorkflow bir WF hizmeti kullanır. Bu hizmet IIS'te barındırılmaktadır. Hizmet her çağrıldığında, hizmetin yeni bir örneği oluşturulur. WCF Sınama İstemcisi aracılığıyla hizmet çağrıldığında, kullanıcı bu hizmete bir parametre geçirir. Bu parametreye bağlı olarak, örnek 10 dakika boyunca çalışır, hemen tamamlanır veya bir özel durum oluşturur.

  • InstanceQuery, kalıcılık deposuna yönelik bir sorgu yayınlayan ve sonuçları ekranda yazdıran bir konsol uygulaması kullanır. Kullanıcının sorgu türünü, sorgu parametrelerini ve kalıcılık deposunun bağlantı dizesini belirtmesi gerekir.

  • InstanceControl, kalıcılık deposunda bulunan bir örneğe yönelik denetim komutu yayınlayan bir konsol uygulaması kullanır. Kullanıcının komut türünü, örnek kimliğini ve kalıcılık deposunun bağlantı dizesini belirtmesi gerekir.

Örnek Sorgusu uygulama örneği

Örnek sorgusu uygulama örneği, AppFabric sorgu sağlayıcısının işlevselliğini ve API'sini gösterir. Sorgu sağlayıcısı, kullanıcının üç tür sorgu yayınlamasına olanak verir:

  • Kalıcılık deposunda bulunan ve özellikleri sorguyla eşleşen örneklerin listesini elde edin. Bu sorgu, instanceInfo dizisi döndürür.

  • Kalıcılık deposunda bulunan ve özellikleri sorguyla eşleşen örneklerin sayısını elde edin. Bu sorgu bir Int32 döndürür.

  • Kalıcılık deposunda bulunan ve özellikleri sorguyla eşleşen örneklerin sayısını elde edin ve bunları tanımlanmış kategorilere göre gruplandırın. Bu sorgu, sıralanabilir bir groupingResult türü döndürür.

Sorgu sağlayıcısı, her bir sorgu türü için sorguyu yürüten bir zaman uyumsuz API sağlar. Giriş ve döndürülen değer türü, sorgu türüne bağlı olarak değişir. Tüm sorgu türleri için kullanıcı bir dizi sorgu filtresi belirtebilir. Örnek bunların tümünü "null" olarak ayarlar; bir başka deyişle, sorgu depodaki tüm örnekleri alır. Kullanıcının sorgu filtresi parametrelerine ek olarak kalıcılık deposunun bağlantı dizesini de sağlaması gerekir. Örnekte, bu örneklerin DefaultSqlWorkflowInstanceStore içinde bulunduğu varsayılmaktadır. Ayrıca veritabanı erişimine yönelik kimlik doğrulaması için Windows tümleşik güvenliği kullandığı da varsayılır.

Kullanıcının bir örnek listesi isterken döndürülen örnek sayısı üst sınırını ve örneklerin nasıl sıralanması gerektiğini belirtmesi gerekir. Sorgu sağlayıcısı şimdilik yalnızca LastUpdatedTime değerine göre sıralama veya sıralanmamış bir liste döndürme seçeneklerini sunmaktadır.

Gruplandırılmış bir örnek sayısı isterken, kullanıcının gruplandırma parametrelerini belirtmesi gerekir. Bu parametreler bir List<GroupingMode> olarak sağlanır. İlk öğe ana grubu, sonrasındaki her bir öğe ise alt grubu tanımlar.

Örnek Denetimi uygulama örneği

Örnek denetimi uygulama örneği, AppFabric denetim sağlayıcısının işlevselliğini ve API'sini gösterir. Denetim sağlayıcısı, kullanıcının bir örneğe yönelik olarak askıya al, sürdür, iptal, sonlandır veya sil komutu yayınlamasına olanak verir. Komut türünün ve örnek kimliğinin yanı sıra, kullanıcının SiteName, RelativeApplicationPath ve VirtualPath hizmet tanımlayıcılarını da sağlaması gerekir. Bu parametreler, WMS'nin hizmet örneği denetim uç noktasını hesaplaması için gereklidir. (Yalnızca Suspend, Resume, Cancel ve Terminate için hizmet tanımlayıcıları gerekmektedir. Delete komutu, denetim uç noktasına yönelik olarak yayınlanmaz. Bunun yerine, doğrudan veritabanından yürütülür.)

Kullanıcının sorgu filtresi parametrelerine ek olarak kalıcılık deposunun bağlantı dizesini de sağlaması gerekir. Örnekte, bu örneklerin DefaultSqlWorkflowInstanceStore içinde bulunduğu varsayılmaktadır. Ayrıca veritabanı erişimine yönelik kimlik doğrulaması için Windows tümleşik güvenliği kullandığı da varsayılır.

Örnek denetimi uygulama örneğinin, kalıcılık deposundaki komut sırasında Suspend, Resume, Cancel veya Terminate komutlarını sıraya soktuğunu unutmayın. Komut daha sonra yürütülür. Örnek sorgusu uygulama örneğini kullanarak, komutun yürütülüp yürütülmeyeceğine ve yürütülecekse ne zaman yürütüleceğine bakın.

Bir örneğe ait komutun, yalnızca bu örnek için sıraya konmuş olarak bekleyen başka bir komut yoksa sıraya konabileceğini unutmayın.

Aşağıdaki tabloda, çeşitli durumlarda örneklere yönelik olarak yayınlanan komutların etkileri açıklanmaktadır.

Geçerli durum Suspend Resume Cancel Terminate Delete

Çalışıyor

Örneği askıya alır

Hiçbir işlem yapmaz

Örneği iptal eder

Örneği sonlandırır

Örneği kalıcılık deposundan kaldırır

Askıya Alındı

Hiçbir işlem yapmaz

Örneği sürdürür

Örneği iptal eder

Örneği sonlandırır

Örneği kalıcılık deposundan kaldırır

Tamamlandı

İzin verilmiyor

İzin verilmiyor

İzin verilmiyor

İzin verilmiyor

Örneği kalıcılık deposundan kaldırır

Uyarı

Çalışan örnekleri kalıcılık deposundan kaldırmak öngörülemeyen davranışlara neden olabilir. Önerilmez.

  2011-12-05