2012-06-11 15 views
5

हमारी कंपनी के पास अमेरिका और कनाडा के कुछ हिस्सों में हर विनाशकारी घटना में लोग हैं। एक उदाहरण यह है कि घटना के तुरंत बाद कैटरीना में वे काफी प्रचलित थे।डिस्कनेक्ट किए गए एप्लिकेशन विकास के लिए दृष्टिकोण

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

जिस मुद्दे पर हम अपने सिर को पाने की कोशिश कर रहे हैं वह यह है कि जब आपदाजनक घटनाओं पर हमारे लोगों को इंटरनेट उपलब्ध नहीं होने पर भी हमारे नए एप्लिकेशन का उपयोग करने में सक्षम होना चाहिए। (वे कैटरीना में 3 दिनों के लिए ऑफ़लाइन थे)

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

हमारा दीर्घकालिक लक्ष्य एंड्रॉइड और आईपैड टैबलेट उपकरणों के साथ-साथ लैपटॉप के लिए भी यह एप्लिकेशन प्रदान करना है। एएसपी.नेट के लिए हमारी शुरुआती इच्छा यह हमें टैबलेट पर्यावरण के लिए तत्काल आवेदन दे रही थी। पुराने एप्लिकेशन में, वे एक स्थानीय सर्वर चलाते हैं, टैबलेट पर रिमोट कनेक्शन चलाते हैं और टर्मिनल सर्वर के माध्यम से एप्लिकेशन चलाते हैं। सुंदर नहीं। सुंदर नहीं।

मुझे लगता है कि यह एक गंभीर सवाल है जो व्यक्तिपरक नहीं है इसलिए उम्मीद है कि यह हटा नहीं जाएगा।

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

मुझे अन्य डेवलपर्स के इनपुट और इस डिज़ाइन पहेली को सुनने में रूचि है।

अतिरिक्त जानकारी चर्चा करने के लिए जोड़ा गया अच्छी जानकारी के

बहुत सारे प्रदान की !!! मुझे निश्चित रूप से माइक्रोसॉफ्ट सिंक को देखना होगा। डिस्कनेक्ट किए गए डेटाबेस के लिए मैं प्रारंभिक डेटाबेस में केवल सूची तालिका (गणना) रखूंगा। नौकरी और, यदि आवश्यक हो, तो एक आइटम जिसे हम सूखी किताबें कहते हैं, हम जिस ग्राहक की सहायता कर रहे हैं उसके लिए जोड़ा जाएगा। (हालांकि मुझे आशा है कि जब तक हम घरों की सफाई और सूख रहे हों तब तक इंटरनेट रिटर्न) ये टेबल हैं जो एक स्थिर लिंक होने के बाद होस्ट पर वापस आ जाएंगे। कैटरीना के मामले में हमने अपने कार्यालयों में इंटरनेट कनेक्टिविटी भी खो दी जिसका मतलब था कि कार्यालय ने दिन के लिए भी कोई संचार राहत नहीं दी थी।

कल रात मुझे एहसास हुआ कि हमारे ग्राहक प्रॉक्सी काम कर रहे सब कुछ की कुंजी है! ग्राहक इस तथ्य से अनजान है कि यह ऑनलाइन या ऑफलाइन है और उस पुस्तकालय के भीतर सिंक्रनाइज़ेशन प्रक्रिया छोड़ देता है। हम खोज रहे हैं कि आज हम कितने डेटा के बारे में बात कर रहे हैं। मैं यह भी स्पष्ट करना चाहता हूं कि एएसपी.नेट एक जैसा था लेकिन एक मोटी ग्राहक (वास्तव में एक्सएएमएल के साथ डब्ल्यूपीएफ) हमारे अंत राज्य होने का अंत हो सकता है।

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

मैं आपके डिस्कनेक्टेड वातावरण को कैसे कार्यान्वित किया है, इसकी अतिरिक्त कहानियों को सुनने की उम्मीद कर रहा हूं।

धन्यवाद !!!

माइक्रोसॉफ्ट से नई तकनीक पर

खोज रहे हैं मैं TechEd 2012 से एक वीडियो को देखने के लिए निर्देशित किया गया और सोचा था कि मैं एक जवाब हो सकता है किया गया था। यह बात डिस्कनेक्ट किए गए व्यवहार के लिए 2 पुस्तकालयों के साथ एएसपी.नेट और एमवीसी 4 का उपयोग करने पर थी। पहले मैंने सोचा कि यह बहुत अच्छा होगा लेकिन फिर भी जारी रहा क्योंकि यह मुझे थोड़ा चिंतित करता था।

डिस्कनेक्ट I/O का समर्थन करने के लिए पहले जावास्क्रिप्ट बैकएंड का उपयोग आत्मविश्वास उत्पन्न नहीं करता है। एक कंपाइलर लड़के के रूप में (और जिसने दो व्याख्यात्मक भाषाओं को लिखा) मुझे वास्तव में व्याख्यात्मक जावास्क्रिप्ट पर निर्भर एक महत्वपूर्ण व्यावसायिक मॉडल पसंद नहीं है। और उस पर लिपि! यह मुझे हो सकता है लेकिन यह सिर्फ मुझे shudder बनाता है।

फिर वे अपना "महान" (???) प्रोग्रामिंग मॉडल दिखाते हैं जिसमें आपका व्यूमोडेल केवल जावास्क्रिप्ट के रूप में मौजूद है। मुझे नोटपैड में लिखे गए एप्लिकेशन (एएसपीनेट और जावास्क्रिप्ट) की परवाह नहीं है, और हो सकता है (इंटेलिजेंस की कमी के लिए) भी हो सकता है।

कोई अपराध किसी भी एएसपी प्रेमियों के लिए होती है, लेकिन एक अच्छी तरह से लिखा सी # प्रोग्राम है जो वाक्य रचना की गई है और प्रकार की जाँच की मुझे एक आशा और प्रार्थना के साथ लिखा है कि एक वर्ग नाम स्थान को ठीक से किसी भी तरह के बिना लिखा गया है की तुलना में सॉफ्टवेयर में मजबूत आत्मविश्वास देता है क्रॉस चेक का। मैंने डिबगिंग के बहुत सारे घंटों को देखा है जो एक बग की तलाश में है जो ट्रांसपोर्ट यानी इसके नाम पर एक बड़े नामस्थान में समाप्त हुआ है। मैंने अपने समूह में अन्य वरिष्ठ डेवलपर्स के पीछे अपना विचार चलाया और हम सभी इस तकनीक पर सर्वसम्मति से हैं।

लेकिन हम देखना जारी रखते हैं। (मुझे लगता है यह एक सवाल से एक डायरी के अधिक होता जा रहा है) :)

+0

क्या ऐसा कोई कारण है कि इसे एएसपीनेट एप्लिकेशन होना चाहिए, न कि एक स्टैंडअलोन जो समय-समय पर गतिविधि के लिए मतदान कर सकता है और कहीं भी मास्टर डेटासेट के साथ आलसी सिंकिंग कर सकता है? – devshorts

+0

इसकी कुंजी वेब सेवा जैसी कुछ चीज़ों का उपयोग करना होगा। आप इस ऐप को चलाने के लिए कई उपकरणों का समर्थन करने के लिए प्रौद्योगिकी के विभिन्न स्वादों का उपयोग करेंगे, लेकिन एक चीज स्थिर है, डिवाइस और सर्वर के बीच संचार गेटवे जो आपकी वेब सेवा होगी। प्रत्येक ग्राहक के पास स्थानीय डेटाबेस जैसे एसक्यूएल लाइट हो सकता है। ऐप कुछ मानक सिंक्रनाइज़िंग तकनीकों का उपयोग करके परिवर्तनों के लिए मतदान करेगा। लेकिन, प्रत्येक डिवाइस अपनी पिछली सिंक तिथि के बाद से वेब सेवा से 'नवीनतम' परिवर्तनों को पकड़ लेगा और अपनी वेब सेवा – Jeremy

+1

में विभिन्न वेब विधियों का उपयोग करके प्रासंगिक परिवर्तनों को बदल या जोड़ देगा। आप अपना डेटा कैसे संग्रहीत कर रहे हैं। एस क्यू एल सर्वर? –

उत्तर

2

माइक्रोसॉफ्ट सिंक के लिए एक आदर्श उदाहरण की तरह लग रहा फ्रेमवर्क

http://msdn.microsoft.com/en-us/sync/bb736753.aspx

कि सहयोग सक्षम बनाता है एक व्यापक तुल्यकालन मंच और किसी भी डेटा प्रकार, किसी भी डेटा स्टोर, किसी भी स्थानांतरण प्रोटोकॉल, और किसी भी नेटवर्क टोपोलॉजी के लिए समर्थन के साथ अनुप्रयोगों, सेवाओं और उपकरणों के लिए ऑफ़लाइन पहुंच।

+0

मैंने मूल दस्तावेज पढ़ा। सिंच एक वेब सर्वर के माध्यम से है और आपको पोर्ट 1433 खोलने की आवश्यकता नहीं है? – Paparazzi

+0

आप SQL सर्वर पोर्ट 1433 या WCF (80, 443, या जो भी आप WCF कॉन्फ़िगरेशन में निर्दिष्ट करते हैं) का उपयोग कर सकते हैं। सिंक फ्रेमवर्क वास्तव में स्थानांतरण माध्यम से अज्ञेयवादी है। –

1

मुझे अक्सर लगता है कि मेरी विशिष्ट जरूरतों को पूरा करने के लिए हल्के ढांचे का निर्माण करना मौजूदा के उपयोग से मेरे लिए अधिक फायदेमंद है। हालांकि, हमेशा यह सुनिश्चित करने से पहले कि क्या उपलब्ध है और पेशेवरों और विपक्ष का वजन लें।

मैंने माइक्रोसॉफ्ट सिंक फ्रेमवर्क का उपयोग नहीं किया है, लेकिन ऐसा लगता है कि यह पहले शोध करने के लिए एक अच्छा है। यदि आपके पास एसक्यूएल सर्वर मानक (या एक्सप्रेस संस्करण के अलावा कुछ अन्य संस्करण) है तो प्रतिकृति भी एक विकल्प हो सकती है।

यदि आप अपना खुद का घरगुदा समाधान विकसित करना चाहते हैं, तो सिंक में रहने की आवश्यकता वाले किसी भी टेबल पर अंतिम अद्यतन और डेटेड फ़ील्ड डालना सुनिश्चित करें। यह 'ध्वनि' नहीं है जैसे आपके परिदृश्य को समवर्ती मुद्दों से बोझ किया जाएगा (यानी यदि व्यक्ति ए और बी दोनों एक ही समय में एक क्षेत्र को संशोधित करते हैं, जो जीतता है?)।यदि ऐसा है तो अपने हल्के समाधान का विकास करना काफी सरल होगा।

जैसा कि जेरेमी ने बताया, आपको परिवर्तन प्राप्त करने के लिए एक तरीका की आवश्यकता होगी। एक वेब सेवा का उपयोग करने के अलावा, आप डब्ल्यूसीएफ का भी उपयोग कर सकते हैं जो कुछ तरीकों से वेब सेवा के समान है। लेकिन मेरी व्यक्तिगत पूर्वाग्रह इंटरनेट पर दूरस्थ रूप से एक SQL सर्वर तक पहुंचने की ओर होगी। उस समाधान के नकारात्मक पक्ष में सुरक्षा चिंताओं को जोड़ा गया है, जबकि ऊपर की ओर विकास ओवरहेड में कमी आई है (यानी तेजी से/आसान विकास और समय के साथ कम रखरखाव)। साथ ही, सीधा एसक्यूएल समाधान यह भी मान रहा है कि यह एक आंतरिक अनुप्रयोग है ... कि आप सभी विकास के प्रभारी हैं और तीसरे पक्ष के साथ काम नहीं कर रहे हैं जिन्हें आपके डेटा तक पहुंच की आवश्यकता है और इसे इस तरह से एक्सेस करने की अनुमति नहीं दी जाएगी ।

1

वास्तव में एक पूर्ण उत्तर नहीं है लेकिन एक टिप्पणी के लिए बहुत अधिक है।

मेरे पास दो ऐप्स हैं जो एक तरफ और दूसरे तरीके से सिंक करते हैं।

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

यदि सिंक करता है तो आपको Jakub के लिए महान +1 की आवश्यकता होती है। मेरे लिए मेरे पास आकार और सुरक्षा के आधार पर पूरे एमएसएसक्यूएल को सिंक करने का विकल्प नहीं है।

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

आपके लिए कोई खबर नहीं है लेकिन कच्चे सिंक का कठिन हिस्सा यह है कि दो पार्टियों ने एक ही रिकॉर्ड को जोड़ा या संशोधित किया हो सकता है।

+1

माइक्रोसॉफ्ट सिंक फ्रेमवर्क केवल पूरे डेटाबेस को सिंक्रनाइज़ नहीं करता है। आप केवल कुछ तालिकाओं और तालिकाओं से कुछ रिकॉर्ड सिंक कर सकते हैं। यह आपको संघर्षों का प्रबंधन करने में भी मदद करता है। –

+0

@JakubKonecki मैं फिर से सिंक फ्रेमवर्क देखेंगे। मैंने पहले ही आपको +1 दिया था। – Paparazzi

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