विंडोज वर्कफ़्लो फाउंडेशन का उपयोग कब करें? [बन्द है]


154

कुछ चीजें सिर्फ हाथ से (कोड) लागू करना आसान हैं, लेकिन कुछ डब्ल्यूएफ के माध्यम से आसान हैं। ऐसा लगता है कि किसी भी तरह के एल्गोरिथ्म को बनाने के लिए डब्ल्यूएफ का उपयोग किया जा सकता है। इसलिए (सैद्धांतिक रूप से) मैं अपने सभी तर्क डब्ल्यूएफएफ में कर सकता हूं, लेकिन यह संभवतः सभी परियोजनाओं के लिए करना एक बुरा विचार है।

WF का उपयोग करना किन परिस्थितियों में एक अच्छा विचार है और जब यह चीजों को कठिन बना देगा तो उन्हें होना ही होगा? डब्ल्यूएफ बनाम कोडिंग के पेशेवरों और विपक्ष / लागत क्या हैं?


3
यह ध्यान देने योग्य है कि 4.0 उत्तर के लिए पूरी तरह से फिर से लिखा गया है जो इन उत्तरों के बाद सामने आया।
स्कैलर्सन

जवाबों:


125

आपको निम्न में से कोई भी सत्य होने पर ही WF की आवश्यकता हो सकती है:

  1. आपके पास एक लंबी चलने वाली प्रक्रिया है।
  2. आपके पास एक प्रक्रिया है जो अक्सर बदलती रहती है।
  3. आप प्रक्रिया का एक दृश्य मॉडल चाहते हैं।

अधिक जानकारी के लिए, पॉल एंड्रयू पोस्ट देखें: विंडोज वर्कफ़्लो फाउंडेशन का उपयोग किस लिए करें?

कृपया किसी भी तरह के दृश्य प्रोग्रामिंग के साथ डब्ल्यूएफ को भ्रमित या संबंधित न करें। यह गलत है और बहुत खराब आर्किटेक्चर / डिजाइन निर्णय ले सकता है।


4
लंबी चलने वाली प्रक्रिया के लिए मापने की इकाई क्या है?
ivorykoder

5
@ivorykoder "प्रोसेस" (वास्तव में वर्कफ़्लोज़ ) जो सर्वर को होस्ट करने के पुनरारंभ को जीवित कर सकता है।
लॉबस्टरवाद

यदि मेरे पास ऐसी आवश्यकताएं हैं जो केवल # 1 को संतुष्ट करती हैं, तो मेरे लिए WF का चयन करना पर्याप्त नहीं होगा। हालाँकि, यदि आवश्यकताओं में # 2 और / या # 3 शामिल हैं, तो यह WF का उपयोग करने के लिए अधिक मजबूत मामला होगा।
मिक

12
मैं विरोध नहीं कर सकता: आपको केवल तभी DNS की आवश्यकता हो सकती है जब निम्न में से कोई भी सत्य हो: असत्य।
रॉनी ओवरबी

84

कभी नहीँ। आपको शायद पछतावा होगा:

  • तेजी से सीखने की अवस्था
  • डिबग करना मुश्किल है
  • बनाए रखना मुश्किल है
  • पर्याप्त शक्ति, लचीलापन या उत्पादकता लाभ प्रदान नहीं करता है ताकि इसके उपयोग को सही ठहराया जा सके
  • कर सकते हैं और पुनर्प्राप्त कर सकते हैं भ्रष्ट राज्य है कि बरामद नहीं किया जा सकता है

केवल एक बार मैं कभी भी WF का उपयोग करने की कल्पना नहीं कर सकता था, अगर मैं डिजाइनर को एंड-यूज़र के लिए होस्ट करना चाहता था और शायद तब भी नहीं।

मेरा विश्वास करो, कुछ भी कभी भी उतना सरल, शक्तिशाली या लचीला नहीं होगा जितना कि आप उस कोड को लिखते हैं जो आपको वह करने के लिए आवश्यक है जो आपको करना है। WF से दूर रहें।

बेशक, यह केवल मेरी राय है, लेकिन मुझे लगता है कि यह बहुत अच्छा है। :)


27
-1 मैं इस पर आपकी राय का सम्मान करता हूं, लेकिन इस कारण के एक पेशेवर अन्वेषण को बहुत महत्व देता हूं। मैं यह नहीं देख सकता कि इस तरह का जवाब किसी को कैसे मदद करता है
danfromisrael

9
मैंने एक दिन यह उत्तर लिखा था कि मुझे WF4 पर गुस्सा था। मैंने जिन मुद्दों का सामना किया है, उनके साथ अपने जवाब को अपडेट करूंगा।
रॉनी ओवरबाई

5
हमें एक सलाहकार से आधा पूरा होने वाला प्रोजेक्ट विरासत में मिला है जो WF को अपनी रीढ़ के रूप में इस्तेमाल करता है। यह त्रुटियों से ग्रस्त था, भ्रष्ट वर्कफ़्लोज़ जिन्हें फिर से शुरू नहीं किया जा सकता है, एक पुरातन संस्करण प्रणाली जिसमें किसी भी मामूली परिवर्तन, भयानक उत्पन्न कोड और ऐसे नाजुक कोड के लिए वर्कफ़्लो की एक पूरी डुप्लिकेट की आवश्यकता होती है, जिसे आपको बच्चे के दस्ताने के साथ संभालना होगा । मृत्यु के 6 महीने बाद पीली स्क्रीन से हमने पूरे डब्ल्यूएफ को हटा दिया और इसके बजाय एक्सएमएल का इस्तेमाल किया। सबसे अच्छा फैसला हमने कभी किया।
केविन डेवो

10
वाक्यांश: "इसके उपयोग को उचित ठहराने के लिए पर्याप्त शक्ति, लचीलापन या उत्पादकता हासिल नहीं करता है" मेरे लिए काफी पर्याप्त है। उसके लिये आपका धन्यवाद।
डेविड टैन्से

1
नफरत करने वालों को अपनी नफरत को समझाने की जरूरत है।
रॉनी ओवरबी

46

डब्ल्यूएफ द्वारा निर्मित कोड बुरा है। डब्ल्यूएफ जो मूल्य लाता है वह सिस्टम के दृश्य प्रतिनिधित्व में है, हालांकि मुझे अभी तक कुछ भी नहीं देखना है (6-7 परियोजनाएं अब काम कर रही हैं जो कि मैं डब्ल्यूएफ के साथ जुड़ा हुआ हूं) जहां मैंने एक सरल हाथ कोडित परियोजना को प्राथमिकता नहीं दी थी ।


40

सामान्य तौर पर, यदि आपको दृढ़ता और ट्रैकिंग सुविधाओं की आवश्यकता नहीं है (जो मेरी राय में मुख्य विशेषताएं हैं), तो आपको वर्कफ़्लो फ़ाउंडेशन का उपयोग नहीं करना चाहिए।

यहाँ वर्कफ़्लो फ़ाउंडेशन के फ़ायदे और नुकसान हैं जो मैंने अपने अनुभव से लिए हैं:

लाभ

  • दृढ़ता: यदि आप कई लंबी चलने वाली प्रक्रियाएं (दिन, सप्ताह, महीने) सोचते हैं, तो इसके लिए वर्कफ़्लोज़ महान हैं। निष्क्रिय वर्कफ़्लो इंस्टेंसेस डेटाबेस के लिए बने रहते हैं, इसलिए यह मेमोरी का उपयोग नहीं करता है।
  • ट्रैकिंग: WF वर्कफ़्लो में निष्पादित प्रत्येक गतिविधि को ट्रैक करने के लिए तंत्र प्रदान करता है
  • * विज़ुअल डिज़ाइनर: मैंने इसे * के रूप में रखा है, क्योंकि मुझे लगता है कि यह वास्तव में केवल विपणन उद्देश्यों के लिए उपयोगी है। एक डेवलपर के रूप में, मैं नेत्रहीन एक साथ चीजों को तड़कने के बजाय कोड लिखना पसंद करता हूं। और जब आपके पास एक गैर-डेवलपर वर्कफ़्लो होता है, तो आप अक्सर एक विशाल भ्रामक गड़बड़ करते हैं।

नुकसान

  • प्रोग्रामिंग मॉडल: आप वास्तव में प्रोग्रामिंग सुविधाओं में सीमित हैं। सी # में आपके पास मौजूद सभी शानदार विशेषताओं के बारे में सोचें, फिर उनके बारे में भूल जाएं। सी # में सरल एक या दो लाइन स्टेटमेंट काफी बड़ी ब्लॉक गतिविधियां बन जाती हैं। यह विशेष रूप से इनपुट सत्यापन के लिए एक दर्द है। यह कहते हुए कि, यदि आप वर्कफ़्लोज़ में केवल उच्च-स्तरीय तर्क रखने के लिए सावधान हैं, और C # में सब कुछ है, तो यह समस्या नहीं हो सकती है।
  • प्रदर्शन: वर्कफ़्लो मेमोरी की एक बड़ी मात्रा का उपयोग करता है। यदि आप एक सर्वर पर बहुत सारे वर्कफ़्लो तैनात कर रहे हैं, तो सुनिश्चित करें कि आपके पास बहुत सारी मेमोरी है। यह भी ध्यान रखें कि वर्कफ़्लो सामान्य C # कोड की तुलना में बहुत धीमा है।
  • कठिन सीखने की अवस्था, कठिन डिबग: जैसा कि ऊपर उल्लेख किया गया है। आप बहुत समय बिता रहे हैं ताकि यह पता चले कि चीजों को कैसे काम करना है, और कुछ करने का सबसे अच्छा तरीका है।
  • वर्कफ़्लो संस्करण इनकम्पैटिबिलिटी: यदि आप किसी वर्कफ़्लो को दृढ़ता के साथ परिनियोजित करते हैं, और आपको वर्कफ़्लो को अपडेट करने की आवश्यकता है, तो पुराने वर्कफ़्लो इंस्टेंसेस अब संगत नहीं हैं। माना जाता है कि यह .NET 4.5 में तय किया गया है।
  • आपको VB एक्सप्रेशन (.NET 4.5 C # एक्सप्रेशन के लिए अनुमति देता है) का उपयोग करना होगा।
  • लचीला नहीं: यदि आपको कुछ विशेष या विशिष्ट कार्यक्षमता की आवश्यकता है, जो वर्कफ़्लो फ़ाउंडेशन द्वारा प्रदान नहीं की गई है, तो बहुत दर्द के लिए तैयार रहें। कुछ मामलों में, यह भी संभव नहीं हो सकता है। कौन जानता है कि जब तक आप कोशिश नहीं करते? यहां बहुत जोखिम है।
  • इंटरफेस के बिना WCF XAML सेवाएं: आम तौर पर WCF सेवाओं के साथ, आप एक इंटरफेस के खिलाफ विकसित होते हैं। WCF XAML सेवाओं के साथ, आप यह सुनिश्चित नहीं कर सकते कि WCF XAML सेवा ने एक इंटरफ़ेस में सब कुछ लागू किया है। आपको एक इंटरफ़ेस परिभाषित करने की भी आवश्यकता नहीं है। (जहाँ तक मुझे पता है...)

7
आपके अधिकांश नुकसान केवल सच नहीं हैं, शायद आप WF से परिचित नहीं हैं। डब्ल्यूएफ बहुत लचीला है। आइए आप कस्टम गतिविधियों (कोड गतिविधियों) को लिखते हैं जिसे आप किसी भी परिदृश्य में पुन: उपयोग कर सकते हैं। पुन: प्रयोज्य गतिविधियों को लिखना आपके ऊपर है। कल्पना कीजिए कि आप गतिविधियों के एक टूलसेट के साथ बिजनेस कंसल्टेंट्स को GUI (वर्कफ़्लो डिज़ाइनर होस्ट के साथ WPF ऐप) प्रदान करने में सक्षम होंगे। अब वे अपनी आवश्यकताओं में व्यावसायिक तर्क को बदल सकते हैं और पुन: व्यवस्थित कर सकते हैं और उन्हें डेवलपर्स की आवश्यकता नहीं है और यहां तक ​​कि एक नया एप्लिकेशन भी संकलित करें।
स्वेन

3
अब कल्पना करें कि बिजनेस कंसल्टेंट्स को आपके सेल्फ-होस्टेड डिज़ाइनर का उपयोग करना है, लेकिन बिना इन्टेलिसेंस के! या तो अपना स्वयं का रोल करें या आपको Visual Studio का उपयोग करना होगा। मुझे यह भी लगता है कि व्यावसायिक सलाहकारों के लिए कुछ अवधारणाओं को समझना मुश्किल होगा, जैसे कि क्षतिपूर्ति, रद्दीकरण, अपवाद हैंडलिंग। दूरस्थ रूप से जटिल होने वाले किसी भी तर्क के परिणामस्वरूप एक विशाल वर्कफ़्लो होगा जो अचूक हो जाता है (ओह, और आपको ऐसे वर्कफ़्लो को संपादित करने के लिए टन की आवश्यकता होगी)। हालांकि आप सही हैं, सावधानी से तैयार की गई कस्टम गतिविधियों के साथ उचित मात्रा में लचीलापन प्रदान करते हैं।
मास

27

वर्कफ़्लो फाउंडेशन का उपयोग करने के लिए मैंने जो प्रमुख कारण पाया है, वह ट्रैकिंग और दृढ़ता के मामले में आपको बॉक्स से बाहर लाता है। दृढ़ता सेवा को प्राप्त करना और चलाना बहुत आसान है, जो कई उदाहरणों और मेजबानों के बीच विश्वसनीयता और भार वितरण लाता है।

दूसरी ओर, फॉर्म ऐप्स की तरह, कोड पैटर्न जो वर्कफ़्लो डिज़ाइनर को आपकी ओर धकेलता है, खराब हैं। लेकिन आप वर्कफ़्लो में कोई कोड न लिखकर और सभी कामों को अन्य वर्गों को सौंप कर समस्याओं से बच सकते हैं, जिन्हें व्यवस्थित किया जा सकता है और यूनिट वर्कफ़्लो की तुलना में अधिक शान से परीक्षण किया जाता है। फिर आपको स्पैगेटी कोड के क्रॉफ्ट के बिना डिजाइनर का शांत दृश्य पहलू मिलता है।


11

निजी तौर पर, मुझे डब्ल्यूएफ पर बेचा नहीं जाता है। यह WPF या WCF की तरह अन्य नई एमएस तकनीकों के रूप में मेरे लिए स्पष्ट नहीं था।

मुझे लगता है कि भविष्य में डब्ल्यूएफ को व्यावसायिक अनुप्रयोगों में भारी उपयोग किया जाएगा, लेकिन मेरे पास इसका उपयोग करने की कोई योजना नहीं है क्योंकि यह मेरी परियोजनाओं के लिए नौकरी के लिए सही उपकरण नहीं लगता है।


7

वर्तमान में मैं जिस कंपनी के लिए एक विंडोज वर्कफ़्लो फ़ाउंडेशन (WF) स्थापित करने के लिए काम कर रहा हूँ और जिन कारणों से उन्होंने इसका उपयोग करने के लिए चुना था, क्योंकि नियम अक्सर बदलते रहते थे और जो उन्हें विभिन्न dll इत्यादि के एक recompile को करने के लिए मजबूर करेंगे और इसलिए उनका समाधान नियमों को DB में रखना और उन्हें वहां से बुलाना था। इस तरह वे नियमों में बदलाव कर सकते हैं और उन्हें पुनर्वितरण नहीं करना चाहिए और dlls आदि का पुनर्वितरण नहीं करना चाहिए।


21
बहुत खराब नियमित वेब सेवाओं और अनुप्रयोगों के पास .config फाइलें नहीं हैं, डेटाबेस नहीं पढ़ सकते हैं, न ही XML और न ही स्थानीय फाइलें पढ़ सकते हैं, जिनमें नियम नहीं होते हैं। ओह रुको ...
डोर हाई आर्क

6

विंडोज वर्कफ्लोज़ गैर-कोडिंग आईटी प्रबंधकों, बीए और जैसे कि इसके चचेरे भाई बिज़ॉक को आकर्षित करता है लेकिन अभ्यास इकाई परीक्षण में, डीबगिंग और कोड कवरेज कई नुकसानों में से सिर्फ तीन हैं। आप उनमें से कुछ को दूर कर सकते हैं लेकिन आपको इसे प्राप्त करने में भारी निवेश करना होगा जबकि सादे कोड के साथ आपको बस यही मिलेगा। यदि आप वास्तव में एक लंबे समय से चल रही आवश्यकता है तो आप शायद कुछ और अधिक परिष्कृत की जरूरत है। मैंने नए xaml फ़ाइलों को फिर से संकलित dll के बिना उत्पादन में सक्षम होने के बारे में तर्क सुना है, लेकिन ईमानदारी से समय जो वर्कफ़्लोज़ का उपभोग करेगा, वह आपके निरंतर एकीकरण को उस बिंदु पर बेहतर बनाने के लिए उपयोग किया जा सकता है जहां संकलित deploys एक समस्या नहीं है।


3

मैं इसे किसी भी वातावरण में उपयोग करूँगा जहाँ मुझे वर्कफ़्लो के साथ काम करने की ज़रूरत है, हालाँकि K2 या SharePoint 2007 के साथ संयोजन में इसका उपयोग करते समय प्लेटफ़ॉर्म की शक्ति वास्तव में उपयोगी है। बीआई विशेषज्ञ के साथ व्यावसायिक अनुप्रयोगों को विकसित करते समय मंच के उपयोग की सिफारिश की जाती है और यह सामान्य रूप से केवल व्यावसायिक प्रक्रियाओं को सुव्यवस्थित और बेहतर बनाने के लिए प्रासंगिक होगा।

रिकॉर्ड के लिए WF को K2 की विकास टीम के साथ मिलकर विकसित किया गया था और नया K2 Blackpearl, WF के ऊपर बनाया गया है, इसलिए MOSS 2007 और WSS 3.0 के वर्कफ़्लो इंजन हैं।


2

जब आप दृश्य इंटरफ़ेस, ट्रैकिंग और दृढ़ता बनाए रखने के लिए उन सभी कोडों को मैन्युअल रूप से लिखना नहीं चाहते हैं, तो यह WF के लिए वोट करने के लिए एक बुद्धिमान विकल्प है।


1

मैं कस्टम गतिविधियों और फिर से होस्ट किए गए डिजाइनर को विकसित करने के लिए महीनों से विंडोज वर्कफ़्लो का उपयोग कर रहा हूं जो गैर-डेवलपर्स वर्कफ़्लो बनाने के लिए उपयोग कर सकते हैं। डब्ल्यूएफ बहुत शक्तिशाली है लेकिन यह केवल उन कस्टम गतिविधियों के रूप में अच्छा है जो डेवलपर्स द्वारा बनाए गए हैं। जब यह नीचे आता है, तो एक डेवलपर को परीक्षण और डिबग करने के लिए गैर-डेवलपर्स द्वारा निर्मित वर्कफ़्लोज़ को देखना होगा लेकिन इस बिंदु से वे ड्राफ्ट वर्कफ़्लोज़ बना सकते हैं- जो शानदार है।

इसके अलावा, ऐसे मामलों में जहां आपके पास लंबे समय से चलने वाली प्रक्रियाएं हैं, जब आप डायनेमिक रूप से प्रक्रियाओं को अपडेट करने की आवश्यकता होती है, तो उपयोग करने के लिए WF एक अच्छा तकनीकी स्टैक है - बिना कुछ भी पुनर्स्थापित / डाउनलोड या कुछ भी करने के लिए, बस एक निर्देशिका में नई XAML फाइलें जोड़ें और आपकी वास्तुकला होनी चाहिए। पुराने को स्क्रैप करने और नए का उपयोग करने के लिए संस्करण के साथ सेट अप करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.