विजुअल स्टूडियो में सिर्फ "प्रकाशन" से बेहतर तरीका होना चाहिए और फिर उन फ़ाइलों को मैन्युअल रूप से एफ़टीपी करने के लिए होना चाहिए जो बदल गए हैं?
ओकाम का रेज़र आमतौर पर पसंदीदा तरीका है: सरल, बेहतर। एफ़टीपी किसी भी जटिलताओं के लिए आसान नहीं है। कुछ लोग XCOPY, Filezilla या WSFTP का उपयोग करते हैं, अन्य लोग MS Web परिनियोजन टूल (जिसका मैं अभी तक परिचित नहीं हैं) का उपयोग कर सकते हैं, लेकिन सभी में, ASP.NET वेब ऐप्स को तैनात करने का एक बेहतर तरीका है (और अन्य) सामान्य रूप से क्षुधा)। आईएमओ, यदि तैनाती को विकास की शुरुआत से ध्यान में रखा जाता है, तो तैनाती को वेब ऐप के साथ एकीकृत किया जा सकता है जो भविष्य में अपेक्षाकृत दर्द मुक्त और चिकनी तैनाती के लिए बनाता है।
एक .NET डेवलपर के रूप में, जिन्होंने ASP.NET वेब ऐप विकसित करने वाली कई कंपनियों में काम किया है, जो आकार, जटिलता और उपयोगकर्ताओं की संख्या (कई सौ उपयोगकर्ताओं से लेकर दसियों हज़ार तक) में हैं, IMO 'परिनियोजन' अक्सर सबसे "तरल पदार्थ" विषय होता है। कुछ संगठन इसे नौकरशाही के संदर्भ में बहुत दूर ले जाते हैं जबकि अन्य किसी भी मुद्दे को तैनाती के साथ संबोधित नहीं करते हैं। मेरे अनुभव में, तैनाती के मुद्दे कठिनाइयों / असफलताओं के संदर्भ में 1 या 3 श्रेणियों में आते हैं:
डिज़ाइन चरण के दौरान गहराई में परिनियोजन को अनदेखा / भुला दिया जाता है:
अधिकांश वेब ऐप में वेब सर्वर और डेटाबेस को शामिल किया जाता है। एप्लिकेशन कोड से परे, शायद कुछ संग्रहीत कार्यविधियाँ और डेटाबेस तालिकाएँ, परिनियोजन के लिए बहुत अधिक विचार की आवश्यकता नहीं है। ASP.NET, परिनियोजन में सक्षम होने से अधिक है, लेकिन अधिकांश डेवलपर्स अक्सर एक अलग समस्या के रूप में परिनियोजन के तरीके को छोड़ते हुए वास्तविक एप्लिकेशन को चलाने और ऐसा करने के कार्य से विचलित होते हैं ।
तैनाती कई प्रणालियों में और लोगों को खेलने में
जटिल है : जटिलता एक कुतिया है। MSMQ, टी-एसक्यूएल संग्रहीत प्रक्रियाओं और ट्रिगर्स, रिपोर्टिंग सर्विसेज, SOAP / XML मैसेजिंग, AD प्रमाणीकरण, SSAS / SSIS, आदि से। खेल में प्रौद्योगिकियों की संख्या में शामिल लोगों की संख्या में वृद्धि होती है। सबसे बुरी बात, इन सभी विभिन्न घटकों को आमतौर पर एक संगठन के भीतर विभिन्न संस्थाओं द्वारा प्रबंधित किया जाता है। जब तक हर कोई एक-दूसरे के साथ तालमेल नहीं रखता, तब तक जटिलता में तेजी से वृद्धि हो सकती है जिससे विफलता के कई बिंदु हो सकते हैं।
आलस्य, उदासीनता और संचार और / या प्रबंधन की
कमी: समन्वित संचार और प्रोटोकॉल की कमी के लिए कोई दस्तावेज नहीं होने से, अपेक्षाकृत सरल प्रक्रिया को पेंच करना आसान है। तैनाती की एक सरल प्रक्रिया होनी चाहिए जिसमें सभी जाँचें हो सकती हैं कि क्या किया गया है, लेकिन अक्सर ऐसा कभी नहीं होता है। अधिकांश लोग सिर्फ इतना चाहते हैं कि लानत स्थल एक चालू हो। मेरे अनुभव में, लोग (गैर-प्रोग्रामर) वास्तव में परवाह नहीं करते हैं जब तक कि कुछ वास्तव में फ़ुबर नहीं हो जाता है । जिम्मेदारी शायद ही कभी सिर्फ एक व्यक्ति वास्तव में करने के लिए पर पड़ता करते तैनाती के रूप में कोई भी वास्तव में तो जवाबदेही है विफलता का कारण बनना चाहता है आमतौर पर बिखरे।
बहुत सारे फ़िज़ूल रूप से फ़ाइल अपवाद हैं जो मुझे संभव है कि इस प्रक्रिया को जितना संभव हो उतना स्वचालित रूप से स्वचालित किया जाए, ताकि आकस्मिक अपलोड को रोका जा सके। तो आपकी टीम यह कैसे करती है?
मैं तैनाती को स्वचालित करने के लिए किसी भी विक्रेता के बारे में नहीं जानता, हालांकि अगर कुछ थे तो मुझे आश्चर्य नहीं होगा। आप शायद VBScript / WMI या बैच स्क्रिप्ट के माध्यम से एक समाधान को स्क्रिप्ट कर सकते हैं, लेकिन वास्तविकता यह है कि आपको अधिक जटिल ASP.NET साइटों के लिए एक साथ समाधान को दर्जी करने की आवश्यकता है। सरल साइटें जिनमें पृष्ठ, डेटाबेस कनेक्टिविटी और कुछ भी नहीं है, आपको आवेदन की जटिलता के अनुरूप अपने तैनाती के प्रयासों को लगभग इतना करने की आवश्यकता नहीं है।
अब तक, मेरी वर्तमान कार्य पर तैनाती अभी भी एफ़टीपी से अधिक है और फ़ाइलों का एक गुच्छा स्थानांतरित कर रही है। यह बदसूरत है, पंगा लेना आसान है और सटीक इतिहास का कोई मतलब नहीं है। दी है कि आप एफ़टीपी लॉग के माध्यम से कंघी कर सकते हैं, कोई भी वास्तव में ऐसा करने के लिए परेशान नहीं करता है। एफ़टीपी से परे बहुत ज़रूरत के बिना हमारे एप्लिकेशन काफी सरल हैं। मेरी टीम हमारी वेब ऐप्स कैसे दिखाती है, यह वास्तव में आपके लिए किसी काम का नहीं है। इसके बजाय, मैं इस अवसर का उपयोग बेहतर प्रथाओं को सुझाने के लिए करूँगा ।
- कुछ अनुमान नहीं लगाना। उपयोगकर्ता खाते, आर / डब्ल्यू / एक्स विशेषाधिकारों, एसीएल, फायरवॉल, समय (जब तैनात करने के लिए और आपको इसे करने के लिए कितना समय है), और यदि संभव हो, तो अंतिम "लॉन्च की तारीख" से पहले सभी वातावरण में तैनाती का परीक्षण करें ।
- विकास वास्तव में शुरू होने से पहले, विकास में कारक की तैनाती। यदि यह एक सरल साइट है, तो यह हो। कई चलती भागों, कारक में यह के सभी देखते हैं और वास्तव में तो निर्माण एक योजना है जो करने के लिए सभी घटकों (कोड, डेटाबेस, रिपोर्ट, कतार, आदि) एक ही योजना पर सभी कर रहे हैं।
- अन्य समानताएं के साथ समन्वय करें और प्रभावी ढंग से और कुशलता से संवाद करें।
- यदि संभव हो तो अधिक प्रासंगिक जानकारी के रूप में दस्तावेज़।
- पर्यावरण: एक वेब सर्वर बनाम वेब फार्म; 32-बिट बनाम 64-बिट; लॉग / त्रुटियों / घूमने आदि की निगरानी करने का एक तरीका खोजें।
- ऐसे उपकरण खोजें (या बनाएँ) जो तैनाती में सहायता कर सकते हैं।
- यदि प्रोग्राम करने योग्य परिनियोजन के लिए संभव है, तो एक प्रतिमान चुनें और उसके साथ रहें। उदाहरण के लिए, यदि आप किसी एप्लिकेशन के राज्य, परिनियोजन, पहुँच को पूरा करने के लिए प्राथमिक साधन के रूप में डेटाबेस सर्वर का उपयोग करना चाहते हैं, और इसे एप्लिकेशन में सेंकें और इसके साथ रहें। यदि आप हर तरह से XML फाइलें (जैसे web.config) पढ़ना पसंद करते हैं, तो बस एप्लिकेशन को लागू करने के एक सुसंगत प्रतिमान के साथ रहें । एक अन्य उदाहरण: कुछ संगठन प्रत्येक वातावरण में एक स्थिर फ़ाइल के रूप में web.config छोड़ते हैं जिसे अन्य वातावरणों पर तैनात नहीं किया जाना चाहिए । अन्य कार्यक्रम web.config इस तरह से है कि इसे बिना त्रुटि के पूरे वातावरण में तैनात किया जा सकता है।
मुझे एहसास है कि यह पोस्ट मूल रूप से पूछे गए सवाल के लिए ओवरकिल हो सकती है। दुर्भाग्य से, तैनाती सिर्फ एक साधारण बात नहीं है क्योंकि आवेदन जटिलता में भिन्न हो सकते हैं। मुझे लगता है कि जटिल ASP.NET एप्लिकेशन को तैनात करने वाले अधिकांश संगठनों ने समय के साथ कुछ रणनीतियों को कम से कम (कम से कम) मज़बूती से विकसित किया है।