Windows Workflow Foundation (WF), bilgisayar tabanlı iş akışları oluşturmaya yönelik .NET tabanlı bir sınıf kitaplığıdır (.NET 3.0 ile birlikte sunulmuştur). WF ne bir iş akışı sunucusu ne de bir iş akışı istemcisidir; “yalnızca” bir iş akışı uygulaması oluşturmaya yardımcı olan bir sınıf kitaplığıdır. WF’nin kullanıma hazır yönetim, raporlama ve izleme araçları yoktur.
Duyuru
Biz ve müşterilerimiz, Workflow Foundation’ı çeşitli projelerde kullanmayı düşündük ve çoğu durumda WF’nin ilgili kullanım durumu için uygun olmadığı sonucuna vardık.
Ancak her zaman önce olumlu yönlerden bahsetmeniz gerektiğinden, benim görüşüme göre WF’yi farklı kılan beş noktanın bir listesini burada bulabilirsiniz:
Duyuru
Biz ve müşterilerimiz, Workflow Foundation’ı çeşitli projelerde kullanmayı düşündük ve çoğu durumda WF’nin ilgili kullanım durumu için uygun olmadığı sonucuna vardık.
Ancak her zaman önce olumlu yönlerden bahsetmeniz gerektiğinden, benim görüşüme göre WF’yi farklı kılan beş noktanın bir listesini burada bulabilirsiniz:
- Kapsülleme ve yeniden kullanım: Operasyonlar yeniden kullanılabilir faaliyetlerde özetlenmiştir. Her geliştirici kendi görevlerini kolaylıkla tanımlayabilir.
- Grafik modelleme: Etkinlikler bir grafik araç (iş akışı tasarımcısı) kullanılarak düzenlenebilir ve bağlanabilir. İş Akışı Tasarımcısı, Visual Studio 2005/2008’de mevcuttur ve uygulamalarınıza ücretsiz olarak da entegre edilebilir.
- Kalıcılık: WF, iş akışının tüm durumunun bir veritabanında depolandığı iş akışları için kalıcılık sağlar. Kalıcılık, çökme durumunda ve olayları beklerken kaynakları (RAM/işlem süresi) tüketmemesi gereken uzun süreli iş akışları için bir kurtarma noktası olarak kullanılabilir. Gerekirse bu tür iş akışları WF çalışma zamanı ortamı tarafından otomatik olarak yeniden etkinleştirilir.
- Takip (izleme): WF çalışma zamanı ortamı, bir iş akışındaki her adımı veya seçilen adımları bir veritabanında saklayabilir.
- Kural konsepti: Birbirine bağımlı olabilen kurallar, karmaşık koşulları modellemeyi mümkün kılar.
- Sistem gereksinimleri: Bir bütün olarak .NET 3.0 gibi WF, Windows XP’den önceki işletim sistemlerinde mevcut değildir (yani şu anda yalnızca Windows XP, 2003, Vista ve 2008 için). Microsoft, veritabanı olarak yalnızca kendi SQL Server’ını destekler. Diğer veritabanı yönetim sistemleri için satıcılar da mümkündür ancak henüz mevcut değildir.
- Birkaç etkinlik: Microsoft, WF ile yalnızca nispeten basit temel görevleri (koşullar, döngüler, çağrılar, olay işleme gibi) sağlar. Daha yüksek değere sahip etkinlikler (HTTP indirmeleri, FTP, e-posta ve hatta iş etkinlikleri gibi) eksik veya yalnızca SharePoint 2007 ve BizTalk 2006 R2 gibi WF’yi destekleyen ürünlerde mevcut.
- İş akışlarının kötü sürümlenmesi: Bir iş akışı tanımını istediğiniz zaman değiştirebilirsiniz, ancak mevcut iş akışlarının yeni tanım altında, yalnızca eski tanım altında çalışmaya devam etmesine izin veremezsiniz. Bir sürecin sonunda aniden bir adıma ihtiyaç duyarsanız, bunu zaten başlamış (hatta uzun süredir devam eden) iş akışlarına uygulayamazsınız.
- SSIS iş akışlarıyla uyumluluk yok: Microsoft SQL Server Entegrasyon Hizmetleri (SSIS), WF’ye benzer bir ortam sağlar ancak hiçbir şekilde WF ile uyumlu değildir. SSIS geliştirme ekibi, WF’nin temel olarak kullanılmasına aktif olarak karşı çıktı (bir yandan SSIS, WF’den önce piyasadaydı, diğer yandan SSIS daha çok toplu veri işlemeye odaklanmıştı, WF bunun için çok yavaş olurdu).
- Yüksek uygulama çabası: WF’deki bazı günlük yapılar (Bağımlılık Özellikleri, Veri Değişim Hizmetleri) nispeten büyük miktarda program kodu gerektirir.
- Tasarımcı Kusurları: İş akışı tasarımcısının diğer tasarımcılardan farklı çalışma paradigmalarına sahip olması nedeniyle alışmak uzun zaman alır. Visual Studio’daki tasarımcı entegrasyonu yetersiz (örneğin bir iş akışını yeniden adlandırırken). Tasarımcı, daha karmaşık iş akışları için nispeten sık destek sağlar (aşağıdaki “Hata Geçidi” bölümüne bakın).
- Karmaşıklık: WF çalışma zamanı ortamının dahili işleme adımlarını anlamak genellikle zordur. Açıkçası WF’yi bir soyutlama olarak kabul etmek gerekir, ancak WF içindeki bazı süreçler bir geliştiricinin sezgisel anlayışının çok ötesindedir.
- Büyük iş akışlarında kod hızla kafa karıştırıcı hale gelir: Her ne kadar Visual Studio görev bildirimini program kodundan ayırsa da, daha büyük iş akışları için kod dosyası yine de çok büyük ve kafa karıştırıcı hale gelir. Burada istemeseniz bile kendinizi aktiviteye kaptırmak zorunda kalıyorsunuz.
- Yanlış dokümantasyon: Belgeler oldukça kısadır (örneğin, ASP.NET’te WF konusunda yalnızca altı sayfa!). Şu anda WF ile ilgili çok az sayıda uzman kitap bulunmaktadır.
- Yüksek performans kayıpları: WF çok fazla güç tüketir. Microsoft bunu “Windows İş Akışı Temelinin Performans Özellikleri” belgesinde belgelemektedir. Ancak bazı sonuçlar saf dehşete neden olur, örneğin:
Ölçek Saniyede tamamlanan ortalama iş akışı sayısı