我瞭解啓動任務用於設置您的系統。例如,如果你的代碼是用Python編寫的,你可以添加一個啓動任務來安裝Python。但是這不能在ProgramEntryPoint批處理腳本中完成嗎?有什麼不同?Azure:我應該在什麼時候使用啓動任務?
回答
它的確如此,如果您使用ProgramEntryPoint,似乎沒有使用啓動任務的理由。你確實可以在同一個批處理文件中包含所有的邏輯。
使用.NET WebRoles/WorkerRoles時,啓動任務變得更加有用。在那裏你只能選擇編寫代碼(你可以再次調用一個批處理文件調用其他批處理文件),或者使用啓動任務。
但是,如果從維護的角度來看,它更清楚地使用啓動任務來處理與實例的配置和安裝有關的任何事情。您在配置/安裝和實際應用程序之間畫一條清晰的界線 - 實際上您可以將此視爲問題的分離點(項目中的其他/新開發人員很容易理解)。
除此之外,您必須知道,使用任務時,您可以執行不同的上下文(受限/升高)的任務,這從安全角度來看可能很重要。而任務存在於不同的類型(簡單,背景,前景),可用於許多不同的場景(例如,一個後臺應用程序,不斷ping你的網站)。如果你不使用任務,你可能需要自己處理所有這些。
這裏是一個很好的博客文章涉及的啓動任務的詳細信息:Using Startup Task in Windows Azure detailed summary
從Sandrino偉大的答案。簡而言之 - 如果您希望在角色啓動之前執行一些代碼(或開始執行),則可以使用啓動任務。如果這不是一個約束,則可以始終從Role的OnStart方法執行任何進程(包括批處理腳本)。過去我使用啓動任務的一種情況是安裝NewRelic監視代理程序。我希望在實際應用程序啓動之前運行我的應用程序。
您可能無法從ProgramEntryPoint安裝Python,因爲安裝可能需要提升(「admin」)特權。
角色(網絡/工作者)通常沒有提高特權(這可能是可能的,但出於明顯的安全原因,這是一種不好的做法)。因此,ProgramEntryPoint中的代碼沒有提升權限。
另一方面,啓動任務可以提高特權。國際海事組織,這可能是使用啓動任務的最大(單一?)好處。
- 1. 我什麼時候應該使用javax.swing.SwingUtilities.invokeLater()?
- 2. 我什麼時候應該使用UITableViewCellSeparatorStyleSingleLineEtched?
- 3. 什麼時候應該使用AWS,什麼時候不使用
- 4. 什麼時候應該在我的查詢中使用事務?
- 5. 什麼時候應該使用sed,什麼時候應該使用awk
- 6. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 7. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 8. 什麼時候應該在應用程序啓動時使用setServletContext.setAttribute()? (Spring mvc)
- 9. 什麼時候應該使用async/await,什麼時候不用?
- 10. 爲什麼/我應該在什麼時候使用dojo模塊?
- 11. 什麼時候應該使用div?我應該什麼時候使用框架?我應該何時使用其他形式的動態內容?
- 12. 我們什麼時候應該上課,什麼時候不應該上課
- 13. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 14. 什麼時候應該使用$(object),何時應該使用$ object?
- 15. 什麼是MvcHtmlString,我應該什麼時候使用它?
- 16. 什麼時候應該停止服務
- 17. 什麼時候應該使用FSharpFunc.Adapt?
- 18. 什麼時候應該使用_aligned_malloc()?
- 19. 什麼時候應該使用`use`?
- 20. 什麼時候應該使用$ rootScope?
- 21. 什麼時候應該使用$(document).ready?
- 22. 什麼時候應該使用html5 sessionStorage?
- 23. 什麼時候應該使用OWIN Katana?
- 24. 什麼時候應該使用流?
- 25. 什麼時候應該使用Promises?
- 26. 什麼時候應該使用setScriptTimeout?
- 27. 什麼時候應該使用助手?
- 28. 什麼時候應該使用Datomic?
- 29. 什麼時候應該使用XS?
- 30. 什麼時候應該使用const?
我曾經不得不使用啓動腳本來安裝Visual C++ 2010 Runtime庫,因爲它在默認情況下在Azure上不可用,並且它需要一個提升的上下文才能完成此操作,所以這只是一個示例。 – 2012-07-27 12:25:10