台灣最大程式設計社群網站
線上人數
1124
 
會員總數:243865
討論主題:188351
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 資料計算放哪邊
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料計算放哪邊
價值 : 10 QP  點閱數:191 回應數:3

樓主


門外漢
0 20
130 16
發送站內信

各位前輩好
想請教一個觀念的問題

目前我做一個簡單的網站去取的資料
網站假定限制為不能使用SqlConnection連資料庫(因為擔心帳密被看光光)


我目前做一個簡單的WebAPI去做為網站撈資料的方法
一開始我資料都是API計算好直接顯示比較簡潔
但是想到假定這個網站有10萬人再使用那每秒呼叫的次數可能高達10次
那這樣會不會導致伺服器當機
做法1是 API提供資料 運算放在網站後台顯示到網站前台或直接在前台運算並顯示
做法2是 API把所有資料運算完再提供資料 網站直接顯示結果

Q1:請問哪個做法比較推薦
Q2:請問網站直連SQL時使用什麼方法可以讓連接IP與帳密不會被看見

搜尋相關Tags的文章: [ .SQL ] ,
本篇文章發表於2018-12-11 07:16
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應


檢舉此回應
補充:
計算資料量為跟SQL查詢最後5000筆資料並累加起來丟到網站
API計算=丟5000筆資料+累加結果 共5001筆
WEB計算=丟5000筆資料
本篇文章回覆於2018-12-11 07:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
在回覆您問題之前,先把一個名詞溝通一下
做法1是 API提供資料 運算放在網站後台顯示到網站前台或直接在前台運算並顯示

您這裡所說的『後台』與『前台』
『後台』是否是指WebForm的CodeFile(.aspx.vb或.aspx.cs)
『前台』是否是指WebForm的aspx
如果是,不建議您這樣溝通
因為Web的設計(不管用什麼語言、什麼程式),通常的
『前台』是指使用者操作的介面
『後台』是指系統維護人員,登入後進行網站維護的介面
因此,您用『後台』、『前台』,容易搞混

建議您用『CodeFile』來代表(.aspx.vb or .aspx.cs)
用『aspx』直接代表aspx

----
前話說完,接著對於您的問題,小喵提出小喵的看法提供參考:

做法1是 API提供資料 運算放在網站後台顯示到網站前台或直接在前台運算並顯示
做法2是 API把所有資料運算完再提供資料 網站直接顯示結果

Q1:請問哪個做法比較推薦

先說結論,再來補充說明為什麼
結論,小喵偏向『做法二』
但原因並非您的『帳密容易被知道』這件事
而是以『系統的擴充與靈活應用』為架構設計的根據

架構上,把商業邏輯抽離,容易讓這一的商業邏輯,在其他的應用可以『共有共用』
系統小喵通常會切成三層
Web的部分是『展示層』,主要是負責畫面的展示
商業邏輯會抽出來獨立一層,針對商業邏輯的運算、會抽出一個『商業邏輯層』
而資料的存取
有必要就在抽出一層,未來如果更換資料庫,只需改『資料存取層』,商業邏輯與展示層可以不必動
沒必要(應該不會改資料庫),與商業邏輯寫一起也可以。

這樣的好處是,當我的商業邏輯層寫好,Web也寫好
假設我要多加一個App來當作介面,那麼抽出來的商業邏輯,直接使用就好(可以不必重寫)
後來,電視也要做個App,一樣只需要在加個展示層,商業邏輯層一樣重複使用

而當我有一個Web,兩個App用了這個商業邏輯,剛好因為某些原因,商業邏輯要做個調整(假設計算規則修改)
那麼只需要調整『商業邏輯層』的程式,Web,App*2可以都不動

----
再來說說您的疑慮
但是想到假定這個網站有10萬人再使用那每秒呼叫的次數可能高達10次
那這樣會不會導致伺服器當機

由於WebAPI是無狀態的程式設計,特別適合作雲端

在雲端,可以設定為『自動擴展』:
當系統負荷較大,主機自動由1台,變成2台,3台,...
當負荷量變小,又可以『自動縮回』1台,維持基本對應

WebAPI特別適合這樣的雲端架構,而且程式不必特別的為了平衡、擴展去撰寫
直接在雲端設定就可以了

當然,前提是您的這樣的服務(自動擴展),要上雲端
自己架主機,可能要自己去根據可能的最大,去調配

Q2:請問網站直連SQL時使用什麼方法可以讓連接IP與帳密不會被看見

SQL的驗證有兩種方式
一種是SQL驗證:在SQL中建立帳號密碼
另一種是Windows驗證,依據執行的Windows帳號,給予權限

如果是自架主機
可以指定『特定的Windows帳號』驗證,然後在『應用程式集區』中,去設定使用『特定的Windows帳號』
這樣的帳密,就是歸作業系統或者AD管理

另外,也可以把連接字串,存成檔案,『放在非Web的位置』,透過程式把該設定讀取進入
這樣除非透過程式,否則因為沒有在Web的範圍內,Web是看不到

最後,如果以上這兩種都不好,Web.Config也可以進行加密,把連接字串加密後放入。

方式很多種,要看哪一種最合適您的環境

以上是小喵的想法,提供參考
^_^

本篇文章回覆於2018-12-11 12:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應


檢舉此回應
謝謝喵大的解惑
說明得非常仔細清楚(莫名感動)
本篇文章回覆於2018-12-11 13:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.