基本架構區段:阿源哥哥的軟體組裝工廠:Xuite日誌
  • 阿源哥哥
  • 參觀人氣統計
  • 最新文章
  • 文章分類
  • 最愛連結
  • 日曆
  • 搜尋文章
  • 關鍵字
  • 最愛日誌
  • 2008-02-29 19:44 基本架構區段
  • ?
  • 綜合議題
  • 好文轉寄
  • 平均分數:0 顆星    投票人數:0
    我要評分:
    標籤 : 


    基本架構樣版程式碼片段下載(VB.NET)

    前言

      在「CSLA.NET Framework簡介」中,筆者針對CSLA.NET Framework做了個簡介,而在「CSLA.NET基本功」中,說明了Rockford Lhotka先生將商業物件區分為13種基本模式。因為在這13種模式中,會有許多程式碼區段是類似的,不同的模式只在於繼承不同的基底類別,及不同架構區段的組合。因此,在深入各個基本功介紹之前,本文先介紹這些基本架構,等到了各個基本功實際講解時,再參照本文,選擇合適的基本架構區段組入類別程式中。

    說明

      在接下來的講解,會配合筆者所整理與「基本架構樣版」有關的程式碼片段做說明,所以請讀者先行下載程式碼片段,並請參閱「使用自訂程式碼片段」將程式碼片段匯入到您的開發環境中。如果成功地匯入,將可在程式碼編輯器中按滑鼠右鍵,並選擇「插入程式碼片段(I)...」,可出現如下之選項供選擇合適的程式碼片段。

    基本架構



      如上圖所示,CSLA.NET各個基本功的實作方式為新增一個類別,設定類別名稱並繼承合適的基底類別,接著就是依需要插入並實作,如圖所示的各個區段。

      那個基本功該繼承那個基底類別,或該實作那個區段,請參閱「CSLA.NET基本功」文章中,所連結的各個基本功講解(目前可能只有NameValueList和EdiableRoot,隨後會再慢慢增加)。

      接下來的講解會說明如何使用程式碼片段插入各個區段的樣版,並在各個樣版講解中會介紹一個實際講解該區段的功用及實作方法的連結。

    商業方法

    請使用「插入商業方法區段」,插入如下之程式碼片段:

    #Region "商業方法"

      ' TODO: 加入公用屬性及方法

    #End Region

      該段程式碼區段,其實什麼事也沒有做,只是提醒,為了將來程式碼維護容易,請將實作的公用屬性及方法,加入到該區段中。而實作的方法請參閱「商業方法」實作講解文章。

    驗證規則

    請使用「插入驗證規則區段」,插入如下之程式碼片段:

    #Region "驗證規則"

      Protected Overrides Sub AddBusinessRules()
        ' TODO: 加入驗証規則
      End Sub

    #End Region

      驗證規則,主要是用來訂定欄位輸入時,檢查該欄位是否符合某特定商業規則之驗證方法,而實作的方法請參閱「驗證規則」實作講解文章。

    授權規則

    請使用「插入授權規則區段」,插入如下之程式碼片段:

    #Region "授權規則"

      Protected Overrides Sub AddAuthorizationRules()
        ' TODO: 加入授權規則
      End Sub

      ' TODO: 加入物件層級授權規則
      Public Shared Function CanAddObject() As Boolean

        Return True

      End Function

      Public Shared Function CanGetObject() As Boolean

        Return True

      End Function

      Public Shared Function CanDeleteObject() As Boolean

        Return True

      End Function

      Public Shared Function CanEditObject() As Boolean

        Return True

      End Function

    #End Region

      授權規則,主要用來設定【誰】可以(或被拒絕)執行「新增」「讀取」「修改」「刪除」等操作,其中更有區分欄位層級及物件層級之授權。而實作的方法請參閱「授權規則」實作講解文章。

    工廠方法

    請使用「插入工廠方法證規則區段」,插入程式碼片段,並依以下系列圖示更改合適的識別子、變數名稱,型別及字串。









    程式碼片段類似如下:

    #Region "工廠方法"

      Public Shared Function NewProduct() As Product
        If Not CanAddObject() Then
          Throw New System.Security.SecurityException( _
             "使用者未授權新增【產品資料】!")
        End If
        Return DataPortal.Create(Of Product)()
      End Function

      Public Shared Function GetProduct(ByVal id As Guid) As Product
        If Not CanGetObject() Then
          Throw New System.Security.SecurityException( _
            "使用者未授權讀取【產品資料】!")
        End If
        Return DataPortal.Fetch(Of Product)(New SingleCriteria(Of Product, Guid)(id))
      End Function

      Public Shared Sub DeleteProduct(ByVal id As Guid)
        If Not CanDeleteObject() Then
          Throw New System.Security.SecurityException( _
            "使用者未授權刪除【產品資料】!")
        End If
        DataPortal.Delete((New SingleCriteria(Of Product, Guid)(id)))
      End Sub

      Public Overrides Function Save() As Product
        If IsDeleted AndAlso Not CanDeleteObject() Then
          Throw New System.Security.SecurityException( _
           "使用者未授權刪除【產品資料】!")

        ElseIf IsNew AndAlso Not CanAddObject() Then
          Throw New System.Security.SecurityException( _
            "使用者未授權新增【產品資料】!")

        ElseIf Not CanEditObject() Then
          Throw New System.Security.SecurityException( _
            "使用者未授權更新【產品資料】!")
        End If

        Return MyBase.Save

      End Function

      Private Sub New()
        ' 限製使用工廠方法
      End Sub

    #End Region

    待續‥‥



    阿源哥哥 / Xuite日誌 / 回應(0) / 引用(0) / 好文轉寄
  • 回應