# 北科大專題課程-3 C#基礎與 .Net Core專案實作
##### 2020/10/13
###### 黃豊凱KevinHuang
---
# 什麼是C#
---
### 什麼是C#
**基於.Net框架的物件導向程式語言**
- 物件導向程式設計
- .Net框架
---
### 物件導向程式設計
參考網站:
- 物件導向介紹+特性1.封裝:
- [什麼是OO?物件導向與封裝](https://medium.com/%E7%A8%8B%E5%BC%8F%E6%84%9B%E5%A5%BD%E8%80%85/%E4%BB%80%E9%BA%BC%E6%98%AFoo-%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E8%88%87%E5%B0%81%E8%A3%9D-80379c24e62)
- 物件導向特性2.繼承:
- [什麼是OO?物件導向與繼承](https://medium.com/%E7%A8%8B%E5%BC%8F%E6%84%9B%E5%A5%BD%E8%80%85/%E4%BB%80%E9%BA%BC%E6%98%AFoo-%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E8%88%87%E7%B9%BC%E6%89%BF-6955239576af)
- 物件導向觀念補充-介面與抽象:
- [物件導向中的介面與抽象類別是什麼 ?](https://medium.com/%E7%A8%8B%E5%BC%8F%E6%84%9B%E5%A5%BD%E8%80%85/%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E4%B8%AD%E7%9A%84%E4%BB%8B%E9%9D%A2%E8%88%87%E6%8A%BD%E8%B1%A1%E9%A1%9E%E5%88%A5%E6%98%AF%E4%BB%80%E9%BA%BC-1199804ccc5f)
- 物件導向特性3.多型:
- [什麼是OO?物件導向與多型](https://medium.com/%E7%A8%8B%E5%BC%8F%E6%84%9B%E5%A5%BD%E8%80%85/%E4%BB%80%E9%BA%BC%E6%98%AFoo-%E7%89%A9%E4%BB%B6%E5%B0%8E%E5%90%91%E8%88%87%E5%A4%9A%E5%9E%8B-30690aa3934c)
---
### 什麼是 .Net 框架
由微軟發明的框架
目前有兩個 .Net Framework 與 .Net Core
Windows系統自帶 .Net Framework
並且 .Net Framework 也依賴於Windows
---
### C#入門教學資料
- [C#入門指南](http://kaiching.org/pydoing/cs-guide/index.html)
- [搭配影片觀看](https://www.youtube.com/watch?v=EqtRHs1DsJo&list=PL9OF2bYpo7BPQj7ltIoEQ74L9rpdWtnoC&ab_channel=PYDOING)
---
### 網頁系統架構
> 前端、後端、資料庫
---
### 前端後端=前台後台?
---
### 前端後端=前台後台?
### *錯!*
- 前台:使用者操作的介面
- 後台:管理者操作的介面
- 前端:系統架構中負責畫面、使用者操作
- 後端:系統架構中負責邏輯運算、存取資料
---
### 前端、後端、資料庫
###### 流程與各自的語言與框架
![](https://i.imgur.com/Sh6BtUn.png)
---
### 前端、後端、資料庫
###### 更簡單的理解方法
![](https://i.imgur.com/RAQE2C2.png)
---
### 程式開發架構
> MVC
---
### MVC
- Model(資料模型對應)
- View(前端視圖)
- Controller(流程控制器)
- Service(邏輯運算服務)
---
### MVC
![](https://i.imgur.com/1YAlibl.png)
---
### 框架
> .Net Framework vs. .Net Core
---
### .Net Framework vs. .Net Core
#### 兩者都是.Net的框架
![](https://i.imgur.com/hEpLLfV.png)
---
### 什麼是前後端分離?API又是什麼?
---
### 什麼是前後端分離?API又是什麼?
![](https://i.imgur.com/Y7qdcia.png)
---
### 什麼是前後端分離?API又是什麼?
![](https://i.imgur.com/DoHifil.png)
---
### Restful API-Http Method
[參考連結](https://progressbar.tw/posts/53)
![](https://i.imgur.com/KrerRBN.png)
---
### Http Method 範例
![](https://i.imgur.com/FrvM592.png)
---
### Restful API
[可參考資料](https://github.com/twtrubiks/django-rest-framework-tutorial/tree/master/RESTful-API-Tutorial)
![](https://i.imgur.com/Eu2KKjv.png)
---
### Restful API 範例
[可參考資料](https://github.com/twtrubiks/django-rest-framework-tutorial/tree/master/RESTful-API-Tutorial)
```
- GET /api/files/ 得到所有檔案
- GET /api/files/1/ 得到檔案 ID 為 1 的檔案
- POST /api/files/ 新增一個檔案
- PUT /api/files/1/ 更新 ID 為 1 的檔案
- PATCH /api/files/1/ 更新 ID 為 1 的部分檔案內容
- DELETE /api/files/1/ 刪除 ID 為 1 的檔案
```
---
## 開始實作
---
### 1.建立專案
![](https://i.imgur.com/MQ4Q1zj.png)
---
### 2.建立資料庫與資料表
![](https://i.imgur.com/yHSaiZp.png)
---
### 3.安裝EF Core套件
![](https://i.imgur.com/NYRGK6K.png)
---
### 4.初始化資料模型對應
![](https://i.imgur.com/QXnP9er.png)
---
### 5.新增Service資料夾
![](https://i.imgur.com/lnk25h0.png)
---
### 6.建立第一個API Controller
![](https://i.imgur.com/oOJegss.png)
---
### 7.Controller呼叫Service
![](https://i.imgur.com/vyATbZt.png)
---
### 8.Service引入DBContext並查詢資料
- EF Core 使用的是LinQ語法,而不是SQL指令
- [EF Core LinQ官方參考文件](https://docs.microsoft.com/zh-tw/ef/core/querying/basic)
![](https://i.imgur.com/lab36T6.png)
---
### 10.Controller回傳資料
![](https://i.imgur.com/25MIVd1.png)
---
### 11.透過網頁測試Get API
![](https://i.imgur.com/sn3fsoQ.png)
---
### 12.透過PostMan測試API
![](https://i.imgur.com/v8wLE3i.png)
---
### 完成剩餘API實作-TodoList專案
- 「已完成」查詢所有Todo API
- 新增Todo
- 用ID查詢單一Todo API
- 變更Todo狀態API(完成/未完成)
- 刪除Todo API
---
### 額外練習:會員系統
[參考資料](https://blog.johnwu.cc/article/ironman-day12-asp-net-core-restful-api.html)
- 查詢所有會員資料
- 查詢單一會員資料
- 新增會員資料
- 修改會員資料
- 刪除會員資料
---
### 複習與深入了解資源
- [ASP.Net Core MVC進化之路](https://ithelp.ithome.com.tw/users/20111879/ironman/1749)
- [ASP.NET Core 從入門到實用](https://ithelp.ithome.com.tw/users/20107461/ironman/1372)
---
##### 學程式不只是學習某個語言或框架,
##### 更重要是學習怎麼自學更多
![](https://i.imgur.com/dhYvv2w.png)
{"metaMigratedAt":"2023-06-15T14:05:34.892Z","metaMigratedFrom":"YAML","title":"北科大專題課程-3 C#基礎與 .Net Core專案實作","breaks":true,"contributors":"[{\"id\":\"51ff12a4-2c72-4ebf-8d92-b365963be44a\",\"add\":5165,\"del\":931}]"}