部署時Portable和win-x64有什麼區別?
我將我的程式碼部署到 Windows Server 2016 上的 IIS,我試圖了解在 Publish/Settings/Target Runtime 下拉列表中選擇
Portable與選擇之間的有效區別。win-x64由於 JIT 需要將程式碼編譯到特定的體系結構,該站點是否需要更長的時間才能在 Portable 下啟動?還有別的事嗎?
編輯 - 簡答
如果您選擇
portable,則應用程序每次啟動時都需要對實際執行的應用程序部分進行 JIT 編譯。如果您的應用程序很大,則性能可能會受到影響。如果您選擇
x64,則應用程序不會因編譯而減慢速度,因為這已經由建構機器(您的筆記型電腦)上的發布過程完成。原始答案
當您選擇
Portable發布選項時,您將獲得一個能夠在 x86(32 位)機器和 x64(64 位)機器上執行的包。選擇可移植選項後,在應用程序啟動時,您將在應用程序保持執行時獲得目標機器(x64 或 x86)的 JIT 編譯程式碼。但是,如果應用程序關閉,所有 JIT 編譯的程式碼都將失去。編譯後的程式碼會一直保存在記憶體中,直到應用程序程序結束。下一次執行將不得不在使用應用程序時再次 JIT 編譯應用程序。這裡的優點是您只需要分發一個包,它可以在兩台 x86/x64 機器上執行。另一種方法是生成多個包,一個用於您打算在其上分發應用程序的每個目標平台。在這種情況下,您將獲得已編譯的特定於機器的包,即使在應用程序程序結束並稍後重新啟動後也不需要重新編譯。在這種情況下,您的應用程序似乎執行得更快,因為編譯只在建構伺服器/機器上完成了一次。但是,它確實會影響您的部署風格。
可以在此處找到有關 .NET 執行時標識符的更多資訊:https ://docs.microsoft.com/en-us/dotnet/core/rid-catalog
這裡有一份關於 JIT 編譯程式碼的好文件:https ://www.telerik.com/blogs/understanding-net-just-in-time-compilation
