Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
.NET Framework 4, Windows Workflow Foundation'a bir dizi özellik ekler. Bu belgede bir dizi yeni özellik açıklanır ve bunların yararlı olabileceği senaryolar hakkında ayrıntılı bilgiler yer alır.
Mesajlaşma Etkinlikleri
mesajlaşma etkinlikleri (Receive, SendReply, Send, ReceiveReply) iş akışınızdan WCF iletileri göndermek ve almak için kullanılır. Receive ve SendReply etkinlikleri, standart WCF web hizmetleri gibi WSDL aracılığıyla kullanıma sunulan bir Windows Communication Foundation (WCF) hizmeti işlemi oluşturmak için kullanılır. Send ve ReceiveReply WCF'ye ChannelFactorybenzer bir web hizmeti kullanmak için kullanılır; Önceden yapılandırılmış etkinlikler oluşturan Workflow Foundation için bir Hizmet Başvurusu Ekleme deneyimi de vardır.
Mesajlaşma Etkinliklerine Başlarken
Visual Studio 2012'de bir WCF İş Akışı Hizmeti Uygulaması projesi oluşturun. Bir Receive ve SendReply çifti tuvalinize yerleştirilir.
Projeye sağ tıklayın ve Hizmet Başvurusu Ekle'yi seçin. Mevcut bir web hizmeti WSDL'sine gidin ve Tamam'a tıklayın. Projenizi, araç kutunuzda Send ve ReceiveReply kullanılarak uygulanan oluşturulan etkinlikleri göstermek için derleyin.
Mesajlaşma Etkinlikleri Örnek Senaryosu
Bir BestPriceFinder hizmet, belirli bir rota için en iyi bilet fiyatını bulmak için birden çok havayolu hizmetine çağrıda bulunur. Bu senaryonun uygulanması, fiyat isteğini almak, arka uç hizmetlerinden fiyatları almak ve fiyat isteğini en iyi fiyatla yanıtlamak için ileti etkinliklerini kullanmanızı gerektirir. Ayrıca, en iyi fiyatı hesaplamak için iş mantığını oluşturmak için diğer hazır etkinlikleri kullanmanızı da gerektirir.
WorkflowServiceHost
WorkflowServiceHost, birden çok örneği, yapılandırmayı ve WCF mesajlaşmasını destekleyen ilk çalıştırma iş akışı konağıdır (ancak iş akışlarının barındırılması için mesajlaşmayı kullanması gerekmez). Ayrıca bir dizi hizmet davranışı aracılığıyla kalıcılık, izleme ve örnek denetimiyle tümleşir. WCF'lerde ServiceHostolduğu gibi , WorkflowServiceHost bir konsolda/WinForms/WPF uygulamasında veya Windows hizmetinde kendi kendine barındırılabilir ya da IIS veya WAS'de web'de barındırılan (.xamlx dosyası olarak) olabilir.
İş Akışı Hizmeti Konağı ile Çalışmaya Başlama
Visual Studio 2010'da bir WCF İş Akışı Servis Uygulaması projesi oluşturun: Bu proje bir web barındırma ortamında kullanılmak üzere WorkflowServiceHost ayarlanacaktır.
İleti tabanlı olmayan bir iş akışını barındırmak için, iletiyi temel alan örneği oluşturacak özel bir WorkflowHostingEndpoint öğesi ekleyin.
İş akışı örnekleri, WorkflowControlEndpoint'nin WorkflowServiceHost'ye eklenmesi ve ardından bir WorkflowControlClient kullanılması yoluyla (örneğin askıya alma veya sonlandırma gibi) denetlenebilir.
için WorkflowServiceHost örnekler aşağıdaki bölümlerde bulunabilir:
Uygulama: Askıya Alınan Örnek Yönetimi
WorkflowServiceHost Senaryosu
BestPriceFinder hizmeti, belirli bir rota için en iyi bilet fiyatını bulmak için birden çok havayolu hizmetine çağrıda bulunur. Bu senaryoyu uygulamak için iş akışını içinde WorkflowServiceHostbarındırmanız gerekir. Ayrıca, fiyat isteğini almak, arka uç hizmetlerinden fiyatları almak ve fiyat isteğini en iyi fiyatla yanıtlamak için ileti etkinliklerini kullanır.
Bağıntı
Bağıntı iki şeyden biridir:
İletileri birlikte gruplandırma yöntemi; başka bir ifadeyle, bir istek iletisi ile yanıtı arasındaki ilişkidir.
Bir veri parçasını hizmet örneğine eşlemenin bir yolu
Başlangıç Yapmak
Bağıntıyı kullanmaya başlamak için Visual Studio'da yeni bir proje oluşturun. türünde CorrelationHandlebir değişken oluşturun.
İletileri birlikte gruplandırmak için kullanılan bağıntı örneği, iletileri birlikte gruplandıran Request-Reply bağıntıdır.
Bir Receive etkinliğinde, CorrelationInitializers özelliğine tıklayın ve yukarıdaki ilk adımda oluşturulan İlişkilendirme Tutamacını kullanarak bir RequestReplyCorrelationInitializer ekleyin.
SendReply etkinliği oluşturmak için Receive öğesine sağ tıklayın ve "SendReply Oluştur" üzerine tıklayın. Etkinlik sonrası Receive işlemi iş akışınıza yapıştırın.
Bir veri parçasını bir hizmet örneğine eşleme örneği, bir veri parçasını (örneğin, sipariş kimliği) belirli bir iş akışı örneğine eşleyen içerik tabanlı bağıntıdır.
- Bir mesajlaşma etkinliğinde,
CorrelationInitializersözelliğine tıklayın ve yukarıda oluşturulan QueryCorrelationInitializer değişkenini kullanarak CorrelationHandle ekleyin. Açılan menüden iletide istenen özelliğe (ör. OrderID) çift tıklayın.CorrelatesWithözelliğini yukarıda kullanılan değişkene CorrelationHandle ayarlayın.
- Bir mesajlaşma etkinliğinde,
Bağıntı Senaryosu
Sipariş işleme iş akışı, yeni sipariş oluşturmayı ve devam eden mevcut siparişleri güncelleştirmek için kullanılır. Bu senaryoyu uygulamak için iş akışını içinde WorkflowServiceHost barındırmanız ve mesajlaşma etkinliklerini kullanmanız gerekir. Ayrıca, güncellemelerin doğru iş akışına yapıldığından emin olmak için orderId'ye dayalı bir bağıntı da gerektirir.
Basitleştirilmiş Yapılandırma
WCF yapılandırma şeması karmaşıktır ve kullanıcılara bulunması zor birçok özellik sağlar. .NET Framework 4.6.1'de WCF kullanıcılarının hizmetlerini aşağıdaki özelliklerle yapılandırmasına yardımcı olmaya odaklandık:
Açık hizmet başına yapılandırma gereksinimi kaldırılıyor. Hizmetiniz için herhangi bir <hizmet> öğesi yapılandırmazsanız ve hizmetiniz herhangi bir uç noktayı program aracılığıyla tanımlamazsa, hizmetinize otomatik olarak bir uç nokta kümesi eklenir; hizmet temel adresi başına bir tane ve hizmetiniz tarafından uygulanan sözleşme başına.
Kullanıcının WCF bağlamaları ve davranışları için varsayılan değerleri tanımlamasını sağlar. Bu değerler açık yapılandırma olmadan hizmetlere uygulanır.
Standart uç noktalar, bir veya daha fazla uç nokta özelliği (adres, bağlama ve sözleşme) için sabit değerlere sahip olan ve özel özelliklerin tanımlanmasına izin veren yeniden kullanılabilir önceden yapılandırılmış uç noktaları tanımlar.
Son olarak, ConfigurationChannelFactory<TChannel> wcf istemci yapılandırmasının merkezi yönetimini yapmanıza olanak tanır; uygulama etki alanı yükleme süresinden sonra yapılandırmanın seçildiği veya değiştirildiği senaryolarda kullanışlıdır.
Başlangıç Yapmak
Basitleştirilmiş Yapılandırma Senaryoları
Deneyimli bir ASMX geliştiricisi WCF kullanmaya başlamak istiyor. Ancak WCF çok karmaşık görünüyor! Yapılandırma dosyasına yazmak için ihtiyacım olan tüm bilgiler nedir? .NET 4'te bir yapılandırma dosyası bile olmayabilir.
Mevcut bir WCF hizmetleri kümesinin yapılandırılması ve bakımı çok zordur. Yapılandırma dosyasında dokunması son derece tehlikeli olan binlerce XML kodu satırı vardır. Bu kod miktarını daha yönetilebilir bir değere düşürmek için yardım gerekir.
Veri Sözleşmesi Çözümleyicisi
.NET Framework 3.5'te, bilinen türlerin tasarımında birkaç sınırlama vardır:
Serileştirme veya seri durumdan çıkarma sırasında bilinen türleri dinamik olarak eklemek mümkün değildi.
Seri hale getiriciler bilinmeyen xsi:type bilgilerini işleyemedi.
Kullanıcıların, örneğin kablodaki serileştirme örneğinin boyutunun daha küçük olmasını istedikleri xsi:type türünü belirtmeleri mümkün değildi.
DataContractResolver bu sorunları .NET Framework 4.5'te çözer.
Başlangıç Yapmak
Örnekleri:
Veri Sözleşmesi Çözümleyici Senaryoları
Bir hizmette onlarca KnownTypeAttribute nesne bildirmek zorunda kalmamak.
XML blobunun boyutunu küçültme.
Akış Çizelgesi
Akış Çizelgesi, etki alanı sorunlarını görsel olarak temsil eden iyi bilinen bir paradigmadır. .NET Framework 4'te sunduğumuz yeni bir denetim akışı stilidir. Akış Çizelgesi'nin temel özelliklerinden biri, herhangi bir zamanda yalnızca bir etkinliğin yürütülmesidir. Akış çizelgeleri döngüleri ve alternatif sonuçları ifade edebilir, ancak birden çok düğümün eşzamanlı yürütülmesini yerel olarak ifade edemez.
Başlangıç Yapmak
Visual Studio 2012'de bir iş akışı konsol uygulaması oluşturun. İş akışı tasarımcısına akış çizelgesi ekleyin.
Akış çizelgesi özelliği aşağıdaki sınıfları kullanır:
Örnekleri:
Tasarımcı Belgeleri:
Akış Çizelgesi Senaryoları
Tahmin oyunu uygulamak için akış çizelgesi etkinliği kullanılabilir. Tahmin oyunu çok basittir: bilgisayar rastgele bir sayı seçer ve oyuncu bu sayıyı tahmin etmek zorunda. Oyuncu her tahmini gönderdiğinde, bilgisayar onlara bir ipucu gösterir (yani "daha düşük bir sayı deneyin"). Oyuncu 7'den az denemede sayıyı bulursa, bilgisayardan özel bir tebrik alır. Bu oyun aşağıdaki yordamsal etkinliklerin bir bileşimi ile uygulanabilir:
Prosedür etkinlikleri (Sıralı, If, ForEach, Switch, Ata, DoWhile, While)
Usulsel etkinlikler, programcıların aşina olduğu kavramları kullanarak sıralı kontrol akışını modellemek için bir mekanizma sağlar. Bu etkinlikler geleneksel olarak yapılandırılmış programlama dili yapılarını etkinleştirir ve uygun olduğunda C# ve Visual Basic gibi yaygın yordam dilleriyle dil eşliği sağlar.
Başlangıç Yapmak
Visual Studio 2012'de bir iş akışı konsol uygulaması oluşturun. İş akışı tasarımcısına prosedürel etkinlikler ekleyin.
Örnekleri:
Tasarımcı Belgeleri:
Prosedürel Etkinlik Senaryoları
Parallel: İntranet belge yönetim sisteminin belge onay iş akışı vardır. Belgelerin intranette yayımlanmadan önce çeşitli departmanlardaki kişiler tarafından onaylanması gerekir. Onaylar için belirlenmiş bir sipariş yoktur; belge "onay bekleniyor" aşamasındayken herhangi bir zamanda oluşabilir. Bir kullanıcı gözden geçirme için bir belge gönderdiğinde, belgenin doğrudan yöneticisi, intranet yöneticisi ve iç iletişim yöneticisi tarafından onaylanması gerekir.
ParallelForEach<T>: WF uygulaması büyük bir şirket içinde şirket satın almalarını yönetir. Şirket kuralları, herhangi bir satın alma işlemini planlamadan önce üç farklı satıcının değerlemesi gerektiğini belirler. Satın alma departmanındaki bir çalışan, şirketin satıcı listesinden üç satıcı seçer. Bu satıcılar seçildikten ve bilgilendirildikten sonra, şirket ekonomik tekliflerini bekleyecektir. Teklifler herhangi bir sırayla gelebilir. Bu senaryonun WF'de uygulanması için, satıcı koleksiyonumuzda yineleme yapacak ve ekonomik tekliflerini isteyecek bir ParallelForEach<T> kullanırız. Tüm teklifler toplandıktan sonra en iyi teklif seçilir ve görüntülenir.
InvokeMethod
Etkinlik, InvokeMethod kapsamdaki nesnelerde veya türlerde genel yöntemleri çağırmaya olanak tanır. Parametreli veya parametresiz örnek ve statik yöntemleri (parametre dizileri dahil) ve genel yöntemleri çağırmayı destekler. Ayrıca yöntemin zaman uyumlu ve zaman uyumsuz olarak yürütülmesine de olanak tanır.
Başlangıç Yapmak
Visual Studio 2012'de bir iş akışı konsol uygulaması oluşturun. İş akışı tasarımcısına bir InvokeMethod etkinlik ekleyin ve üzerinde statik ve örnek yöntemlerini yapılandırın.
Tasarımcı Belgeleri: InvokeMethod Etkinlik Tasarımcısı
InvokeMethod Senaryoları
Kapsamdaki bir nesnedeki bir yöntemin çağrılması gerekir. Örneğin, sözlüğe bir değer eklenmesi gerekir. Sözlük örneğinin Add yöntemi çağrılır ve anahtar ve değer sağlanır.
Yöntemin eski bir CLR nesnesinde çağrılması gerekir. Özel bir etkinlik oluşturmak yerine, iş akışının yürütülmesi sırasında bu eski sınıfa yapılan çağrı kapsam dahilindeyse, InvokeMethod kullanılabilir.
Hata işleme etkinlikleri
Etkinlik, TryCatch bir dizi kapsanan etkinliğin yürütülmesi sırasında oluşan özel durumları yakalamak için bir mekanizma sağlar (C# ve Visual Basic'teki Try/Catch yapısına benzer). TryCatch iş akışı düzeyinde özel durum işleme sağlar. İşlenmeyen bir özel durum oluşturulduğunda, iş akışı iptal edilir ve Finally bloğu yürütülmeyecek. Bu davranış C# ile tutarlıdır.
Başlangıç Yapmak
Visual Studio 2012'de bir iş akışı konsol uygulaması oluşturun. İş akışı tasarımcısına etkinlik TryCatch ekleyin.
Örnek: TryCatch Kullanarak Akış Çizelgesi Etkinliğinde Hata İşleme
Tasarımcı Belgeleri: Hata İşleme Etkinlik Tasarımcıları
Hata işleme senaryoları
Bir etkinlik kümesinin yürütülmesi ve bir hata oluştuğunda belirli bir mantığın yürütülmesi gerekir. Eğer hata yönetimi mantığı sırasında hatanın kurtarılamaz olduğu tespit edilirse, özel durum yeniden fırlatılır ve üst etkinlik (veya konak) sorunla ilgilenir.
Etkinlik seçin
Etkinlik, Pick WF'de olay tabanlı denetim akışı modellemesi sağlar. Pick her bir dalın çalışmaya başlamadan önce belirli bir olayın gerçekleşmesini beklediği birçok dal içerir. Bu kurulumda, Etkinlik dinlediği olay kümesinden yalnızca birini yürütecek olan Pick, Switch<T> gibi davranır. Her dal olay odaklıdır ve gerçekleşen olay önce ilgili dalı çalıştırır. Diğer tüm dallar iptal eder ve olayları dinlemeyi durdurur.
Başlangıç Yapmak
Visual Studio 2012'de bir iş akışı konsol uygulaması oluşturun. İş akışı tasarımcısına etkinlik Pick ekleyin.
Örnek: Seçme Etkinliğini Kullanma
Tasarımcı belgeleri: Etkinlik Tasarımcısı'nı seçin
Senaryo Seç
Bir kullanıcıdan giriş istenmesi gerekir. Normal koşullarda geliştirici, kullanıcının girişini isteme gibi ReadLine bir yöntem çağrısı kullanır. Bu kurulumla ilgili sorun, programın kullanıcı bir şey girene kadar beklemesidir. Bu senaryoda, engelleme etkinliğinin blokajını kaldırmak için zaman aşımı gerekir. Yaygın bir senaryo, görevin belirli bir süre içinde tamamlanması gereken senaryodur. Engelleme etkinliğinin süre aşımına uğraması, Pick'in önemli değer kattığı bir senaryodur.
WCF Yönlendirme Hizmeti
Yönlendirme Hizmeti, WCF iletilerinin istemcileriniz ve hizmetleriniz arasında nasıl aktığını denetlemenize olanak tanıyan genel bir yazılım Yönlendiricisi olacak şekilde tasarlanmıştır. Yönlendirme Hizmeti, müşterilerinizi hizmetlerinizden ayırmanıza ve bu sayede destekleyebileceğiniz yapılandırmalar ve hizmetlerinizi nasıl barındıracağınızı düşünürken sahip olduğunuz esneklik konusunda size çok daha fazla özgürlük sunar. .NET Framework 3.5'te istemciler ve hizmetler sıkı bir şekilde bağlanmış; bir müşterinin konuşması gereken tüm hizmetleri ve nerede bulunduklarını bilmesi gerekiyordu. Buna ek olarak, .NET Framework 3.5'teki WCF'nin sınırlamaları şunlardır:
Hata işleme karmaşıktı, bu mantığın istemciye sabit kodlanması gerekiyordu.
İstemcilerin ve hizmetlerin her zaman aynı bağlamaları kullanması gerekiyordu.
Hizmetler nadiren iyi dikkate alınıyordu: İstemcinin birden çok hizmet arasında seçim yapmak yerine her şeyi uygulayan bir hizmetle konuşmasını sağlamak daha kolaydır.
.NET 4'teki yönlendirme hizmeti, bu sorunların çözülmesini kolaylaştırmak için tasarlanmıştır. Yeni yönlendirme hizmeti aşağıdaki özelliklere sahiptir:
İçerik tabanlı yönlendirme (MessageFilter nesneler, iletinin nereye gönderileceğini belirlemek için iletiyi inceler.)
Protokol köprüleme (aktarım ve ileti)
Hata işleme (yönlendirici iletişim istisnalarını yakalar ve yedek uç noktalara geçiş yapar)
MessageFilterTable<TFilterData> ve Yönlendirme Yapılandırması'nın dinamik (bellekte) güncellemesi.
Başlangıç Yapmak
Belgeler: Yönlendirme
Örnekler: Yönlendirme Hizmetleri [WCF Örnekleri]
Blog: Yönlendirme Kuralları!
Yönlendirme Senaryoları
Yönlendirme hizmeti aşağıdaki senaryolarda kullanışlıdır:
İstemciler, birden çok hizmetle onlarla doğrudan iletişim kurmak zorunda kalmadan konuşabilir.
İstemciler, istemci isteği üzerinde ek mantık gerçekleştirerek isteğin nereye yönlendirileceğini belirleyebilir.
İstemcinin gerçekleştirdiği işlemleri, istemciyi yeniden düzenlemeden birden çok hizmet uygulamasında ayrıştırın.
İstemciler ve hizmetler, farklı güvenlik ayarlarıyla farklı bağlayıcılar kullanabilir.
İstemciler, hatalara veya hizmetlerin kullanılamamasına karşı daha güçlü olacak şekilde etkinleştirilebilir.
WCF Keşif
WCF Bulma, uygulama altyapınıza bir bulma mekanizması eklemenizi sağlayan bir çerçeve teknolojisidir. Hizmetinizi bulunabilir hale getirmek ve istemcilerinizi hizmetleri aramak üzere yapılandırmak için bunu kullanabilirsiniz. İstemcilerin artık uç noktayla sabit kodlanması gerekmez ve bu da uygulamanızı daha sağlam ve hataya dayanıklı hale getirir. Bulma, uygulamanızda otomatik yapılandırma özellikleri oluşturmak için mükemmel bir platformdur.
Ürün, WS-Discovery standardının üzerine kurulmuştur. Birlikte çalışabilir, genişletilebilir ve genel olacak şekilde tasarlanmıştır. Ürün iki çalışma modunu destekler:
Yönetilen: Ağda mevcut hizmetler hakkında bilgi sahibi bir varlık bulunduğunda, istemciler bu varlığı doğrudan bilgi için sorgular. Bu, Active Directory'ye benzer.
Geçici: istemcilerin hizmetleri bulmak için çok noktaya yayın iletilerini kullandığı yer.
Ayrıca bulma iletileri ağ protokolü belirsizdir; bunları mod gereksinimlerini destekleyen herhangi bir protokolde kullanabilirsiniz. Örneğin, keşif çok noktaya yayın iletileri UDP kanalı veya çok noktaya yayın mesajlaşmasını destekleyen başka bir ağ üzerinden gönderilebilir. Özellik esnekliğiyle birlikte bu tasarım noktaları, keşfi çözümünüz için özel olarak uyarlamanıza olanak sağlar.
Başlangıç Yapmak
Dokümantasyon: WCF Bulma
Örnekler: Bulma (Örnekler)
Bulma Senaryoları
Bir geliştirici, hizmetimin ne zaman kullanıma sunulacağı bilinmediğinden uç noktaları sabit olarak kodlamak istemez. Bunun yerine, geliştirici çalışma zamanında bir hizmet seçmek istiyor. Uygulamadaki bileşenler arasında daha fazla ayırma, sağlamlık ve otomatik yapılandırma gerekir.
İzleme
İş akışı izleme, bir iş akışı örneğinin yürütülmesiyle ilgili içgörü sağlar. İzleme olayları bir iş akışından, iş akışı örneği düzeyinde ve iş akışı içindeki etkinlikler yürütüldüğünde gönderilir. İzleme kayıtlarına abone olmak için iş akışı izleme katılımcısının iş akışı konağına eklenmesi gerekir. İzleme kayıtları bir izleme profili kullanılarak filtrelenir. .NET Framework bir ETW (Windows için Olay İzleme) izleme katılımcısı sağlar ve machine.config dosyasına temel bir profil yüklenir.
Başlangıç Yapmak
Visual Studio 2010'da bir WCF İş Akışı Hizmeti Uygulaması projesi oluşturun. Başlangıç olarak tuvalinize bir Receive ve SendReply çifti yerleştirilir.
web.config açın ve profili olmayan bir ETW izleme davranışı ekleyin.
Varsayılan profil kullanılır.
Olay görüntüleyicisini açın ve analiz kanalını şu düğümde etkinleştirin: Olay Görüntüleyicisi, Uygulamalar ve Hizmetler Günlükleri, Microsoft, Windows, Application Server-Applications. Analitik'e sağ tıklayın ve Günlüğü Etkinleştir'i seçin.
İş akışı hizmetini çalıştırın.
Olay görüntüleyicisinde iş akışı izleme olaylarını gözlemleyin.
Örnekler: İzleme
Kavramsal belgeler: İş Akışı İzleme ve İzleme
SQL İş Akışı Örnek Deposu
SqlWorkflowInstanceStore, örnek deposunun SQL Server tabanlı bir uygulamasıdır. Örnek deposu, çalışan örneğin durumunu bu örneği yüklemek ve sürdürmek için gereken tüm verilerle birlikte depolar. Hizmet konağı, iş akışı devam ederse örnek deposuna örnek durumunu kaydetmesini bildirir ve örnek deposuna, bu örnek için bir ileti geldiğinde veya bir gecikme etkinliğinin süresi dolduğunda örnek durumunu yüklemesini bildirir.
Başlangıç Yapmak
Visual Studio 2012'de örtük veya açık Persist etkinlik içeren bir İş Akışı oluşturun. SqlWorkflowInstanceStore Davranışı iş akışı servisi konağınıza ekleyin. Bu işlem kodda veya uygulama yapılandırma dosyasında yapılabilir.
Örnekler: Kalıcılık
Kavramsal belgeler: SQL İş Akışı Örnek Deposu.