2009-03-18 12 views
6

मैं निम्नलिखित मानदंड के साथ एक आवेदन का निर्माण कर रहा हूँ:बनाम आशावादी संगामिति (प्रतिक्रिया बनाम लॉकिंग) निराशावादी

  • काम आइटम: आइटम मैन्युअल उपयोगकर्ताओं (कम एक पृष्ठ फार्म) द्वारा वेब के माध्यम से काम करने की जरूरत है कि
  • से अधिक उपयोगकर्ता काम कर रहे 'काम आइटम'
  • प्रत्येक उपयोगकर्ता की एक कतार है 'काम आइटम'
  • एक खोज उपयोगकर्ताओं के काम आइटम 'को देखने और उनके कतारों के लिए' काम आइटम 'निर्दिष्ट कर सकते हैं कि नहीं है
  • उपयोगकर्ता

नोट: 'कार्य आइटम' केवल एक बार काम किए जाने पर अन्य लोगों की कतारों से 'कार्य आइटम' ले सकते हैं। यह विकी पेज नहीं है, यह एक मिलान करने वाला अभ्यास है जो केवल एक उपयोगकर्ता द्वारा किया जाना चाहिए। एक बार 'कार्य आइटम' काम करने के बाद, यह सिस्टम से निकलता है (कुछ ऑडिटिंग/रिपोर्टिंग से अलग), कुछ हद तक एक बग ट्रैकिंग सिस्टम की तरह

आपको कौन सा विकल्प बेहतर लगता है? क्या आप किसी भी मुख्यधारा के अनुप्रयोगों का हवाला देते हैं जो आपकी राय का समर्थन करते हैं?

विकल्प 1:

  • उपयोगकर्ता एक देख सकते हैं या एक 'काम आइटम', 'काम आइटम के लॉक हो जाता है काम करने के लिए हो जाता है।
  • जब उपयोगकर्ता ए 'कार्य आइटम' खोलने के बाद अन्य उपयोगकर्ता 'कार्य आइटम' पर जाते हैं, तो वे केवल 'कार्य आइटम' देख पाएंगे। वे नहीं लिख सकते हैं।
  • लॉक एन मिनट के बाद समाप्त हो जाता है जिस बिंदु पर कोई अन्य उपयोगकर्ता 'कार्य आइटम' को लॉक कर सकता है।

विकल्प 2:

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

मुझे व्यक्तिगत रूप से विकल्प 2 पसंद है। विचार कृपया?

उत्तर

6

लगता है जैसे आप pessimistic छंद optimistic समवर्ती नियंत्रण के बारे में बात कर रहे हैं।

दोनों का व्यापक रूप से उपयोग किया जाता है, व्यक्तिगत रूप से मुझे आशावादी समेकन को सुलझाने में आसान लगता है, लेकिन यह आपकी अपनी आवश्यकताओं और उपयोग पर निर्भर करेगा। यदि संपादन (और संभावित संघर्ष) आम हैं तो निराशावादी समेकन नियंत्रण उचित हो सकता है, यदि नहीं, तो आशावादी समेकन काम करने के लिए तेज़ और सरल होगा।

मुझे पता है अगर आप एसक्यूएल सर्वर में RowVersion डेटाप्रकार का उपयोग कर (है कि मैं वर्तमान में क्या उपयोग कर रहा हूँ है) कोड उदाहरण हुए देखना चाहते हैं, यह हालांकि बहुत सरल है:

  • सभी तालिकाओं RowVersion कॉलम शामिल
  • सभी चयन प्रश्नों में इस कॉलम (डेटा के लिए संशोधित किया जा सकता है)
  • सभी अद्यतन या हटाए गए प्रश्नों में WHERE RowVersion = @RowVersion शामिल है। यह आशावादी हिस्सा है, यदि 0 पंक्तियां लौटा दी गई हैं तो किसी और ने पंक्ति को छुआ है, कोई अपडेट नहीं होता है, इसलिए इसके बारे में उपयोगकर्ता को बताएं। नोट: यदि पंक्ति अपडेट की गई थी तो RowVersion के लिए नया मान भी वापस किया जाना चाहिए। यह आईएनएसईआरटी प्रश्नों पर भी लागू होता है, जैसे कि आप डालने के बाद पहचान कॉलम के आईडी को वापस कर देंगे।
+0

धन्यवाद, क्या आप जानते हैं कि अधिकांश बग ट्रैकिंग सिस्टम क्या उपयोग करते हैं? निराशावादी या आशावादी, मैं बाद में – ckarbass

+0

मानता हूं क्षमा करें, मुझे नहीं पता, लेकिन अनुमान के रूप में अधिकांश बग ट्रैकिंग सिस्टम वेब आधारित हैं, और वेब (ज्यादातर :) स्टेटलेस है, तो आशावादी लॉकिंग शायद उपयोग किया जाता है। – si618

-1

यदि मैं लागू होता हूं तो मैं व्यक्तिगत रूप से विकल्प 2 - प्लस के साथ जाऊंगा (उदाहरण के लिए वे संपादन लंबे टेक्स्ट पर हैं) इसे संपादन को मर्ज करने के लिए उपयोगकर्ता बी की ज़िम्मेदारी बनाते हैं। ऐसा करने के लिए बी को एक उपकरण दें।

+0

अद्यतन प्रश्न, इस परिदृश्य में विलय की आवश्यकता नहीं है, हालांकि वैध प्रतिक्रिया – ckarbass

0

लेकर सुनिश्चित नहीं हैं सरल शब्दों में रूप का वर्णन करने, लेकिन इसकी नहीं एक समुदाय पेज, इसकी एक बार बात। Hypothetically, मान लीजिए कि उपयोगकर्ता को नाम से जॉन डीओईई को में मेल करने के लिए निम्नलिखित जॉन डो जोन एक बार यह काम करता है, संपादन पूरा हो गया है। हमारे मामले में, हम उस टिप्पणी को ध्यान में रखते मात्र

की जरूरत नहीं होगी, मैं विकल्प 1. साथ जाना होगा यह देखते हुए कि इन परिवर्तनों को एक बार परिवर्तन कर रहे हैं, जब कई लोग एक ही पर काम करने की अनुमति देने के लिए कोई लाभ नहीं है परिवर्तन। आप केवल दूसरे व्यक्ति के समय को बर्बाद कर रहे हैं।

+0

यह सुनिश्चित नहीं है कि यह प्रश्न में स्पष्ट है, लेकिन यदि मैं एक प्रबंधक हूं और मैं एक कार्य आइटम खींचता हूं (औपचारिक रूप से संपादित कहा जाता है) और अब इसे बंद कर दिया गया है, तो आप अपनी कतार पर काम करने के लिए जाते हैं और आप काम नहीं कर सकते आइटम क्योंकि आपके प्रबंधक ने ब्राउज़र में इसे खोल दिया है – ckarbass

+0

मैं आइटम को खींचने और इसे देखने के लिए खींचने के बीच खींचने के बीच अंतर करता हूं। एक संपादन बटन होना काफी आसान है जो जेएसओएन का उपयोग करता है जब आप यह तय करने के लिए संपादित करते हैं कि क्या फ़ील्ड को संपादन योग्य बनाना चाहिए या नहीं। – Brian

+0

वह बटन एक कदम आगे जा सकता है और, यदि वे संपादन योग्य नहीं हैं, तो काले जादू के माध्यम से परिवर्तन दिखाएं (पृष्ठ को पुनः लोड किए बिना)। हालांकि इस तरह की चीज जटिलता में जोड़ती है। – Brian

संबंधित मुद्दे