2010-07-26 14 views
5

मेरे पास कई .NET वेब एप्लिकेशन हैं जो समान सीएमएस-जैसी ढांचे का उपयोग करते हैं। जब मैं इस मूल ढांचे में नई सुविधा जोड़ता हूं, तो मैं चाहता हूं कि प्रत्येक एप्लिकेशन को इस सुविधा के साथ अपडेट किया जाए। तो बुनियादी तौर पर मैं निम्नलिखित चरण करने की आवश्यकता:.NET वेब एप्लिकेशन स्वचालित अपडेट पुल-शैली

  1. आवेदन जड़ में रखें App_Offline.htm
  2. कॉपी फ़ाइलें अपडेट सर्वर से बदल दिया है कि
  3. भागो एसक्यूएल अद्यतन स्क्रिप्ट अगर जरूरत
  4. निकालें App_Offline .htm

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

धन्यवाद

उत्तर

0

दृष्टिकोण मैं ले लिया एक स्क्रिप्ट है कि Git से नवीनतम तैनाती संस्करण खींचती है बनाने के लिए किया गया था, आईआईएस बंद हो जाता है, प्रतियां नए संस्करण से अधिक, आईआईएस शुरू होता है। यह बहुत कच्चा है, लेकिन अगर आपके गिट रिपोजिटरी में एकमात्र चीज नवीनतम तैनाती संस्करण है तो यह काम करेगा।

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

आपके प्रश्न का SQL अद्यतन स्क्रिप्ट हिस्सा दिलचस्प है। ऐसा लगता है जैसे आपको रेल में डीबी माइग्रेशन की तरह कुछ चाहिए। यह कुछ ऐसा है मैं अभी तक का सामना करना पड़ा है नहीं है, लेकिन मैं आप यहाँ इंगित करेगा: http://www.infoq.com/news/2009/01/migrations_dotnet

0

मैं आवेदन उपतंत्र के रूप में देखते हैं जो कुछ चरणों को पूरा:

  1. नियमित कि आवेदन नवीनतम संस्करण की जाँच करता है
  2. नवीनतम पैक फ़ाइल
  3. अनपैक के एक डाउनलोड perfom और नई फ़ाइलों की प्रतिलिपि
  4. कॉल एक एसक्यूएल कमांड लाइन अंत में सभी एसक्यूएल statments
  5. सूचित करने के लिए, सभी कॉपी बिन फ़ोल्डर

इसके लिए अन्य तरीका है, लेकिन यह पैटर्न के रूप में सुरक्षित और ध्वनि काम करता है।

एएसपी.NET के भीतर से बिन फ़ोल्डर को अद्यतन करने के लिए, आपके आईआईएस को आपके बिन फ़ोल्डर तक पहुंच की अनुमति देने की आवश्यकता है। तो अगर आप इस तरह एक कस्टम permissionSet बनाकर अपने पर्यावरण सुरक्षा को समायोजित करने पर विचार हो सकता है:

<IPermission 
class="FileIOPermission" 
version="1" 
Read="$AppDir$" 
Write="$AppDir$" 
Append="$AppDir$" 
PathDiscovery="$AppDir$" /> 

ताकि आप प्रतिलिपि बना सकते हैं इस विशेष फ़ोल्डर में फ़ाइलों को बाहर काम करते हैं।

संदर्भ

  1. http://msdn.microsoft.com/en-us/library/ff649312.aspx
  2. http://msdn.microsoft.com/en-us/library/ms998341.aspx

ps .: आप बिन फ़ोल्डर के साथ समस्या मिलती है। नई संस्करण वाली फ़ाइलों को जीएसी में कॉपी करना और वेब.कॉन्फिग संस्करण में असेंबली संदर्भ प्रबंधित करना। अच्छा लगता है।

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