今天关于这个问题我和同事进行非常激烈的讨论,最后还有有点不了了之的感觉。

在回家的路上我想到了如何来决定这个问题。

在论述这一问题之前先描述一下上下文。

首先我公司普通的项目使用以下的架构。

WebSite=>WCF=>BLL=>Repository=>DAL=>DB

同层之间可以直接调用但不能调用其他同层的下一层。

各层之间的职责如下:

WebSite:页面展现层。提供页面管理以及绘制。

WCF:服务提供层。提供服务管理以及初始化。

BLL: 业务逻辑层,用于提供业务逻辑的实现。

Repository:业务对象仓储层,用于提供业务对象的存取。

DAL:数据访问层,用于提供数据对象的永久化以及读取。

DB:数据库,用于存放数据对象的永久化数据。

在我和同事的讨论中主要是集中在外部服务调用代理也就是WSProxy到底是应该视作BLL层以提供其他BLL层调用还是视作Repository层让其他Repository层进行调用。

BLL层主要有以下业务。

1、不会返回业务数据的业务。如:发送一封邮件,发送一条短信。

2、返回业务数据的业务。如:得到订单列表、已发送邮件列表等。

Repository主要是以下业务。

1、为BLL层提供业务数据。

2、将业务数据转为固化数据提供给DAL层 进行固化。

明确了每一层的业务,那要对WSProxy进行分层也只需要明确WSProxy层的业务就可以得到。

我们调用WSProxy层主要有以下业务。

1、得到业务数据。如:得到主站点已注册的用户信息。

2、使用一个业务。如:通过主站点的发送短信,邮件等。

由此 可以看到,WSProxy所提供的业务BLL层提供的业务是一致的,所以应该视作BLL层并让其他BLL层进行调用。

转载于:https://blog.51cto.com/mt830813/1340430

论外部调用代理应该属于那一层相关推荐

  1. java动态代理上是否能再进行一层代理

    CGLIB动态代理类 import java.lang.reflect.Method;import net.sf.cglib.proxy.Enhancer; import net.sf.cglib.p ...

  2. 15Proxy(代理)模式

    技术交流QQ群:1027579432,欢迎你的加入! 1.Proxy(代理)模式的动机 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等 ...

  3. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  4. beanpostprocessor使用场景_Spring因动态代理使用不注意导致的诡异现象

    关注"Java艺术"一起来充电吧! 笔者在新的定时任务项目中,限定一个类只能写一个Job,类似于写脚本,一个Job一个脚本.对于简单的任务我们并不约定一定要有Service层,但在 ...

  5. Java 动态代理机制分析及扩展--转

    http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/#icomments http://www.ibm.com/developerworks/c ...

  6. Java 动态代理机制分析及扩展,第 1 部分

    引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执 ...

  7. Java 动态代理机制分析及扩展

    简介: 本文通过分析 Java 动态代理的机制和特点,解读动态代理类的源代码,并且模拟推演了动态代理类的可能实现,向读者阐述了一个完整的 Java 动态代理运作过程,希望能帮助读者加深对 Java 动 ...

  8. 通俗易懂的讲解一下Java的代理模式

    一.基本概念 代理模式是对象的结构模式. 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用(接口的引用) 二.静态代理 静态代理是指,代理类在程序运行前就已经定义好,其与**目标类 ...

  9. Java JDK代理、CGLIB、AspectJ代理分析比较

    前言 什么是代理,在Design patterns In java这个本书中是这样描述的,简单的说就是为某个对象提供一个代理,以控制对这个对象的访问.在不修改源代码的基础上做方法增强,代理是一种设计模 ...

最新文章

  1. EdgeBERT:极限压缩bert
  2. jstl标签: c:Foreach详解
  3. Python实现信息自动配对爬虫排版程序(附下载)
  4. sql server存储过程中SELECT 与 SET 对变量赋值的区别
  5. 皮一皮:晚上千万千万别乱拍照...
  6. input-text
  7. 剑指offer---包含min函数的栈
  8. 网页中的各种高度说明
  9. Go编译exe程序时指定程序图标
  10. python学习之老男孩python全栈第九期_数据库day004 -- 作业
  11. 软件加入使用时间_信考宝典 中考软件简介
  12. 简单的移动端打开pdf文件。
  13. 如何使用CHM 绕过Device guard
  14. 谈谈纽微特3万SIP奖金的事
  15. 公司财务(书籍学习过程总结)
  16. Python合成PDF文件
  17. Kali Linux渗透测试——WEB渗透(二)
  18. x86_64 x86 amd64 i386 i686 aarch64等词语含义
  19. Ember.js和Vue.js对比,哪个框架更优秀?
  20. 摄影基础知识——白平衡

热门文章

  1. Oracle对sum求和进行if,Excel中sumif函数和sumifs函数进行条件求和的异同
  2. pythonscrapy爬虫_Python 爬虫:Scrapy 实例(二)
  3. python实现加密字符串_Python实现对字符串的加密解密方法示例
  4. Mysql使用存储过程快速添加百万数据
  5. JavaScript初学者编程题(10)
  6. mysql行格式化_MySQL数据格式化语句
  7. 【Java】LeetCode 876 获取链表中间节点
  8. 主席树 ---- CF 1422F. Boring Queries(由离线推出在线如何求的 ,求解多次询问的区间LCM)
  9. 期望dp ---- E. Vasya and Magic Matrix(二维转一维+前缀和优化的期望dp)
  10. java field setfont_Java JTextField.setFont方法代碼示例