今天我們把先前在Windows台下用Visual Studio IDE環境開發的簡單的人薪資計算應用程式移植到Linux平台上,以為跨平台的一個小小的實作。
首先我們把專案和資料庫移到Ubuntu環境下,我只是籍由一台NAS為中介,把檔案由WIndows平台複製到NAS,再由NAS複製到Ubuntu中,如下圖:
HRApp資料夾是薪資計算應用程式資料夾,HRDB.Bak是資料庫份檔案,我先把資料庫還原到Ubuntu上的SQL Server中。
執行Azure Data Studio,打開Ubuntu的炵端機,下達指令azuredatastudio,就可以看到Azure Data Studio的畫面:
點一下左上角的[Server]圖示,
然後把連線昨天建的本機SQL Server連線啟動起來,就在連線字串上點兩下就行了,連上SQL Server是這樣子,游標指到Server上按右鍵:
然後叫出Manage視窗,可以看到有個Restore功能,
點下Restore功能,出現還原功能對話窗:
把用來還原的備份檔完路徑和檔名打上去,然後按下[OK],
接下來還原資料庫的確認對話窗,按下[Restore],
最後出現"Restore Database Succced."還原成功了。
然後在下圖指示"Refresh"的地方點一下"Refresh",
就會看到HRDB出現在資料庫清單中。點選[New Query],出現執行SQL指令視窗,輸入"Select * from Emp_Base;",再按下"Run",就會看到之前輸人的一筆測試員工資料。
接下來,我們來看看怎麼把薪資計算應用程式專案移過來。
我們在Ubuntu終端機輸入"Code"指令,沒多久,Visual Studio Code視窗就出現了:
像之前那樣利用"OPen Folder"的方式打開薪資訊算應用程式專案資料夾,最後下圖所示:
我們有兩個地方要修改:
"Data Source=ubuntu;Initial Catalog=HRDB;User ID=sa;Password=***********" <-- 注意把星號換成正式的密碼。
2. 我們想法預設的連線埠5000/5001改其他埠號,例如8000,查找了一下,這個設定是在Properties資料夾下的launchSettings.json檔案內設置:
程式碼如下:
"HRApp": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:8001;http://localhost:8000"
}
}
或許你會懷疑ASP.NET Core是不是內建有網站服務器,不然怎麼能當作網站運作,在WIndows下Visual Studio會叫用一個IIS Express的克難版IIS來建置IIS運行環境。在Linux下,.NET Core則是使用一個名為KESTREL的微型Web Server來作為ASP.NET Core網站運作的基石,有興趣瞭解Kestrel的邦友可以參考這篇文:Kestrel web server implementation in ASP.NET Core。
我們執行dotnet run指令時,就會啟動Kestrel並建構出一個微型網站。在正式上線的網站,建議還是使用IIS(Windows)、Apache(Linux)、Node.js(Linux)來當做正式Web Server,然後讓Kestrel和IIS、Apache、Node合作。
前述關於移植要修改的地方修改好以後,記得存好檔案,再離開Visual Studio Code。
打開ubuntu終端機,cd到薪資計算程式專案所在資料夾。
執行指令:
dotnet restore
dotnet run
注意連線資訊己變8000及8001埠,
打開瀏覽器,輸入連結URL: http://localhost:8000/ ,然後操作到員工基本資料維護畫面,可以看到:
這樣,我們就完成移植ASP.NET Core專案到Linux環境了。
談到這裏,技術層面的討論到此告一段落了,明天,來個Happy Ending,