簡體   English   中英

將SqlDataSource移動到類文件ASP.NET

[英]Moving SqlDataSource to class file ASP.NET

我的任務是將所有SqlDataSource對象從ASP.NET頁面的aspx文件中移出並將它們放入一個單獨的類文件中但是丟失了。 有沒有辦法在單獨的類中創建SqlDataSource對象並將查詢字符串分配給SelectCommandDeleteParametersInsertParameters等?

在哪里可以在單獨的頁面上調用對象而不是在aspx中使用代碼?

是的,你可以這么做。 我建議您將所有數據庫IO移動到Web服務。

我還想補充一點,就你的應用程序的安全性而言,這是你正在采取的一個非常好的步驟。 將您的數據訪問權限與用戶IO分離,我認為這是必須具備的安全措施。 如果做得好,您將大大提高應用程序的安全性。

您可以輕松地創建WCF Web服務。 網上有很多教程,我很樂意為你提供指導。 Web服務將具有CRUD(插入,選擇,更新,刪除)操作。 然后,您可以在網頁上創建一個“對象”類型的數據源,該數據源指向您的Web服務,頁面上的元素可以從這些對象數據源獲取其數據。 您還可以在代碼中實例化Web服務,並使用它來操作數據。 創建對象類型數據源時,將指定與每個命令(select,insert,update ...)對應的服務方法。 希望這能指出你正確的方向,並隨時在評論中提出更多問題,或者你可以發起聊天,我會給你我的電子郵件,你可以在那里向我大喊大叫。

如前所述,可以將SqlDataSource控件移出WebForm。 我現在假設您當前的代碼在.aspx文件中聲明了這些控件。 例如,您可以更改為命令式方法,並在WebForm的代碼隱藏類的事件處理程序中實例化數據源控件,但這樣做並沒有獲得多少收益。 實際上,您甚至可以將執行實例化的大量代碼移動到由代碼隱藏類調用的輔助類中,但這不會讓您更進一步。

DataSource控件的最初目的是為開發人員提供一種創建快速原型/概念證明的方法。 但這些控制並不適用於生產系統。 它們違反了關注點,並使單元測試變得困難,如果不是不可能的話。

在某些方面,DataSource控件可以更容易使用(例如,與GridView控件一起使用)。 但是,這種便利是有代價的,這可能有助於解釋(部分)為什么要求你對控件做些什么。 不幸的是,當ASP.Net 2.0(WebForms)於2005年發布時,當時發布的文獻大大促進了這些DataSource控件的使用。 從那時起,社區已經了解到這些控件的生產價值是值得懷疑的,除非您正在研究不需要隨着時間的推移而發展很多的簡單系統。

正如Anon316所提到的,您可以使用Web服務來處理CRUD操作。 但是,這個解決方案可能不是您真正需要的。 使用Web服務會產生額外的開銷(即,對服務的其他HTTP請求)。 讓您的應用程序直接調用數據庫仍然是一個非常好的方法。

話雖如此,考慮創建一個提供數據訪問工具的獨立類(或類)(例如,存儲庫)。 例如,實體框架使得創建此類事物相當簡單(並且.Net生態系統中還有許多其他數據訪問庫)。 准備好為WebForms的代碼隱藏類添加更多代碼,以使它們與您的Repository(或其他數據訪問)類進行交互。 您將獲得的好處是更可測試性和重用您的數據訪問代碼。 考慮將您的數據訪問類放入解決方案中的單獨項目中(開始)。

無論是在解決方案中還是在Web服務中創建單獨的數據訪問類,您仍然需要進行大量重構才能遠離DataSource控件。 因此,再次注意使用Web服務所涉及的額外開銷,認識到當您擁有多個客戶端(例如Web和移動設備)時,Web服務往往是有意義的,而不是僅當您擁有多個客戶端時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM