Aracılığıyla paylaş


İş akışı hizmetlerine genel bakış

İş akışı hizmetleri, iş akışları kullanılarak uygulanan WCF tabanlı hizmetlerdir. İş akışı hizmetleri, Windows Communication Foundation (WCF) iletileri göndermek ve almak için mesajlaşma etkinliklerini kullanan iş akışlarıdır. .NET Framework 4.5, bir iş akışı içinden ileti gönderip almanıza olanak sağlayan bir dizi mesajlaşma etkinliği sağlar. Mesajlaşma etkinlikleri ve bunların farklı ileti değişimi desenlerini uygulamak için nasıl kullanılabildikleri hakkında daha fazla bilgi için bkz. Mesajlaşma Etkinlikleri.

İş akışı hizmetlerini kullanmanın avantajları

Uygulamalar giderek daha fazla dağıtıldıkçe, tek tek hizmetler işin bir kısmını boşaltmak için diğer hizmetleri çağırmaktan sorumlu hale gelir. Bu çağrıların zaman uyumsuz işlemler olarak uygulanması kodda biraz karmaşıklık sağlar. Hata işleme, özel durumları işleme ve ayrıntılı izleme bilgileri sağlama biçiminde ek karmaşıklık ekler. Bazı hizmetler genellikle uzun süre çalışır ve giriş beklerken değerli sistem kaynaklarını kaplayabilir. Bu sorunlar nedeniyle, dağıtılmış uygulamalar genellikle çok karmaşıktır ve yazması ve bakımını yapmak zordur. İş akışları, özellikle dış hizmetlere yapılan çağrılar olmak üzere zaman uyumsuz çalışmanın koordinasyonunu ifade etmenin doğal bir yoludur. İş akışları, uzun süre çalışan iş süreçlerini temsil etmede de etkilidir. Dağıtılmış bir ortamda hizmet oluşturmak için iş akışını harika bir varlık haline getiren bu özelliklerdir.

İş akışı hizmeti uygulama

WCF hizmetini uygularken, hizmeti ve gönderdiği ve aldığı verileri açıklayan bir dizi sözleşme tanımlarsınız. Veriler, veri sözleşmeleri ve ileti sözleşmeleri olarak temsil edilir. Hem WCF hem de iş akışı hizmetleri, hizmet açıklamalarının bir parçası olarak veri sözleşmesi ve ileti sözleşmesi tanımlarını kullanır. Hizmetin kendisi, hizmetin işlemlerini açıklamak için meta verileri (WSDL biçiminde) kullanıma sunar. WCF'de hizmet sözleşmeleri ve işlem sözleşmeleri hizmeti ve desteklediği işlemleri tanımlar. Ancak bir iş akışı hizmetinde bu sözleşmeler iş sürecinin bir parçasıdır. Bunlar, sözleşme çıkarımı adlı bir işlem tarafından meta verilerde kullanıma sunulur. kullanılarak WorkflowServiceHostbir iş akışı hizmeti barındırıldığında iş akışı tanımı incelenir ve iş akışında bulunan mesajlaşma etkinlikleri kümesine göre bir sözleşme oluşturulur. Özellikle, sözleşmeyi oluşturmak için aşağıdaki etkinlikler ve özellikler kullanılır:

Receive Etkinlik

SendReply Etkinlik

TransactedReceiveScope Etkinlik

Sözleşme çıkarımının sonu, WCF hizmetleri ve işlem sözleşmeleri ile aynı veri yapılarını kullanan hizmetin açıklamasıdır. Bu bilgiler daha sonra iş akışı hizmeti için WSDL'yi kullanıma açmak için kullanılır.

Uyarı

.NET Framework 4.6.1, ek araç desteği olmadan mevcut bir sözleşme tanımını kullanarak iş akışı hizmetleri yazmanıza izin vermez. İş akışı hizmeti sözleşmeleri, daha önce ele alınan sözleşme çıkarımı işlemi tarafından oluşturulur. Ancak ileti sözleşmeleri ve veri sözleşmeleri tam olarak desteklenir.

İş akışı hizmetleri ve MSMQ tabanlı bağlamalar

WCF, iki MSMQ tabanlı bağlama NetMsmqBinding ve MsmqIntegrationBindingtanımlar. MSMQ tabanlı bağlamalar genellikle bu tür hizmetlerin uzun süre çalışan yapısı nedeniyle iş akışı hizmetleriyle birlikte kullanılır. MSMQ tabanlı bağlamalar, MSMQ iletilerinin ne kadar süre geçerli kabul edilebileceğini belirten bir ValidityDuration özelliğe sahiptir. İş akışı hizmetlerinin uzun süre çalışan doğası nedeniyle, bir MSMQ iletisinin geçerlilik süresi, iş akışı hizmeti onu işleyebilmeden önce dolabilir. Bu nedenle, MSMQ bağlamasının geçerlilik süresini uygun bir değere ayarlamak çok önemlidir. Bu değer, iş akışına ve iletileri nasıl işlediğine göre seçilmelidir. Örneğin, bir etkinliğin ardından çalıştırılması 10 dakika süren özel bir etkinliğin ve ardından başka bir Receive etkinliğin olduğu bir Receive iş akışınız varsa, için ValidityDuration doğru değer 10 dakikadan büyük olabilir.

İş akışı hizmetini barındırma

WCF hizmetleri gibi iş akışı hizmetlerinin de barındırılması gerekir. WCF hizmetleri, hizmetleri barındırmak için ServiceHost sınıfını kullanır ve iş akışı hizmetleri, hizmetleri barındırmak için WorkflowServiceHost kullanır. WCF hizmetleri gibi iş akışı hizmetleri de çeşitli yollarla barındırılabilir, örneğin:

  • Yönetilen bir .NET Framework uygulamasında.

  • Internet Information Services'te (IIS).

  • Windows İşlem Etkinleştirme Hizmeti'nde (WAS).

  • Yönetilen bir Windows Hizmetinde.

Yönetilen bir .NET Framework uygulamasında veya yönetilen bir Windows hizmetinde barındırılan iş akışı hizmetleri, WorkflowServiceHost sınıfının bir örneğini oluşturur ve içinde iş akışı tanımını içeren WorkflowService özelliğiyle birlikte Body örneğini geçirir. mesajlaşma etkinliklerini içeren bir iş akışı tanımı bir iş akışı hizmeti olarak kullanıma sunulur.

IIS veya WAS'de bir iş akışı hizmeti barındırmak için, iş akışı hizmet tanımını içeren .xamlx dosyasını bir sanal dizine yerleştirin. Varsayılan uç nokta (kullanılarak BasicHttpBinding) otomatik olarak oluşturulur Daha fazla bilgi için bkz. Basitleştirilmiş Yapılandırma. Kendi uç noktalarınızı belirtmek için sanal dizine bir Web.config dosyası da yerleştirebilirsiniz. İş akışı tanımınız bir derlemedeyse sanal dizine bir .svc dosyası ve App_Code dizinine iş akışı derlemesi yerleştirebilirsiniz. .svc dosyasının hizmet ana bilgisayar fabrikasını ve iş akışı hizmetini uygulayan sınıfı belirtmesi gerekir. Aşağıdaki örnek, hizmet ana bilgisayar fabrikasını belirtmeyi ve iş akışı hizmetini uygulayan sınıfı belirtmeyi gösterir.

<%@ServiceHost Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory"
Service="EchoService"%>