論外部調用代理應該屬於那一層

今天關於這個問題我和同事進行很是激烈的討論,最後還有有點不了了之的感受。數據庫

在回家的路上我想到了如何來決定這個問題。架構


在論述這一問題以前先描述一下上下文。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層進行調用。

相關文章
相關標籤/搜索