2012-07-27 69 views
1

我瞭解啓動任務用於設置您的系統。例如,如果你的代碼是用Python編寫的,你可以添加一個啓動任務來安裝Python。但是這不能在ProgramEntryPoint批處理腳本中完成嗎?有什麼不同?Azure:我應該在什麼時候使用啓動任務?

+0

我曾經不得不使用啓動腳本來安裝Visual C++ 2010 Runtime庫,因爲它在默認情況下在Azure上不可用,並且它需要一個提升的上下文才能完成此操作,所以這只是一個示例。 – 2012-07-27 12:25:10

回答

5

它的確如此,如果您使用ProgramEntryPoint,似乎沒有使用啓動任務的理由。你確實可以在同一個批處理文件中包含所有的邏輯。

使用.NET WebRoles/WorkerRoles時,啓動任務變得更加有用。在那裏你只能選擇編寫代碼(你可以再次調用一個批處理文件調用其他批處理文件),或者使用啓動任務。

但是,如果從維護的角度來看,它更清楚地使用啓動任務來處理與實例的配置和安裝有關的任何事情。您在配置/安裝和實際應用程序之間畫一條清晰的界線 - 實際上您可以將此視爲問題的分離點(項目中的其他/新開發人員很容易理解)。

除此之外,您必須知道,使用任務時,您可以執行不同的上下文(受限/升高)的任務,這從安全角度來看可能很重要。而任務存在於不同的類型(簡單,背景,前景),可用於許多不同的場景(例如,一個後臺應用程序,不斷ping你的網站)。如果你不使用任務,你可能需要自己處理所有這些。

這裏是一個很好的博客文章涉及的啓動任務的詳細信息:Using Startup Task in Windows Azure detailed summary

0

從Sandrino偉大的答案。簡而言之 - 如果您希望在角色啓動之前執行一些代碼(或開始執行),則可以使用啓動任務。如果這不是一個約束,則可以始終從Role的OnStart方法執行任何進程(包括批處理腳本)。過去我使用啓動任務的一種情況是安裝NewRelic監視代理程序。我希望在實際應用程序啓動之前運行我的應用程序。

0

您可能無法從ProgramEntryPoint安裝Python,因爲安裝可能需要提升(「admin」)特權。

角色(網絡/工作者)通常沒有提高特權(這可能是可能的,但出於明顯的安全原因,這是一種不好的做法)。因此,ProgramEntryPoint中的代碼沒有提升權限。

另一方面,啓動任務可以提高特權。國際海事組織,這可能是使用啓動任務的最大(單一?)好處。

相關問題