2013-07-06 8 views
10

मैं एक ऐसी वेबसाइट विकसित कर रहा हूं जिसे मैं विंडोज़ एज़ूर पर होस्ट करने की योजना बना रहा हूं। साइट को कुछ दैनिक/साप्ताहिक अनुसूचित नौकरियों को चलाने की आवश्यकता होगी, विभिन्न तृतीय पक्ष डेटा स्रोतों को सिंक्रनाइज़ करना, उपयोगकर्ता अधिसूचनाएं भेजना आदि। यह ऑन-डिमांड एसिंक कार्यों को चलाने में भी सक्षम होना चाहिए जैसे कि उपयोगकर्ताओं को ईमेल भेजना आदि।Azure वेब साइट्स - निर्धारित कार्य

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

परियोजना भविष्य में इस लागत को औचित्य दे सकती है, लेकिन व्यापार शुरू होने से पहले मैं वास्तव में एक सस्ता विकल्प पसंद करूंगा। इसलिए मैं Azure वेब साइट्स में देख रहा हूँ।

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

साथ ही, क्या मैं साइट को अपने डोमेन से जोड़ सकता हूं और Azure वेब साइट्स का उपयोग करके मुफ्त में एसएसएल का उपयोग कर सकता हूं?

उत्तर

4

ऐसा लगता है कि Azure अंत में उचित समय निर्धारण में बनाया गया है - see the Azure Scheduler documentation

जबकि यह पूर्वावलोकन में है और आप सबसे अधिक संभावना अब के लिए REST API का उपयोग करना होगा, मुझे यकीन है ऐसा नहीं होगा प्रबंधन पोर्टल में कार्यक्षमता उपलब्ध होने से बहुत पहले। मैं इसके लिए उम्र इंतजार कर रहा हूँ!

+0

आप इसे प्रबंधन पुस्तकालयों के माध्यम से नियमित .NET में भी उपयोग कर सकते हैं: http://fabriccontroller.net/blog/posts/a-complete-overview-to-get-started-with-the-windows-azure-scheduler/ –

+0

चीयर्स, दिलचस्प लग रहा है। यह एक पूर्ण बीजी कार्यकर्ता – havardhu

+0

चलाने से सस्ता लगता है क्या Azure शेड्यूलर व्यापक रूप से उपलब्ध है? मैं इसे अपने पोर्टल में नहीं देखता हूं। –

3

आप Node.js में आराम से लेखन कोड रहे हैं, Windows Azure Mobile Services पर एक नज़र है। इसमें निर्धारित कार्यों को परिभाषित और निष्पादित करने की क्षमता है। इसके बारे में अधिक यहां पाया जा सकता है: http://www.windowsazure.com/en-us/develop/mobile/tutorials/schedule-backend-tasks/

अदिति की शेड्यूलर सेवा का उपयोग करने का एक और विकल्प हो सकता है: http://www.aditicloud.com/

फिर भी एक और विकल्प आपके शेड्यूलर को लिखना और Azure वेबसाइटों में उस समाधान को होस्ट करना होगा। मैं Quartz.net शेड्यूलिंग लाइब्रेरी का उपयोग करने की सलाह दूंगा। यह मुफ़्त, खुला स्रोत है और कई लोगों द्वारा उपयोग किया जाता है।

मुझे अभी भी लगता है कि नौकरी प्रसंस्करण के लिए कार्यकर्ता भूमिका मार्ग एक व्यवहार्य समाधान है। आप विंडोज़ एज़ूर वेबसाइट में फ्रंट एंड इंफ्रास्ट्रक्चर होस्ट कर सकते हैं और यह विंडोज़ एज़ूर कतारों के माध्यम से कार्यकर्ता की भूमिका से संवाद कर सकता है। मान लें कि आप अतिरिक्त छोटे वीएम आकार में कार्यकर्ता भूमिकाओं के 2 उदाहरण होस्ट करते हैं, यह आपको प्रति माह $ 30.00 ($ 0.02 x 2 x 750 घंटे) खर्च करने जा रहा है। मैंने अपना खुद का कार्य शेड्यूलर बनाने और इसे बहुत पहले नहीं, एक कार्यकर्ता भूमिका में होस्ट करने पर एक ब्लॉग पोस्ट लिखा था। आप उस पोस्ट यहाँ पढ़ सकते हैं: http://gauravmantri.com/2013/01/23/building-a-simple-task-scheduler-in-windows-azure/

इसके अलावा, मैं मुक्त Azure वेब साइटों का उपयोग करके अपने डोमेन के और उपयोग ssl को साइट से कनेक्ट कर सकते हैं?

मुझे ऐसा नहीं लगता है। एसएसएल विंडोज़ एज़ूर वेबसाइट्स के साथ मुक्त नहीं है। यहां एसएसएल मूल्य निर्धारण पर एक नज़र डालें: http://www.windowsazure.com/en-us/pricing/details/web-sites/

+0

विंडोज Azure मोबाइल सेवा वर्तमान में पुस्तकालयों का समर्थन करता है की एक बहुत ही सीमित सूची है, इसलिए वहाँ ज्यादा है कि आप अनुसूचित कार्यों में कर सकते हैं नहीं है। –

0

आलेख The Dangers of Implementing Recurring Background Tasks In ASP.NET में आपके Asp.Net एप्लिकेशन में बैकग्राउंड कार्य चलने का एक बहुत ही रोचक विचार है, बिना ऐपडॉमेन शट डाउन कार्य को रोकता है।

यदि आप एज़ूर कार्यकर्ता की भूमिका के लिए भुगतान नहीं करना चाहते हैं, तो आप इसे आजमा सकते हैं।

0

मैं सिर्फ पहली बार में कहना है कि आप डबल :)

ए 'WebRole "Azure PaaS में भुगतान करने की जरूरत के बारे में सही नहीं हैं (मंच के रूप में एक सेवा) सिर्फ एक WorkerRole + आईआईएस है जरूरत ।

इसलिए, चूंकि आपके तर्क को टाइमर में रखा जाना बहुत कम है, और शायद बहुत सारे संसाधन नहीं ले रहे हैं, तो आप "वेबरोल" के ऑनस्टार्ट में अपना पृष्ठभूमि कार्यकर्ता थ्रेड शुरू कर सकते हैं। सीएस "फ़ाइल जो आपके वेब ऐप के अंदर है।

इसके परिणामस्वरूप आपका वेब एप्लिकेशन, साथ ही आपके छोटे कार्यकर्ता कार्य को एक ही वर्चुअल मशीन पर होस्ट किया जा रहा है - इसलिए आप केवल एक के लिए भुगतान करते हैं।

एक साइड पॉइंट के रूप में - यदि आप 10 "पृष्ठभूमि" कार्यों चाहते थे, लेकिन वे भारी काम नहीं करते हैं और उन्हें स्वतंत्र रूप से स्केल करने की आवश्यकता नहीं है, तो आप उन्हें केवल एक ही होस्ट से होस्ट या चला सकते हैं "वर्कररोल" वीएम भी।

namespace MvcWebRole1 
{ 
    public class WebRole : RoleEntryPoint 
    { 
     public override bool OnStart() 
     { 
      // Start my background thread processing task. 
      MyBackgroundTaskThing.Start(); 

      return base.OnStart(); 
     } 
    } 
} 
+0

मैंने इस https://azure.microsoft.com/en-in/documentation/articles/scheduler-get-started-portal/ पर निर्दिष्ट एक डेमो बनाया है। लेकिन मुझे कैसे पता चलेगा कि यह कार्य चल रहा है या नहीं? ? –

2

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

टाइमर वर्ग के बारे में जानकारी: http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.110).aspx

मैं Azure वेब साइट पर एक MVC परियोजना में इस परीक्षण किया है और इस बात की पुष्टि कर सकते हैं कि यह काम करता है। Global.asax.cs का), इस सेट अप प्राप्त करने के लिए Application_Start अंदर टाइमर प्रारंभ (:

private Timer _timer; 
protected void Application_Start() 
{ 
    _timer = new Timer(1 * 60 * 1000); // 1 minute 
    _timer.Elapsed += (sender, e) => ScheduledTask.Process(); 
    _timer.Enabled = true; 

    // other code goes here 
} 

मेरे उदाहरण में, टाइमर ScheduledTask.Process() हर मिनट कहता है। यहाँ क्या मेरी ScheduledTask वर्ग लग रहा है जैसे:

public class ScheduledTask { 

    public int Id { get; set; } 
    public DateTime Time { get; set; } 

    public static void Process() { 

     using (var db = new ApplicationDbContext()) { 
      db.ScheduledTasks.Add(new ScheduledTask { 
       Time = DateTime.Now 
      }); 
      db.SaveChanges(); 
     } 

    } 

} 

प्रक्रिया में(), आप जो चाहें कर सकते हैं, लेकिन मैं तो बस है कि क्या यह काम करता है परीक्षण करने के लिए डेटाबेस में एक प्रविष्टि बना रहा हूं। मैं इस कार्य के दिन के बारे में के लिए बहुत कार्य करते रहेंगे और तुम यहाँ परिणाम देख सकते हैं:

http://contactmanager1.azurewebsites.net/ScheduledTask

अद्यतन

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

+1

ठीक है कि आसानी से (अगर पूरी तरह से साफ नहीं किया जाना चाहिए) एक जीवित एपीआई लागू करके सुधार योग्य होना चाहिए कि एक अलग टाइमर हर 10 मिनट या उससे भी कम कॉल करता है। यह ऐप पूल को समय-समय पर रोकना चाहिए। क्या यह एक समाधान या हैक है? – havardhu

+0

यह किसी भी वॉल्यूम वेबसाइट्स के लिए एक विश्वसनीय समाधान नहीं है। यदि आपका एप्लिकेशन बड़ा है, तो आपके पास शायद ऐप चलाने के कई उदाहरण हैं, इसलिए एकाधिक शेड्यूलर। यह शायद एक ही उदाहरण में कम उपयोग वाले छोटे अनुप्रयोगों के लिए उपयुक्त है और AppPool रीसाइक्लिंग से बचने के लिए AlwaysOn सुविधा सक्षम है। [मुझे पता है कि यह पोस्ट पुराना है, सिर्फ नए आने वालों के लिए स्पष्ट रखना] –

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