ควรใช้ Windows Workflow Foundation เมื่อใด [ปิด]


154

บางสิ่งง่ายกว่าที่จะติดตั้งด้วยมือ (รหัส) แต่บางอย่างง่ายขึ้นผ่าน WF ดูเหมือนว่า WF สามารถใช้สร้างอัลกอริทึม (เกือบ) ชนิดใดก็ได้ ดังนั้น (ในทางทฤษฎี) ฉันสามารถทำทุกอย่างได้ด้วยตรรกะของฉันใน WF แต่อาจเป็นความคิดที่ดีที่จะทำเพื่อโครงการทั้งหมด

ในสถานการณ์ใดควรใช้ WF และเมื่อไหร่ที่จะทำให้ยากขึ้น ข้อดีและข้อเสีย / ค่าใช้จ่ายของ WF กับการเข้ารหัสด้วยมือคืออะไร


3
ดูเหมือนว่าน่าสังเกตว่าการเขียนใหม่ทั้งหมดสำหรับรีลีส 4.0 ซึ่งออกมาหลังจากคำตอบเหล่านี้
sclarson

คำตอบ:


125

คุณอาจต้องใช้ WF เฉพาะหากสิ่งต่อไปนี้เป็นจริง:

  1. คุณมีกระบวนการที่ใช้เวลานาน
  2. คุณมีกระบวนการที่เปลี่ยนแปลงบ่อย
  3. คุณต้องการแบบจำลองภาพของกระบวนการ

สำหรับรายละเอียดเพิ่มเติมดูโพสต์ของ Paul Andrew: จะใช้ Windows Workflow Foundation เพื่ออะไรได้บ้าง

โปรดอย่าสับสนหรือเกี่ยวข้อง WF กับการเขียนโปรแกรมด้วยสายตาทุกชนิด มันผิดและสามารถนำไปสู่การตัดสินใจด้านสถาปัตยกรรม / การออกแบบที่แย่มาก


4
หน่วยการวัดสำหรับกระบวนการที่ใช้เวลานานคืออะไร?
ivorykoder

5
@ivorykoder "กระบวนการ" (จริงๆเวิร์กโฟลว์ ) ที่สามารถอยู่รอดได้รีสตาร์ทเซิร์ฟเวอร์ที่โฮสต์มัน
กุ้งมังกร

หากฉันมีข้อกำหนดที่พอใจเพียง # 1 นั่นคงไม่เพียงพอสำหรับฉันที่จะเลือก WF อย่างไรก็ตามหากข้อกำหนดดังกล่าวรวม # 2 และ / หรือ # 3 นั่นจะเป็นกรณีที่แข็งแกร่งกว่าสำหรับการใช้ WF
Mick

12
ฉันไม่สามารถต้านทานได้: คุณอาจต้องใช้ WF หากสิ่งต่อไปนี้เป็นจริง: เท็จ
Ronnie Overby

84

ไม่เคย คุณอาจจะเสียใจ:

  • โค้งการเรียนรู้ที่สูงชัน
  • การดีบักยาก
  • บำรุงรักษายาก
  • ไม่ได้ให้พลังงานความยืดหยุ่นหรือความสามารถในการผลิตเพียงพอที่จะพิสูจน์ให้เห็นถึงการใช้งาน
  • สามารถและจะเสียหายสถานะแอปพลิเคชันที่ไม่สามารถกู้คืนได้

ครั้งเดียวที่ฉันเคยนึกถึงการใช้ WF คือถ้าฉันต้องการโฮสต์นักออกแบบให้กับผู้ใช้ปลายทางและอาจไม่ถึงตอนนั้น

เชื่อใจฉันไม่มีอะไรจะตรงไปตรงมามีพลังหรือยืดหยุ่นเหมือนรหัสที่คุณเขียนให้ทำในสิ่งที่คุณต้องการ อยู่ห่างจาก WF

แน่นอนว่านี่เป็นเพียงความคิดเห็นของฉัน แต่ฉันคิดว่ามันเป็นสิ่งที่ดีจริงๆ :)


27
-1 ฉันเคารพความคิดเห็นของคุณเกี่ยวกับเรื่องนี้ แต่จะเน้นการอธิบายเหตุผลอย่างมืออาชีพ ฉันไม่เห็นว่าคำตอบแบบนี้ช่วยใครได้
บ้าง

9
ฉันเขียนคำตอบนี้ในวันที่ฉันโกรธที่ WF4 ฉันจะอัปเดตคำตอบของฉันด้วยปัญหาที่ฉันเผชิญ
Ronnie Overby

5
เราสืบทอดโครงการที่เสร็จสมบูรณ์ครึ่งหนึ่งจากที่ปรึกษาซึ่งใช้ WF เป็นแกนหลัก มันมีแนวโน้มที่จะเกิดข้อผิดพลาดเวิร์กโฟลว์ที่เสียหายซึ่งไม่สามารถรีสตาร์ทได้ระบบที่ล้าสมัยซึ่งต้องใช้ซ้ำของเวิร์กโฟลว์สำหรับการเปลี่ยนแปลงเล็กน้อยรหัสที่สร้างขึ้นที่น่ากลัวและรหัสที่ละเอียดอ่อนที่คุณต้องจัดการกับถุงมือเด็ก . หลังจากผ่านไปหกเดือนของหน้าจอสีเหลืองแห่งความตายเราได้ทำลาย WF ทั้งหมดและใช้ xml แทน การตัดสินใจที่ดีที่สุดที่เราเคยทำ
Kevin DeVoe

10
วลี: "ไม่ให้พลังงานความยืดหยุ่นหรือประสิทธิภาพการทำงานเพียงพอที่จะพิสูจน์ให้เห็นถึงการใช้งาน"กล่าวว่าเพียงพอสำหรับฉัน ขอบคุณสำหรับสิ่งนั้น.
David Tansey

1
เกลียดชังต้องอธิบายความเกลียดชังของพวกเขา
Ronnie Overby

46

รหัสที่สร้างโดย WF นั้นน่ารังเกียจ ค่าที่ WF นำมาแสดงในรูปแบบของระบบแม้ว่าฉันจะยังไม่เห็นอะไรเลย (6-7 โครงการในที่ทำงานตอนนี้กับ WF ที่ฉันเกี่ยวข้องด้วย) ซึ่งฉันไม่ต้องการโครงการเขียนโค้ดมือที่ง่ายกว่า .


40

โดยทั่วไปหากคุณไม่ต้องการคุณลักษณะการคงอยู่และการติดตาม (ซึ่งในความเห็นของฉันเป็นคุณสมบัติหลัก) คุณไม่ควรใช้ Workflow Foundation

นี่คือข้อดีและข้อเสียของ Workflow Foundation ที่รวบรวมจากประสบการณ์ของฉัน:

ข้อดี

  • ความคงทน: หากคุณกำลังจะมีกระบวนการที่ใช้เวลานาน (คิดว่าวันสัปดาห์เดือน) กระบวนการทำงานนั้นยอดเยี่ยมสำหรับสิ่งนี้ อินสแตนซ์เวิร์กโฟลว์ที่ไม่ทำงานจะคงอยู่ในฐานข้อมูลดังนั้นจึงไม่ใช้หน่วยความจำมากเกินไป
  • การติดตาม: WF จัดเตรียมกลไกในการติดตามแต่ละกิจกรรมที่ดำเนินการในเวิร์กโฟลว์
  • * Visual Designer: ฉันใส่สิ่งนี้เป็น * เพราะฉันคิดว่านี่มีประโยชน์สำหรับวัตถุประสงค์ทางการตลาดเท่านั้น ในฐานะนักพัฒนาฉันชอบที่จะเขียนโค้ดมากกว่าที่จะหักมุมมองด้วยกัน และเมื่อคุณมีเวิร์กโฟลว์ที่ไม่ใช่นักพัฒนาคุณมักจะจบลงด้วยความสับสนวุ่นวาย

ข้อเสีย

  • รูปแบบการเขียนโปรแกรม: คุณมีข้อ จำกัด ในคุณสมบัติการเขียนโปรแกรม คิดถึงคุณสมบัติที่ยอดเยี่ยมทั้งหมดที่คุณมีใน C # แล้วลืมมันไป คำสั่งหนึ่งหรือสองประโยคง่าย ๆ ใน C # กลายเป็นกิจกรรมบล็อกขนาดใหญ่พอสมควร นี่เป็นความเจ็บปวดโดยเฉพาะสำหรับการตรวจสอบอินพุต ต้องบอกว่าถ้าคุณระมัดระวังจริง ๆ ที่จะเก็บเฉพาะตรรกะระดับสูงในเวิร์กโฟลว์และทุกอย่างอื่นใน C # ก็อาจจะไม่เป็นปัญหา
  • ประสิทธิภาพการทำงาน: เวิร์กโฟลว์ใช้หน่วยความจำจำนวนมาก หากคุณกำลังปรับใช้เวิร์กโฟลว์จำนวนมากบนเซิร์ฟเวอร์ตรวจสอบให้แน่ใจว่าคุณมีหน่วยความจำมากมาย โปรดทราบว่าเวิร์กโฟลว์นั้นช้ากว่ารหัส C # ปกติมาก
  • โค้งการเรียนรู้ที่สูงชันยากที่จะแก้ปัญหา: ตามที่กล่าวไว้ข้างต้น คุณจะต้องใช้เวลามากมายในการหาวิธีทำงานให้สำเร็จและหาวิธีที่ดีที่สุดในการทำอะไรสักอย่าง
  • การเข้ากันไม่ได้ของเวอร์ชันของเวิร์กโฟลว์: หากคุณปรับใช้เวิร์กโฟลว์ด้วยการคงอยู่และคุณต้องทำการอัปเดตกับเวิร์กโฟลว์อินสแตนซ์เวิร์กโฟลว์เก่าจะไม่สามารถใช้งานได้อีกต่อไป สมมุติว่าสิ่งนี้ได้รับการแก้ไขใน. NET 4.5
  • คุณต้องใช้นิพจน์ VB (. NET 4.5 อนุญาตสำหรับนิพจน์ C #)
  • ไม่ยืดหยุ่น: หากคุณต้องการฟังก์ชั่นพิเศษหรือฟังก์ชั่นเฉพาะที่ไม่ได้จัดเตรียมโดย Workflow Foundation ให้เตรียมพร้อมสำหรับความเจ็บปวดมากมาย ในบางกรณีอาจไม่สามารถทำได้ ใครจะรู้จนกว่าคุณจะลอง มีความเสี่ยงมากมายที่นี่
  • บริการ WCF XAML ที่ไม่มีส่วนต่อประสาน: โดยปกติแล้วกับบริการ WCF คุณจะต้องพัฒนากับส่วนต่อประสาน ด้วยบริการ WCF XAML คุณไม่สามารถมั่นใจได้ว่าบริการ WCF XAML ได้ดำเนินการทุกอย่างในอินเทอร์เฟซ คุณไม่จำเป็นต้องกำหนดอินเทอร์เฟซ (เท่าที่ฉันรู้...)

7
ข้อเสียส่วนใหญ่ของคุณไม่เป็นความจริงบางทีคุณอาจไม่คุ้นเคยกับ WF WF มีความยืดหยุ่นมาก ช่วยให้คุณเขียนกิจกรรมที่กำหนดเอง (กิจกรรมรหัส) ที่คุณสามารถนำมาใช้ใหม่ได้ในทุกสถานการณ์ มันขึ้นอยู่กับคุณที่จะเขียนกิจกรรมที่ใช้ซ้ำได้ ลองนึกภาพคุณจะสามารถให้ GUI (WPF app กับ Workflow Designer Host) แก่ที่ปรึกษาทางธุรกิจพร้อมกับชุดเครื่องมือของกิจกรรม ตอนนี้พวกเขาสามารถเปลี่ยนแปลงและจัดเรียงตรรกะทางธุรกิจอีกครั้งตามความต้องการและไม่ต้องการนักพัฒนาและแม้แต่รวบรวมแอปพลิเคชันใหม่
Sven

3
ตอนนี้ลองนึกภาพที่ที่ปรึกษาทางธุรกิจจะต้องใช้นักออกแบบที่คุณโฮสต์ แต่ไม่มี Intellisense! หมุนตัวคุณเองหรือคุณต้องใช้ Visual Studio ฉันยังคิดว่ามันจะเป็นเรื่องยากสำหรับที่ปรึกษาทางธุรกิจที่จะเข้าใจแนวคิดบางอย่างเช่นค่าตอบแทนการยกเลิกการจัดการข้อยกเว้น นอกจากนี้ตรรกะใด ๆ ที่เป็นเหตุการณ์ที่ซับซ้อนจากระยะไกลจะส่งผลให้เวิร์กโฟลว์ขนาดใหญ่ที่ไม่สามารถรักษาได้ (โอ้และคุณจะต้องใช้ RAM จำนวนมากเพื่อแก้ไขเวิร์กโฟลว์ดังกล่าว) คุณคิดถูกแล้วด้วยกิจกรรมที่กำหนดเองที่ออกแบบมาอย่างพิถีพิถันจะให้ความยืดหยุ่นในระดับพอใช้
มาส

27

เหตุผลสำคัญที่ฉันพบว่าใช้รากฐานของเวิร์กโฟลว์คือจำนวนของการนำคุณออกจากกล่องในแง่ของการติดตามและการคงอยู่ ง่ายมากที่จะให้บริการคงอยู่และทำงานซึ่งจะทำให้ความน่าเชื่อถือและการกระจายโหลดระหว่างหลายอินสแตนซ์กับโฮสต์

ในทางกลับกันเช่นเดียวกับฟอร์มแอพรูปแบบรหัสที่นักออกแบบเวิร์กโฟลว์ผลักดันให้คุณเข้าหานั้นไม่ดี แต่คุณสามารถหลีกเลี่ยงปัญหาโดยการเขียนโค้ดในเวิร์กโฟลว์และมอบหมายงานทั้งหมดให้กับคลาสอื่นซึ่งสามารถจัดระเบียบและทดสอบหน่วยได้อย่างงดงามยิ่งกว่าเวิร์กโฟลว์ จากนั้นคุณจะได้ภาพลักษณ์ที่ดูเท่ห์ของนักออกแบบโดยไม่ต้องมีรหัสของสปาเก็ตตี้อยู่ด้านหลัง


11

ส่วนตัวผมไม่ได้ขายใน WF มันมีประโยชน์ไม่ชัดเจนสำหรับฉันเหมือนกับเทคโนโลยี MS อื่น ๆ เช่น WPF หรือ WCF

ฉันคิดว่า WF จะถูกใช้อย่างมากในแอปพลิเคชันทางธุรกิจในอนาคต แต่ฉันไม่มีแผนที่จะใช้เพราะมันไม่ได้เป็นเครื่องมือที่เหมาะสมสำหรับงานในโครงการของฉัน


7

บริษัท ที่ฉันกำลังทำงานเพื่อตั้งค่า Windows Workflow Foundation (WF) และเหตุผลที่พวกเขาเลือกที่จะใช้มันเป็นเพราะกฎจะเปลี่ยนบ่อยและจะบังคับให้พวกเขาทำการคอมไพล์ของ dll ต่างๆและอื่น ๆ คือการวางกฎใน DB และเรียกพวกเขาจากที่นั่น วิธีนี้พวกเขาสามารถเปลี่ยนกฎและไม่ต้องคอมไพล์และแจกจ่ายซ้ำที่กำลังเป็นต้น


21
บริการและแอปพลิเคชันทั่วไปที่แย่เกินไปไม่มีไฟล์. config ไม่สามารถอ่านฐานข้อมูลหรืออ่าน XML หรือไฟล์โลคัลที่มีกฎโดยไม่ต้องคอมไพล์ใหม่ โอ้รอ ...
Dour High Arch

6

Windows Workflows ล่อลวงผู้จัดการด้านไอทีที่ไม่ได้เข้ารหัส BAs และอื่น ๆ เช่นเดียวกับลูกพี่ลูกน้องของ BizTalk แต่ในการทดสอบหน่วยฝึกหัดการดีบักและการครอบคลุมโค้ดเป็นเพียงสามข้อผิดพลาดมากมาย คุณสามารถเอาชนะพวกเขาบางคนได้ แต่คุณต้องลงทุนอย่างหนักเพื่อให้ได้สิ่งนั้นในขณะที่ด้วยรหัสธรรมดาที่คุณเพิ่งได้รับ หากคุณมีความต้องการที่ยาวนานจริงๆคุณอาจต้องการบางสิ่งที่ซับซ้อนกว่านี้ ฉันได้ยินข้อโต้แย้งเกี่ยวกับความสามารถในการวางไฟล์ xaml ใหม่ลงในการผลิตโดยไม่ต้องรวบรวม DLLs อีกครั้ง แต่โดยสุจริตเวลาที่เวิร์กโฟลว์จะใช้อาจดีกว่าเพื่อปรับปรุงการรวมอย่างต่อเนื่องของคุณจนถึงจุดที่คอมไพล์ deploys ไม่ใช่ปัญหา


3

ฉันจะใช้มันในทุกสภาพแวดล้อมที่ฉันต้องการทำงานกับเวิร์กโฟลว์ แต่เมื่อใช้ร่วมกับ K2 หรือ SharePoint 2007 พลังของแพลตฟอร์มนั้นมีประโยชน์อย่างแท้จริง เมื่อพัฒนาแอปพลิเคชันธุรกิจด้วยผู้เชี่ยวชาญ BI แนะนำให้ใช้แพลตฟอร์มและโดยปกติจะเกี่ยวข้องกับการปรับปรุงและปรับปรุงกระบวนการทางธุรกิจเท่านั้น

สำหรับบันทึก WF ได้รับการพัฒนาร่วมกับทีมพัฒนาของ K2 และ K2 Blackpearl ใหม่ถูกสร้างขึ้นบน WF ดังนั้นเครื่องยนต์เวิร์กโฟลว์ของ MOSS 2007 และ WSS 3.0


2

เมื่อคุณไม่ต้องการที่จะเขียนรหัสทั้งหมดเหล่านั้นเพื่อรักษาอินเตอร์เฟสภาพการติดตามและการคงอยู่มันเป็นทางเลือกที่ฉลาดในการลงคะแนนให้ WF


1

ฉันใช้เวิร์กโฟลว์ของ Windows มาหลายเดือนแล้วเพื่อพัฒนากิจกรรมที่กำหนดเองและนักออกแบบที่โฮสต์ใหม่ซึ่งไม่ใช่ผู้พัฒนาสามารถใช้เพื่อสร้างเวิร์กโฟลว์ได้ WF มีประสิทธิภาพมาก แต่ก็ดีพอ ๆ กับกิจกรรมที่กำหนดเองที่นักพัฒนาสร้างขึ้น เมื่อพูดถึงมันนักพัฒนาจะต้องตรวจสอบเวิร์กโฟลว์ที่สร้างโดยผู้พัฒนาที่ไม่ใช่นักพัฒนาเพื่อทดสอบและตรวจแก้จุดบกพร่อง แต่จากจุดที่พวกเขาสามารถสร้างเวิร์กโฟลว์แบบร่างได้

นอกจากนี้ในกรณีที่คุณมีกระบวนการที่ใช้เวลานาน WF เป็นสแต็คเทคที่ดีที่จะใช้เมื่อคุณต้องการอัปเดตกระบวนการแบบไดนามิกโดยไม่ต้องติดตั้งใหม่ / ดาวน์โหลดหรือทำอะไรเลยเพียงแค่เพิ่มไฟล์ XAML ใหม่ลงในไดเรกทอรีและสถาปัตยกรรมของคุณ ตั้งค่าด้วยการกำหนดเวอร์ชันเพื่อคัดลอกเก่าและใช้ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.