[英].NET Design Patterns (tiers)
我支持並開發一個大型ASP.NET應用程序(我是唯一的開發人員)。 我正在嘗試通過使用設計模式來采用結構化的編碼方法,但是我尚未完全掌握該主題。 我正在考慮將MVP模式用於用戶界面和數據層以分離業務邏輯和數據邏輯(總共兩個模式)。 例如,看下面的代碼:
Imports System.Data.SqlClient
Imports System.Web.Configuration
Partial Class _Default
Inherits System.Web.UI.Page
Private _ConString As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Try
If Session("OrderID") > " " Then 'Line 10
Dim objDR As SqlDataReader
_ConString = WebConfigurationManager.ConnectionStrings("TestConnection").ConnectionString
Dim objCon As New SqlConnection(_ConString)
Dim objCommand As New SqlCommand
objCommand.CommandText = "SELECT * FROM Person WHERE ID = " & session("id") 'I know this could cause SQL injection attacks. I wrote it quickly to get my point accross
objCon.Open()
objCommand.Connection = objCon
objDR = objCommand.ExecuteReader
Do While objDR.Read
MsgBox(objDR("name"))
Loop
objDR.Close()
End If
Catch ex As Exception
Throw
End Try
End Sub
End Class
這違反了許多SOLID規則。 在表示層中有數據邏輯和業務邏輯(第10行是業務邏輯)。
我正在考慮創建兩個新類,即PersonDAL(用於數據訪問層)和PersonBLL(用於業務邏輯層)。 業務邏輯層和數據訪問層將具有相同的函數名稱,即getPerson(),即表示層將在BLL層中調用getPerson,而BLL層中將調用DAL中的getPerson。 我的問題是:這是一個好方法還是有更好的方法將此功能分解為多個層?
我看了以下鏈接,該鏈接在使用數據集時討論了這種方法,但是我沒有使用數據集,即我正在使用SQLCommands和SQLDataReaders: http : //msdn.microsoft.com/zh-cn/library/aa581779.aspx 。
我們已經使用此確切的層結構將應用程序投入生產8年以上,該結構最初基於Microsoft參考應用程序設計。
這個分層的系統使我們能夠輕松地添加Web客戶端,服務界面(用於處理傳入的電子郵件),Win Form客戶端,Windows Tablet客戶端,並且最近支持幾乎直接連接到Mono的端口來創建iPad客戶端。
所有客戶端共享BLL,並通過.Net遠程處理或WCF與DAL通信。 這種方法還使我們能夠在多個物理服務器之間分布Web客戶端和DAL,以處理大量用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.