it-swarm-tr.com

Windows Workflow Foundation'ı ne zaman kullanmalı?

Bazı şeylerin sadece elle (kod) uygulanması kolaydır, ancak bazıları WF ile daha kolaydır. Görünüşe göre, WF her çeşit algoritmayı oluşturmak için (neredeyse) kullanılabilir. Yani (teorik olarak) WF'deki bütün mantığımı yapabilirim, ama muhtemelen tüm projeler için yapmak kötü bir fikirdir.

Hangi durumlarda WF kullanmak iyi bir fikirdir ve ne zaman işleri zorlaştırır? WF 'nin artıları ve eksileri/maliyetleri nelere göre elle kodlanır?

148
Sumrak

WF öğesine yalnızca aşağıdakilerden biri doğru olduğunda gerekebilir:

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

Daha fazla bilgi için, bkz. Paul Andrew'un gönderisi: Windows Workflow Foundation'ı ne için kullanmalı?

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

121
Panos

Asla. Muhtemelen pişman olacaksın:

  • 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ılamaz durumda olan uygulama durumunu bozabilir ve çözer

WF 'yi kullanmayı düşünebildiğim tek zaman tasarımcıyı bir son kullanıcı için barındırmak istesem ve muhtemelen o zaman bile olmasaydı.

İnan bana, hiçbir şey tam olarak yapman gerekeni yapmak için yazdığın kod kadar basit, güçlü veya esnek olamaz. WF'den uzak durun.

Tabii ki, bu sadece benim görüşüm, ama bence bu çok iyi bir fikir. :)

80
Ronnie Overby

WF tarafından oluşturulan kod çok kötü. WF 'nin getirdiği değer sistemin görsel temsilinde olmasına rağmen, henüz bir şey görmedim (şu anda çalıştığım WF ile birlikte şu an 6 - proje çalışıyorum) basit bir kodlanmış projeyi tercih etmedim.

47
craigb

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

İşte deneyimimden topladığım Workflow Foundation'ın avantajları ve dezavantajları:

Avantajlar

  • Kalıcılık: Çok uzun süren süreçlere sahip olacaksanız (gün, hafta, ay düşünün), İş Akışları bunun için mükemmeldir. Boşta iş akışı örnekleri veritabanına kalıcıdır, bu nedenle belleği kullanmaz.
  • İzleme: WF, bir iş akışında yürütülen her etkinliği takip etme mekanizması sağlar
  • * Görsel Tasarımcı: Bunu * olarak koydum, çünkü bunun sadece pazarlama amaçları için gerçekten yararlı olduğunu düşünüyorum. Bir geliştirici olarak, şeyleri görsel olarak bir araya getirmek yerine kod yazmayı tercih ederim. Ve geliştirici olmayan iş akışları yaptığınız zaman, genellikle çok kafa karıştırıcı karışıklıklarla karşılaşırsınız.

Dezavantajları

  • Programlama Modeli: Programlama özellikleri konusunda gerçekten sınırlısınız. C # 'daki tüm harika özellikleri düşünün, sonra da unutun. C # 'daki basit bir veya iki satırlı ifadeler oldukça büyük blok aktiviteleri olur. Bu, özellikle giriş doğrulama için bir acıdır. Bunu söylemek gerekirse, iş akışlarında ve C #'daki diğer her şeyde yalnızca yüksek düzeyde mantık tutmaya gerçekten dikkat ediyorsanız, o zaman 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 yürüdüğünü ve bir şeyi yapmanın en iyi yolunu bulmak için çok zaman harcayacaksınız.
  • İş Akışı Sürümü Uyumsuzluğu: Kalıcı bir iş akışı dağıtıyorsanız ve iş akışında güncellemeler yapmanız gerekirse, eski iş akışı örnekleri artık uyumlu değildir. Güya bu .NET 4. 0'da düzeltildi.
  • VB ifadelerini kullanmanız gerekir (.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 acı çekmek için hazırlanın. Bazı durumlarda mümkün olmayabilir. Denene kadar kim biliyor? Burada çok risk var.
  • Arayüzsüz WCF XAML servisleri: Normalde WCF servisleri ile bir arayüze karşı geliştirirsiniz. WCF XAML Hizmetleri ile, bir WCF XAML Hizmetinin her şeyi bir arayüzde uyguladığından emin olamazsınız. Bir arayüz tanımlamanıza bile gerek yok. (bildiğim kadarıyla...)
38
Mas

İş akışı altyapısını kullanmamın en büyük nedeni, sizi takip ve sebat açısından kutunun dışına çıkarmasıdır. Kalıcılık servisini ç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ı sağlar.

Diğer taraftan, tıpkı form uygulamaları gibi, iş akışı tasarımcısının sizi yönlendirdiği kod kalıpları da kötü. Ancak, iş akışında kod yazmadan ve tüm çalışmaları iş akışından daha zarif bir şekilde test edilip düzenlenebilir ve ünite olarak test edilebilecek diğer sınıflara dağıtarak sorunları önleyebilirsiniz. Ardından, spagetti kodunun zarafeti olmadan tasarımcının harika görsel yanını elde edersiniz.

26
Tegan Mulholland

Şahsen ben WF'de satılmadım. Yararı, WPF veya WCF gibi diğer yeni MS teknolojileri kadar bana açık değildi.

Gelecekte iş uygulamalarında WF yoğun bir şekilde kullanılacağını düşünüyorum, ancak projelerim için iş için doğru araç gibi görünmediğinden kullanmaya planım yok.

11
Rob

Şu anda çalışmakta olduğum şirket, bir Windows Workflow Foundation (WF) kurmayı ve kullanmayı seçmelerinin nedenleri, kuralların sık sık değişmesi ve onları çeşitli dll'ler vb. Kuralları DB'ye yerleştirip oradan çağırmaktı. Bu yolla kuralları değiştirebiliyorlardı ve işleri yeniden derleyip yeniden dağıtmak zorunda kalmıyorlardı. 

6
Pritesh

Windows Workflows, kodlama yapmayan BT yöneticilerini, BA'ları ve benzerlerini kuzeni BizTalk'ta olduğu gibi baştan çıkarır; ancak uygulamada birim testi, hata ayıklama ve kod kapsamı birçok tuzaktan yalnızca üçüdür. Bunlardan bazılarının üstesinden gelebilirsiniz, ancak bunu elde etmek için çok fazla yatırım yapmanız gerekir, oysa sade kodla bunu elde edersiniz. Eğer gerçekten uzun süren bir gereksiniminiz varsa, muhtemelen daha karmaşık bir şeye ihtiyacınız vardır. Yeni xaml dosyalarını yeniden derleme işlemlerini yapmadan üretime bırakma argümanını duydum ama dürüst olmak gerekirse, Dürüst olmak gerekirse, Workflow'ların tüketeceği zaman, Sürekli Entegrasyonunuzu derlenmiş dağıtmaların sorun olmadığı noktaya geliştirmek için daha iyi kullanılabilir.

5
Owain Glyndŵr

İş akışı ile çalışmam gereken herhangi bir ortamda kullanırdım, ancak K2 ve hatta SharePoint 2007 ile birlikte kullanıldığında platformun gücü gerçekten kullanışlı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ştirmek için geçerli olacaktır.

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

2
BinaryMisfit

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

1
sparksustc

Özel etkinlikleri geliştirmek için aylardır Windows iş akışını ve geliştirici olmayanların iş akışları oluşturmak için kullanabileceği yeniden barındırılan bir tasarımcıyı kullanıyorum. WF çok güçlüdür, ancak yalnızca geliştiriciler tarafından oluşturulan özel etkinlikler kadar iyidir. Konuya gelince, bir geliştirici, geliştiriciler tarafından test etmek ve hata ayıklamak için oluşturulmuş iş akışlarına bakmak zorunda kalacak, ancak bu noktadan sonra taslak iş akışları yaratabilecekleri - fantastik.

Ayrıca, uzun süren işlemlerin olduğu durumlarda WF süreçleri 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 kazınacak ve yenisini kullanacak şekilde sürüm oluşturma ile kurulmalıdır.

0
JohnChris