簡體   English   中英

使用舊BLL層的新Asp.Net MVC項目(類+ ado.net + SP)

[英]New Asp.Net MVC Project using Old BLL layer (classes + ado.net + SP)

這是情況:

  • 我有一個Asp.Net 3.5網站,該網站使用BLL項目,其對象類包含調用DAL的方法,而DAL則調用存儲過程(Oldschool)
  • 我正在使用相同的數據庫和對象創建一個新網站(Asp.Net 4和MVC 3)。 我還將添加一堆與現有類和表相關的類和新表(我想是十二種)。

我的問題是:

我如何才能使所有這些協同工作。 我真的很想對新項目使用MVC,並盡可能使所有工作正常進行。 舊項目是一個完整的爛攤子,但它太大了,我們無法動彈。

那么如何處理新對象呢? 對classe和存儲過程使用相同的舊方法? 為新對象和類創建存儲庫模式嗎? 等等...

非常感謝你

ps :我不知道我是否清楚,但如有需要,我可以提供其他詳細信息。

ps2 :我不是在尋找編碼解決方案,而是一些可以平滑集成的最佳方法的指示。

我目前正在完成一個存在EXACT問題的項目上的DataAccess層,這就是我如何解決的方法:

我使用存儲庫模式來隔離我的“新代碼”,使其不了解任何有關舊代碼的信息。 在存儲庫中,我使用對現有邏輯的調用來生成任何“舊版”實體,並使用實體框架來管理任何新實體。 一些實體要求對CRUD操作采用“組合”方法。 例如,當我創建一個新的User實體時,我需要從舊系統中調用兩個不同的對象,第一個向我返回一個PIN,該PIN用於調用另一個舊對象以創建用戶實例並返回一個Id,而該Id最終是與新的Entity框架一起使用來管理對象的“ newUser”部分。 然后,此數據訪問層暴露給MVC項目,該項目僅在新系統看到實體時才知道實體,卻不知道底層的傳統結構是什么。 因此,我們的MVC項目(在本例中甚至是業務邏輯層)僅知道存儲庫,並且如果我們決定將舊式邏輯/ CRUD操作移至新系統,則除了實際的存儲庫以外,其他都不會更改。 在某些情況下,這會導致一些“龐大”的存儲庫(最復雜的是我提到的關於用戶的存儲庫),但是將新代碼和舊代碼完全分開。

我知道這正在向數據訪問層注入一些業務邏輯,但是對於我們的項目,由於其他因素,這是一個刻意的選擇。 如果需要,您可以讓業務邏輯層進行對舊層的調用。

希望這能有所幫助,以防萬一還不清楚,請讓我知道,我將進一步解釋,因為這里可能不像我腦海中那樣清晰:)

無需使用存儲庫模式,EF或DI即可使用MVC。 如果您使用BLL來獲取業務對象(CRUD操作),則沒有理由不能在控制器中直接使用它。

至於添加新的類/表,這取決於BLL的緊密程度。 如果使用接口進行松散耦合,則應該可以為某些DAO使用不同的模式,但是如果DAO直接相互引用,則可能會更麻煩,值得這樣做。

如果您加倍努力,我想說的一個不錯的第一步是在接口中定義CRUD操作(如果還沒有接口),讓您的BLL類實現它們,以便您可以使用DI並減輕其痛苦您確實會切換到其他DL策略。

暫無
暫無

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

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