今天關於這個問題我和同事進行很是激烈的討論,最後還有有點不了了之的感受。數據庫
在回家的路上我想到了如何來決定這個問題。架構
在論述這一問題以前先描述一下上下文。ide
首先我公司普通的項目使用如下的架構。代理
WebSite=>WCF=>BLL=>Repository=>DAL=>DB對象
同層之間能夠直接調用但不能調用其餘同層的下一層。it
各層之間的職責以下:class
WebSite:頁面展示層。提供頁面管理以及繪製。數據
WCF:服務提供層。提供服務管理以及初始化。項目
BLL: 業務邏輯層,用於提供業務邏輯的實現。di
Repository:業務對象倉儲層,用於提供業務對象的存取。
DAL:數據訪問層,用於提供數據對象的永久化以及讀取。
DB:數據庫,用於存放數據對象的永久化數據。
在我和同事的討論中主要是集中在外部服務調用代理也就是WSProxy究竟是應該視做BLL層以提供其餘BLL層調用仍是視做Repository層讓其餘Repository層進行調用。
BLL層主要有如下業務。
一、不會返回業務數據的業務。如:發送一封郵件,發送一條短信。
二、返回業務數據的業務。如:獲得訂單列表、已發送郵件列表等。
Repository主要是如下業務。
一、爲BLL層提供業務數據。
二、將業務數據轉爲固化數據提供給DAL層 進行固化。
明確了每一層的業務,那要對WSProxy進行分層也只須要明確WSProxy層的業務就能夠獲得。
咱們調用WSProxy層主要有如下業務。
一、獲得業務數據。如:獲得主站點已註冊的用戶信息。
二、使用一個業務。如:經過主站點的發送短信,郵件等。
由此 能夠看到,WSProxy所提供的業務BLL層提供的業務是一致的,因此應該視做BLL層並讓其餘BLL層進行調用。