iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 29
3

  今天我們把先前在Windows台下用Visual Studio IDE環境開發的簡單的人薪資計算應用程式移植到Linux平台上,以為跨平台的一個小小的實作。
  首先我們把專案和資料庫移到Ubuntu環境下,我只是籍由一台NAS為中介,把檔案由WIndows平台複製到NAS,再由NAS複製到Ubuntu中,如下圖:
https://ithelp.ithome.com.tw/upload/images/20181103/200176492bKKf8t1f7.png
HRApp資料夾是薪資計算應用程式資料夾,HRDB.Bak是資料庫份檔案,我先把資料庫還原到Ubuntu上的SQL Server中。
  執行Azure Data Studio,打開Ubuntu的炵端機,下達指令azuredatastudio,就可以看到Azure Data Studio的畫面:
https://ithelp.ithome.com.tw/upload/images/20181103/200176491rb3TBjkpi.png
  點一下左上角的[Server]圖示,
https://ithelp.ithome.com.tw/upload/images/20181103/20017649cS9famTmRE.png
 然後把連線昨天建的本機SQL Server連線啟動起來,就在連線字串上點兩下就行了,連上SQL Server是這樣子,游標指到Server上按右鍵:
https://ithelp.ithome.com.tw/upload/images/20181103/200176490ridGKQVyW.png
  然後叫出Manage視窗,可以看到有個Restore功能,
https://ithelp.ithome.com.tw/upload/images/20181103/20017649qw8enIVguH.png
  點下Restore功能,出現還原功能對話窗:
https://ithelp.ithome.com.tw/upload/images/20181103/20017649llGmVk2GDr.png
  把用來還原的備份檔完路徑和檔名打上去,然後按下[OK],
  接下來還原資料庫的確認對話窗,按下[Restore],
https://ithelp.ithome.com.tw/upload/images/20181103/20017649pxkhaO0sxi.png
  最後出現"Restore Database Succced."還原成功了。
https://ithelp.ithome.com.tw/upload/images/20181103/20017649L9gGrI89LR.png
  然後在下圖指示"Refresh"的地方點一下"Refresh",
https://ithelp.ithome.com.tw/upload/images/20181103/20017649FESO0LBUzf.png
  就會看到HRDB出現在資料庫清單中。點選[New Query],出現執行SQL指令視窗,輸入"Select * from Emp_Base;",再按下"Run",就會看到之前輸人的一筆測試員工資料。
https://ithelp.ithome.com.tw/upload/images/20181103/20017649vPFeJ4QfmU.png
  接下來,我們來看看怎麼把薪資計算應用程式專案移過來。
  我們在Ubuntu終端機輸入"Code"指令,沒多久,Visual Studio Code視窗就出現了:
https://ithelp.ithome.com.tw/upload/images/20181103/20017649TqK3RY2sKt.png
https://ithelp.ithome.com.tw/upload/images/20181103/20017649sdmZXFWSZQ.png
像之前那樣利用"OPen Folder"的方式打開薪資訊算應用程式專案資料夾,最後下圖所示:
https://ithelp.ithome.com.tw/upload/images/20181103/20017649GtOokFYGtj.png
https://ithelp.ithome.com.tw/upload/images/20181103/20017649999aIGreCh.png
https://ithelp.ithome.com.tw/upload/images/20181103/20017649tYpg5oBChG.png
我們有兩個地方要修改:

  1. 資料庫連線,因為Server Name改變了。如之前說明,這是在appsettings.json中,ubuntu安裝預設的主機名稱就是ubuntu,另外,連線資訊也不能用Windows整合式驗證了,要改成這個樣子:
"Data Source=ubuntu;Initial Catalog=HRDB;User ID=sa;Password=***********"  <-- 注意把星號換成正式的密碼。

https://ithelp.ithome.com.tw/upload/images/20181103/20017649jHR4qHG7xw.png
2. 我們想法預設的連線埠5000/5001改其他埠號,例如8000,查找了一下,這個設定是在Properties資料夾下的launchSettings.json檔案內設置:
  程式碼如下:

    "HRApp": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:8001;http://localhost:8000"
    }
  }

https://ithelp.ithome.com.tw/upload/images/20181103/20017649aeTlzw9Haq.png
  或許你會懷疑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埠,
https://ithelp.ithome.com.tw/upload/images/20181103/20017649VJjK1vtTiC.png
  打開瀏覽器,輸入連結URL: http://localhost:8000/ ,然後操作到員工基本資料維護畫面,可以看到:
https://ithelp.ithome.com.tw/upload/images/20181103/20017649CJk9HndAbg.png
  這樣,我們就完成移植ASP.NET Core專案到Linux環境了。
  談到這裏,技術層面的討論到此告一段落了,明天,來個Happy Ending,


上一篇
(Day 28) 江山如此多嬌,引無數英雄盡折腰。
下一篇
(Day 30) 邁向開源的終極旅程
系列文
跨平台開發利器- ASP.NET Core 30

尚未有邦友留言

立即登入留言