Windows Workflow Foundation ne zaman kullanılır? [kapalı]


154

Bazı şeyleri sadece elle (kod) uygulamak daha kolaydır, ancak bazıları WF ile daha kolaydır. Görünüşe göre WF her türlü algoritmayı (neredeyse) oluşturmak için kullanılabilir. Yani (teorik olarak) tüm mantığımı WF'de yapabilirim, ancak bunu tüm projeler için yapmak muhtemelen kötü bir fikir.

Hangi durumlarda WF kullanmak iyi bir fikirdir ve işleri ne zaman zorlaştıracaklar? El ile kodlamaya karşı WF'nin artıları ve eksileri / maliyeti nedir?


3
Bu cevaplardan sonra çıkan 4.0 sürümü için tamamen yeniden yazıldığını belirtmek gerekir.
sclarson

Yanıtlar:


125

WF'ye yalnızca aşağıdakilerden herhangi biri doğruysa ihtiyacınız olabilir:

  1. Uzun süren bir işleminiz var.
  2. Sık sık değişen bir işleminiz var.
  3. Sürecin görsel bir modelini istiyorsunuz.

Daha fazla ayrıntı için Paul Andrew'un gönderisine bakın: Windows Workflow Foundation ne için kullanılır?

Lütfen WF'yi herhangi bir tür görsel programlamayla karıştırmayın veya ilişkilendirmeyin. Yanlış ve çok kötü mimari / tasarım kararlarına yol açabilir.


4
Uzun süren işlem için ölçüm birimi nedir?
ivorykoder

5
@ivorykoder barındıran sunucunun yeniden başlatılmasına dayanabilecek "işlemler" (gerçekten iş akışları ).
ıstakoz

Sadece 1 numarayı karşılayan gereksinimlerim olsaydı, bu WF'yi seçmem için yeterli olmazdı. Ancak gereksinimler # 2 ve / veya # 3 içeriyorsa, bu WF kullanmak için çok daha güçlü bir durum olacaktır.
Mick

12
Direnem: Sadece aşağıdakilerden herhangi biri doğruysa WF'ye ihtiyacınız olabilir: false.
Ronnie Overby

84

Asla. Muhtemelen pişman olacaksınız:

  • Dik öğrenme eğrisi
  • Hata ayıklamak zor
  • Bakımı zor
  • Kullanımını haklı çıkarmak için yeterli güç, esneklik veya verimlilik kazancı sağlamaz
  • Kurtarılamayan uygulama durumunu bozabilir ve bozar

WF kullanmayı düşünebildiğim tek zaman, tasarımcıyı son kullanıcı için barındırmak istiyordum ve muhtemelen o zaman bile değil.

Güven bana, hiçbir şey tam olarak yapmanız gereken şeyi yapmak için yazdığınız kod kadar basit, güçlü veya esnek olmayacaktır. WF'den uzak durun.

Tabii ki, bu sadece benim düşüncem, ama bence çok iyi. :)


27
-1 Bu konudaki fikrinize saygı duyuyorum, ancak bunun nedeninin profesyonel bir açıklamasını uygun hale getireceğim. nasıl bir cevap bu tür herkese yardımcı
göremiyorum

9
Bu cevabı WF4'e kızgın olduğum bir günde yazdım. Yanıtımı karşılaştığım sorunlarla güncelleyeceğim.
Ronnie Overby

5
Yarım tamamlanmış bir projeyi, WF'yi omurgası olarak kullanan bir danışmandan miras aldık. Hatalara, yeniden başlatılamayan bozuk iş akışlarına, küçük değişiklikler, korkunç üretilen kod ve çocuk eldivenleri ile başa çıkmanız gereken hassas bir kod için iş akışının tamamen kopyalanmasını gerektiren arkaik bir sürümleme sistemine eğilimliydi. . 6 aylık sarı ölüm ekranlarından sonra tüm WF'yi hurdaya ayırdık ve bunun yerine xml kullandık. Şimdiye kadar verdiğimiz en iyi karar.
Kevin DeVoe

10
"Kullanımını haklı çıkarmak için yeterli güç, esneklik veya verimlilik kazancı sağlamaz" ifadesi benim için yeterince şey ifade ediyor. Bunun için teşekkür ederim.
David Tansey

1
Şapkacıların nefretlerini açıklaması gerekiyor.
Ronnie Overby

46

WF tarafından üretilen kod kötüdür. WF'nin getirdiği değer, sistemin daha basit bir el kodlu projeyi tercih etmeyeceğim bir şey (şimdi dahil olduğum WF ile işte 6-7 proje) görmememe rağmen, sistemin görsel temsilidir. .


40

Genel olarak, kalıcılık ve izleme özelliklerine (bence ana özelliklerdir) ihtiyacınız yoksa, Workflow Foundation'ı kullanmamalısınız.

Deneyimlerimden topladığım İş Akışı Vakfı'nın avantajları ve dezavantajları:

Avantajları

  • Kalıcılık: Uzun süren birçok işleminiz olacaksa (günler, haftalar, aylar düşünün), iş akışları bunun için mükemmeldir. Boştaki iş akışı örnekleri veritabanında saklanır, böylece bellek kullanılmaz.
  • İzleme: WF, bir iş akışında yürütülen her etkinliği izleme mekanizması sağlar
  • * Visual Designer: Bunu bir * olarak koydum, çünkü bunun sadece pazarlama amaçlı olduğunu düşünüyorum. Bir geliştirici olarak, şeyleri görsel olarak birleştirmek yerine kod yazmayı tercih ederim. Ayrıca, geliştirici olmayan bir iş akışınız olduğunda, genellikle büyük bir kafa karıştırıcı karmaşaya girersiniz.

Dezavantajları

  • Programlama Modeli: Programlama özellikleriyle gerçekten sınırlısınız. C # 'daki tüm harika özellikleri düşünün ve unutun. C # 'daki basit bir veya iki satır ifadesi oldukça büyük bir blok aktivitesi haline gelir. Bu özellikle giriş doğrulaması için bir acıdır. Söyledikten sonra, iş akışlarında yalnızca yüksek düzey mantığı ve C #'daki diğer her şeyi tutmaya gerçekten dikkat ediyorsanız, bu bir sorun olmayabilir.
  • Performans: İş akışları büyük miktarda bellek kullanır. Bir sunucuya çok fazla iş akışı dağıtıyorsanız, tonlarca belleğiniz olduğundan emin olun. Ayrıca iş akışlarının normal C # kodundan çok daha yavaş olduğunu unutmayın.
  • Dik öğrenme eğrisi, hata ayıklaması zor: Yukarıda belirtildiği gibi. İşlerin nasıl işe yarayacağını ve bir şey yapmanın en iyi yolunu bularak çok zaman harcayacaksınız.
  • İş Akışı Sürümü Uyumsuzluğu: Kalıcı olarak bir iş akışı dağıtırsanız ve iş akışında güncelleme yapmanız gerekirse, eski iş akışı örnekleri artık uyumlu değildir. Sözde bu, .NET 4.5'te düzeltildi.
  • VB ifadeleri kullanmalısınız (.NET 4.5, C # ifadelerine izin verir).
  • Esnek değil: Workflow Foundation tarafından sağlanmayan bazı özel veya özel işlevlere ihtiyacınız varsa, çok fazla acıya hazırlanın. Bazı durumlarda mümkün bile olmayabilir. Denemeden kim bilir? Burada çok fazla risk var.
  • Arayüzsüz WCF XAML servisleri: Normalde WCF servisleri ile bir arayüze karşı geliştirirsiniz. WCF XAML Hizmetleriyle, bir WCF XAML Hizmetinin her şeyi bir arabirimde uyguladığından emin olamazsınız. Bir arayüz tanımlamanız bile gerekmez. (bildiğim kadarıyla...)

7
Dezavantajlarınızın çoğu doğru değildir, belki de WF'ye yeterince aşina değilsiniz. WF çok esnektir. Herhangi bir senaryoda yeniden kullanabileceğiniz özel etkinlikler (kod etkinlikleri) yazmanıza izin verir. Yeniden kullanılabilir faaliyetler yazmak size kalmıştır. Faaliyet danışmanlığı ile birlikte İş Danışmanları için bir GUI (İş Akışı Tasarımcısı Host ile WPF uygulaması) sağlayabileceğinizi düşünün. Artık iş mantığını kendi ihtiyaçlarına göre değiştirebilir ve yeniden düzenleyebilirler ve geliştiricilere ihtiyaç duymazlar ve hatta yeni bir uygulama derlerler.
Sven

3
Şimdi İş Danışmanlarının kendi ev sahipliği yapan tasarımcınızı Intellisense olmadan kullanması gerektiğini düşünün! Ya kendi rulo veya Visual Studio kullanmak zorunda. Ayrıca, İş Danışmanlarının tazminat, iptal, istisna yönetimi gibi bazı kavramları bile anlamanın zor olacağını düşünüyorum. Ayrıca uzaktan karmaşık olan herhangi bir mantık, sürdürülemez hale gelen dev bir iş akışıyla sonuçlanacaktır (oh, bu tür iş akışlarını düzenlemek için tonlarca koza ihtiyacınız olacaktır). Yine de haklısınız, özenle hazırlanmış özel aktivitelerle makul miktarda esneklik sağlar.
Mas

27

İş akışı temelini kullanmanın en önemli nedeni, izleme ve kalıcılık açısından sizi kutudan ne kadar çıkardığı. Kalıcılık hizmetini çalıştırmak ve çalıştırmak çok kolaydır, bu da birden fazla örnek ve ana bilgisayar arasında güvenilirlik ve yük dağılımı getirir.

Öte yandan, form uygulamaları gibi, iş akışı tasarımcısının sizi yönlendirdiği kod kalıpları kötüdür. Ancak, iş akışına kod yazmadan ve tüm işleri, iş akışından daha zarif bir şekilde düzenlenebilir ve birim test edilebilen diğer sınıflara devrederek sorunlardan kaçınabilirsiniz. Ardından, spagetti kodunu sarsmadan tasarımcının havalı görsel yönünü elde edersiniz.


11

Şahsen ben WF'de satılmam. Yararlılığı benim için WPF veya WCF gibi diğer yeni MS teknolojileri kadar açık değildi.

Gelecekte WF'nin iş uygulamalarında yoğun bir şekilde kullanılacağını düşünüyorum, ancak bunu kullanmak için hiçbir planım yok çünkü projelerim için iş için doğru araç gibi görünmüyor.


7

Şu anda bir Windows İş Akışı Vakfı (WF) kurmak için çalıştığım şirket ve bunu kullanmayı seçmelerinin nedenleri, kuralların sık sık değişmesi ve çeşitli dll'lerin vb. kuralları DB'ye yerleştirip oradan çağırmaktı. Bu şekilde kuralları değiştirebilir ve dll'leri vb. Yeniden derlemek ve yeniden dağıtmak zorunda kalmazlar.


21
Çok kötü normal web hizmetleri ve uygulamalarında .config dosyaları yoktur, veritabanlarını okuyamaz veya XML veya kurallar içeren yerel dosyaları yeniden derlemeden okuyamaz. Oh bekleyin ...
Dour High Arch

6

Windows İş Akışları, kuzeni BizTalk gibi kodlayıcı olmayan BT yöneticilerini, BA'ları ve benzerlerini baştan çıkarır, ancak pratikte birim testi, hata ayıklama ve kod kapsamı birçok tuzaktan sadece üçüdür. Bazılarının üstesinden gelebilirsiniz, ancak bunu başarmak için büyük yatırım yapmanız gerekirken, düz kod ile bunu elde edersiniz. Gerçekten uzun süren bir gereksiniminiz varsa, muhtemelen daha sofistike bir şeye ihtiyacınız vardır. Dll'leri yeniden derlemeden yeni xaml dosyalarını üretime bırakma konusundaki argümanı duydum, ancak dürüst olmak gerekirse İş Akışlarının tüketeceği zaman, daha iyi bir şekilde derlenmiş dağıtımların sorun olmadığı noktaya Sürekli Entegrasyonunuzu geliştirmek için kullanılabilir.


3

İş akışı ile çalışmam gereken herhangi bir ortamda kullanırım, ancak K2 veya SharePoint 2007 ile birlikte kullanırken platformun gücü gerçekten yararlıdır. İş Zekası uzmanı ile iş uygulamaları geliştirirken platformun kullanılması önerilir ve bu normalde yalnızca iş süreçlerini kolaylaştırmak ve iyileştirmekle ilgilidir.

Kayıt için WF, K2'nin geliştirme ekibi ile birlikte geliştirildi ve yeni K2 Blackpearl, WF üzerine inşa edildi, MOSS 2007 ve WSS 3.0'ın iş akışı motorları da.


2

Görsel arayüzü, izlemeyi ve kalıcılığı korumak için tüm bu kodları manuel olarak yazmak istemediğinizde, WF'ye oy vermek akıllıca bir seçimdir.


1

Windows iş akışını aylardır özel etkinlikler ve geliştiricilerin iş akışları oluşturmak için kullanabileceği yeniden barındırılan bir tasarımcı geliştirmek için kullanıyorum. WF çok güçlüdür, ancak geliştiriciler tarafından oluşturulan özel etkinlikler kadar iyidir. Söz konusu olduğunda, bir geliştirici test etmek ve hata ayıklamak için geliştiriciler tarafından geliştirilen iş akışlarını gözden geçirmek zorunda kalacaktı, ancak taslak iş akışları oluşturabilecekleri noktadan bu harika.

Ayrıca, uzun süren işlemleriniz olduğu durumlarda, WF, işlemleri dinamik olarak güncellemeniz gerektiğinde kullanmak için iyi bir teknoloji yığınıdır - yeniden yüklemek / indirmek veya herhangi bir şey yapmak zorunda kalmadan, yeni XAML dosyalarını bir dizine ekleyin ve mimariniz eskisini not almak ve yenisini kullanmak için sürüm oluşturma ile ayarlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.