0

我有一個WCF數據服務,公開我的數據模型。基於表單身份驗證cookie中的當前用戶使用查詢攔截器和服務操作來強制執行數據安全性/過濾和業務規則。訪問ASP.NET網頁中數據的正確方法?

數據服務用於在某些頁面上提供AJAX控件,也可能在某些時候由移動應用程序使用。

我也有幾個非AJAX MVC視圖需要顯示和編輯相同的數據。如果我要直接在控制器中使用實體框架,我需要重新實現登錄用戶的任何相關數據過濾。正確的方法是在相同的應用程序中本地查詢相同的數據服務嗎?

回答

0

我的建議是重構你的DataFiltering層,使它可以在兩種情況下(即你現有的WCFDS和直接使用EF)使用,通過將它拉出到它自己的獨立模塊中用一個包裝來抽象出細節其中正在使用身份驗證方法(FormsAuthentication或LoggedIn用戶)。這在實現中有一點前期的成本,但它肯定比重新查詢相同的應用程序更有效(如果將來需要實現另一個模塊,以後會節省一些成本)。

+0

如果我這樣做,我不會失去對返回的對象執行高級LINQ操作的能力嗎?我目前可以使用LINQ或ODATA在WCFDS上執行任何類型的操作。更新怎麼樣?我需要爲每個可能執行的更新/插入操作編寫單獨的函數嗎? 我目前在數據庫優先模式下使用EF。如果我切換到第一代碼模式,我將能夠在實體類中執行過濾嗎?如果是這樣,那麼它將保留完整的LINQ功能集和插入/更新能力。 – Monstieur 2013-02-16 04:10:20

+0

我在想更細的東西,你會繼續在你現有的WCFDS上使用相同的查詢攔截器和服務操作,改變它們的實現來調用一個可以被MVC視圖使用的單獨模塊。在這種情況下,我肯定會推薦一個代碼優先的模型,它可以讓您更輕鬆地控制所需的控制級別。 – 2013-02-18 19:19:43

+0

這會導致在網站不同部分工作的人忘記過濾數據或滾動自己的過濾,而不是調用常用的過濾功能。我希望任何數據訪問手段都已被過濾(即,如果需要,可以使用DbContext或WCFDS) – Monstieur 2013-02-19 03:59:13

相關問題