2008-08-06 18 views
9

ट्रिगर करता है मैं वर्तमान में विशिष्ट आवश्यकताओं के साथ एक परियोजना पर काम कर रहा हूं।टाइमर-आधारित ईवेंट

  • डाटा बाहरी webservices से लिया गया है
  • डाटा एसक्यूएल में संग्रहीत 2005
  • डाटा एक वेब जीयूआई
  • खिड़कियों सेवा है जो के साथ संचार के माध्यम से चालाकी से किया जाता है: इनमें से एक संक्षिप्त अवलोकन इस प्रकार हैं डेटाबेस के माध्यम से, वेब सेवाओं में हमारे आंतरिक वेब यूआई के साथ कोई युग्मन नहीं है।
  • वेब सेवाओं के साथ संचार समय-आधारित दोनों होना चाहिए, और वेब यूआई पर उपयोगकर्ता हस्तक्षेप के माध्यम से ट्रिगर किया जाना चाहिए।

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

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

दूसरा विकल्प मेरे लिए एक झगड़ा जैसा प्रतीत होता है, लेकिन विकल्प 1 का प्रबंधन आसानी से एक प्रोग्रामिंग दुःस्वप्न में बदल सकता है (आप कैसे जानते हैं कि तालिका के आखिरी मतदान में आग लगने की आवश्यकता है, और कैसे करें फिर आप इसे अगले मतदान पर फिर से ट्रिगर करना बंद कर दें)

अगर कोई मुझे कुछ मिनटों का समय तय कर सकता है तो मुझे यह तय करने में मदद मिलेगी कि कौन सा मार्ग (इनमें से एक, या संभवतः एक तिहाई, असूचीबद्ध वाला) ।

उत्तर

1

विंडोज सेवा के बजाय SQL नौकरी का उपयोग क्यों नहीं करें? आप संग्रहीत प्रक्रियाओं में आप सभी डीबी "ट्रिगर" कोड को समाहित कर सकते हैं। फिर आपका यूआई और एसक्यूएल जॉब एक ​​ही संग्रहीत प्रक्रियाओं को कॉल कर सकता है और ट्रिगर्स को उसी तरह बना सकता है चाहे वह मैन्युअल रूप से या एक समय अंतराल पर हो।

0

जिस तरह से मैं इसे देखता हूं यह है।

आपके पास एक विंडोज सेवा है, जो शेड्यूलर की भूमिका निभा रही है और इसमें कुछ कक्षाएं हैं जो वेबसर्विसेज को कॉल करती हैं और डेटा को आपके डेटाबेस में रखती हैं।

तो, आप इन वर्गों का सीधे वेबयूआई से भी उपयोग कर सकते हैं और वेबयूआई ट्रिगर के आधार पर डेटा आयात कर सकते हैं।

मुझे डेटाबेस में ध्वज (ट्रिगर) के रूप में उपयोगकर्ता द्वारा उत्पन्न क्रिया को संग्रहीत करने का विचार पसंद नहीं है, जहां कुछ सेवा उस क्रिया को निष्पादित करने के लिए इसे एक अंतराल पर (उपयोगकर्ता के नियंत्रण में नहीं है) पर मतदान करेगी।

आप पूरे कोड को एक एक्सई में भी परिवर्तित कर सकते हैं जिसे आप विंडोज शेड्यूलर का उपयोग करके शेड्यूल कर सकते हैं। और जब भी उपयोगकर्ता वेब यूआई से कार्रवाई को ट्रिगर करता है तो उसी एक्सई को कॉल करें।

0

@Vaibhav

दुर्भाग्य से, समाधान के भौतिक वास्तुकला सेवा के घटकों के बीच कोई सीधा संचार, डेटाबेस के लिए वेब UI के अलावा अन्य, और डेटाबेस (जो तब वेब सेवाओं के लिए बाहर कॉल कर सकते हैं) की अनुमति नहीं होगी ।हालांकि, मैं सहमत हूं कि संचार कक्षाओं का पुन: उपयोग यहां आदर्श होगा - मैं इसे अपने व्यापार की सीमाओं के भीतर नहीं कर सकता *

* क्या यह हमेशा तकनीकी रूप से " बेहतर "समाधान बाहरी कारकों से stymied है?

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