iT邦幫忙

3

關於 C# Web Api

各位先進、專家、學長們大家好以下是我的情境與問題
情境:
使用VS2017 新增了一個web api MVC專案,想利用ADO.NET的SQL連線方式與資料庫溝通,
看了很多Web Api MVC的文獻/章 與影片,幾乎都使用Entityframework(目前也還沒
全盤了解entity)與資料庫溝通,因為server內的專案還是使用Web Form,所以想說至
少用這種方式應該能降低些專案合併上的問題,有看到一篇Web API文章(附件1)是用
ADO.NET方式
但是但是他幾乎都將connection刻在contraoller內是不太懂.
問題:
1.請問我使用ADO.NET的方式是應該將這些SqlConnection寫在model class內嗎?
2.請問支援JSON,XML的傳輸模式究竟什麼意思?我照過前輩的專案刻過一個web service
主要是傳出SQL內的資料,那我用Browser連到web service的網址,有顯現出XML格式的
文字在瀏覽器上,但確實也存在著.xml .json的檔案那麼這些檔案會被用在什麼地方,用
什麼方式傳輸這些檔案(call某個函式處理?)?
附件1:https://www.c-sharpcorner.com/UploadFile/97fc7a/webapi-restful-operations-in-webapi-using-ado-net-objects-a/

1
Homura
iT邦高手 3 級 ‧ 2018-07-25 16:02:11

1.請問我使用ADO.NET的方式是應該將這些SqlConnection寫在model class內嗎?

是的,請不要寫在Controller裡
這樣很難維護
舉例如果改一個資料表名稱或欄位
這樣你每個Controller裡的Method都要修改....

正常的專案都會寫一層資料庫專門用的邏輯層
這樣如果資料庫有變動只要去改那層裡的方法就好

2.請問支援JSON,XML的傳輸模式究竟什麼意思?我照過前輩的專案刻過一個web service
主要是傳出SQL內的資料,那我用Browser連到web service的網址,有顯現出XML格式的
文字在瀏覽器上,但確實也存在著.xml .json的檔案那麼這些檔案會被用在什麼地方,用
什麼方式傳輸這些檔案(call某個函式處理?)?

JSON(JavaScript Object Notation)XML是一種資料格式
JSON主要用在javascript上,不過後端很多都有方法讀
例如C#可以使用Json.NET這個套件去讀寫
用在什麼地方
例如我做個一個前端SPA(Single Page Application)程式
當然只有前端沒有自己的資料是不行的
此時你的API就有作用了
SPA會利用AJAX的方式向API要資料
此時API傳回JSON或者XML都行
然後SPA得到資料後
會整理成Html的格式在呈現在頁面上

看更多先前的回應...收起先前的回應...
fillano iT邦超人 1 級 ‧ 2018-07-25 16:21:50 檢舉
  1. 的意思其實是,在撰寫WebAPI的Controller的方法時,回傳的是一個自訂的類別,然後WebAPI會即時透過把這個類別實例映射成XML或JSON的方式,把資料回覆給用戶。回覆的格式,跟請求時的標頭有關。
Homura iT邦高手 3 級 ‧ 2018-07-25 16:34:38 檢舉

fillano
原來是這樣
講到別的東西去了
都講完懶得改了/images/emoticon/emoticon06.gif

e0937557 iT邦新手 5 級 ‧ 2018-07-25 16:54:23 檢舉

感謝兩位先進解答,不過我在model內新增一個空的calss 也引用
using System.Data.SqlClient;
using System.Data;
但是當我寫完SqlConnection ABC = new SqlConnection();
卻無法找到ABC這個物件是為什麼呢?但是在controller內這樣的指令
卻都沒問題.

Homura iT邦高手 3 級 ‧ 2018-07-25 16:56:50 檢舉

e0937557
你有沒有在Controller裡using model啊?

using 專案名稱.Models
e0937557 iT邦新手 5 級 ‧ 2018-07-25 17:03:42 檢舉

剛剛加上去了,但沒有變化,我將游標指向 ABC 提醒新增唯獨修飾子或新增協助工作修飾子(不知道先進是否需要更多什麼資訊)? 謝謝

Homura iT邦高手 3 級 ‧ 2018-07-25 17:06:55 檢舉

e0937557
我發現Models 少個s
正常這樣就可以讀到了
還是你建的class不在Models的命名空間裡?

e0937557 iT邦新手 5 級 ‧ 2018-07-25 17:13:20 檢舉

先進您好 我的model是有s的 但是不太懂您說的"你建的class不在Models的命名空間裡?"是什麼意思 有搜尋到您的FB 不知是否願意在FB上詢問您呢?

2
fysh711426
iT邦研究生 4 級 ‧ 2018-07-26 00:21:55

問題 1:
這是分層架構討論的東西,舊專案通常會直接寫在 Controller 內,以前還沒有分層架構的概念,現在通常會分兩層或三層,Controller 處理商業邏輯和 Repository 處理資料存取,這部分和 Homura 大大說的一樣。

如果專案有用到快取 Cache,會再拆一層 Service 處理快取的部分,也有一些做法會將 Controller 的商業邏輯直接切到 Service 去,Controller 只當 api 的接口,作法蠻多的,不過多一層就增加一層的開發成本,有利有弊,看專案大小和需求做變化。

問題 2:
和 Homura 大大講的一樣,用在 SPA 網站,或給 APP 呼叫,
現代網站為了更好的使用者體驗,幾乎都做成 SPA 形式,利用 AJAX 和後端要資料,再將資料透過 JQuery、Angular、Vue 等框架顯示在畫面上,而這個過程中資料傳遞的格式就會使用 XML 或 JSON,不過現在 XML 比較少見,普遍使用 JSON。

小弟有篇文章,大大有興趣可以參考看看。
[C#][ASP.NET] Web API 開發心得 (2) - 網站的基本架構

2
小魚
iT邦高手 1 級 ‧ 2018-07-26 01:03:34

換我打廣告了,
我年初的鐵人賽文章有寫到簡單的API,
就是用JSON傳的,
大概在這個地方吧
[Day 23] 當ASP.NET MVC遇到Ajax (一)

我要發表回答

立即登入回答