.net core有三種部署方式
依賴框架部署FDD、獨立部署SCD、依賴框架的可執行文件FDE
1.依賴框架部署FDD==>使用場景較多
依賴系統已安裝的.net core庫(運行時,SDK),只包含自己的代碼和第三方的依賴項。
包含.dll文件
操作步驟:
第一步,選擇程序,右鍵發布,選擇文件發布
第二步:更多操作/編輯
優點:
不必預先定義應用運行的目標操作系統,生成的可執行文件和庫,是通用的PE文件格式,.net core都可執行,
部署包比較小,自己的代碼和第三方的依賴項、降低磁盤空間、如果運行時更新--只需更新操作系統
缺點:
系統上的.net core版本必須和應用目標的.net core版本一樣或高於
2.獨立部署SCD==>單獨、獨立
不依賴系統的.net core,自己的代碼和第三方依賴項,還包含.net core庫,獨立,同時還包括一個可執行文件.exe
優點:
可以單獨控制與應用一起部署的.net core版本
可以保證應用是能夠運行的
缺點:
不可移植,必須選擇應用的目標系統
部署包比較大
注:不同版本.net core對系統有要求,win10一般都支持
3.依賴框架的可執行文件FDE==>
針對系統優化,一般應用不多
注:
部署到IIS,有兩種方式
1.進程內托管
進程管理器(IIS、Windows服務):收到請求的時候啟用應用,並且在應用發生故障的時候負責重啟。
2.進程外托管
通過反向代理將請求轉發給應用
注:有什么區別?
進程內比進程外性能要高,進程外,多了一層轉發,環回適配器(網絡接口,用於將傳出的網絡流程返回給同一個計算機,Kestrel,這里也有性能的損失);
Kestrel功能比較弱,不應該直接把Kestrel暴露出去
NGINX只有進程外托管,代理服務器
發布后會生成Web.config
<?xml version="1.0" encoding="utf-8"?> <configuration> <location path="." inheritInChildApplications="false"> <system.webServer> <handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers> <aspNetCore processPath="dotnet" arguments=".\WebApplication1.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" /> </system.webServer> </location> </configuration>
hostingModel——設置部署到IIS方式:
1.hostingModel="inprocess" ——啟用IIS
2.hostingModel="outofprocess"——啟用Kestrel
部署前更改部署IIS方式
選擇項目雙擊並添加配置項,如下圖所示: