Dot-Net

SqlDataSource 與 ObjectDataSource

  • February 12, 2014

如果網頁需要一些數據,為什麼不讓 SQLDataSource 呼叫儲存過程呢?為什麼要使用 ObjectDataSource 呼叫業務對象,然後再呼叫儲存過程?我知道基於 .net 框架建構的其他應用程序(比如說桌面應用程序)可以訪問業務對象,但如果應用程序始終只是一個 Web 應用程序怎麼辦?

為了更清楚:

什麼時候應該使用SqlDataSourceor ObjectDataSource

如何激發選擇?

如果只是一個展示、原型或快速破解,那麼只有一個 SQLDataSource 是完全有效的。它快速、簡單、有效,並為您提供所需的結果。

然而,當一個應用程序是為長期設計和建構的,並且預計事情(需求、客戶願望、最終數據庫模式)可能會發生變化時,那麼引入一個適當的“業務”層可能會更有意義 -將您的業務對象建模為對象,然後提供從底層數據庫到這些業務對象的映射。

俗話說——你可以通過多一層間接(或抽象)來解決電腦科學中的幾乎所有問題——這裡也是如此。

當然:您可以直接訪問數據庫,並且可以肯定,在第一次和第一次迭代中,這可能(或可能)是最快的方式。但從長遠來看,當一個應用程序經久耐用時,它通常是一種快速而骯髒的方式——維護成本、維護成本、根據您和您客戶的需求進行更改所需的成本和工作量將會增加很快,就工作量而言,這種快速而骯髒的解決方案看起來不再那麼棒了。

所以總結一下我的觀點:是的,最初,使用直接的 SQL 數據源可能會更快更容易 - 所以當這是重要的一點時使用它:完成快速展示,概念驗證風格的應用程序。但從長遠來看,當您查看應用程序的生命週期時,通常值得投入更多(設計和編碼)精力來添加這一抽象層,這樣您的網頁就不會直接依賴於下面的數據庫。

馬克

引用自:https://stackoverflow.com/questions/1207295