2010-07-20 32 views
1

我已經繼承了一個大的asp.net網站,它依賴於會話信息上的嚴重將基於asp.net應用程序的會話移動到n層架構

有一個後端系統,根據需要通過Web服務提供必要的信息,但應用程序本身沒有數據庫,並且所有內容都通過一堆數據對象保存在會話中,這些對象在整個應用程序中直接訪問。

我最終希望嘗試將應用程序遷移到真正的N層架構,並開始使用數據庫而不是基於會話的數據對象。

我的問題是,什麼是推薦的路徑到達期望的體系結構?

我在想,最初的一步是創建一個訪問數據對象的數據訪問層。一旦到位,我就可以用數據庫替換數據對象。

問題是會話數據對象是從應用程序中的任何地方直接訪問的。由於這些對象存儲在會話中,因此您可以直接設置其任何屬性,而無需控制數據。這貫穿整個應用程序。

例如,假設您有一個存儲在會話中的客戶數據對象。如果你想修改這個客戶,你所要做的就是設置一個局部變量給會話中存儲的對象。然後,您可以通過設置mylocalvar.LastName =「blah」;來更新對象中的任何內容。您的會話對象現在已更新,無需執行其他任何操作。

有沒有人做過這樣的事情,並有任何想法我可以用它來完成它?

*注意:我不打算卸載會話數據,而是重新構建數據的保存和訪問方式。

回答

1

聽起來像一個很大的工作!

我想第一步是爲您的會話信息構建一個抽象層,並重構您的代碼,以便它取決於該會話而不是會話。一旦你這樣做了,現在你的gui代碼只依賴於抽象層,你可以從抽象層抽出會話代碼並用數據訪問代碼取代它,你的gui應該不會是聰明的。

+1

+1我的想法確切 - 抽象出來;當你這樣做時,記住界面隔離原則。 – 2010-07-21 01:51:55

+0

是的,這肯定會很棘手。你提出的是我正在考慮的基本方向。最大的問題是沒有任何標準的數據操作機制,例如顯式保存數據,事務等。應用程序只是將一個本地(通常是全局)變量設置爲來自會話的已經存在的對象,然後直接根據需要更新它的屬性。你知道有哪些技巧可以幫助從一種設計轉移到另一種設計嗎? – AaronS 2010-07-21 03:36:33

+0

那麼本地/全局變量在被操縱後會被存儲回會話狀態的哪一點?那時候,我猜測,你會在新的抽象層中「保存」數據。 – 2010-07-21 04:41:54

相關問題