BLL层,我个人感觉是与通用的NH/IB OR映射差异比较大的地方,处于承上启下的位置。

承上:可以与数据库打交道,起到了DAL的作用。

启下:可以与BP层/Stub层/或客户端直接打交道,作为其服务层。

public class UserImp<T> : BLService<T>
    where T : EESObject, new ()
{

[Operation(ScopeOption.Disabled)]
        public virtual T FindById(String code)
        {
            return base.FindId(code);
        }
        [Operation(ScopeOption.Disabled)]
        public virtual DataCollection<T> FindByName(string name)
        {
            Where clause = new Where();
            clause.Add("Name", name);
            return base.Find(clause);
        }

[Action("保存", "保存")]
        [Operation(ScopeOption.Required)]
        public override T Save(T t)
        {
            return base.Save(t);
        }

BLService<T> 为业务层的基类,主要提供增删改查的功能。默认状态下,基类的服务是不公开的,需要在此类里面公开。

Operation为事务自定义属性,通常在此处添加,也可以在配置文件里添加。

查询,也是此OR的一个特色,对于客户端和服务端的处理雷同,但不相同,服务器端可以使用 WhereEx ,支持拼接字符串和其他等特殊处理。在处理自定义查询的时候非常方便。

Action自定义属性,为动作标注,在生成Controller的时候,会自动生成。

[EESBO("User")]
public class UserService : UserImp<User>
{

[Operation(ScopeOption.Required)]
    public virtual EESContext Login(string userId, string salt)
    {

………

}

[Operation(ScopeOption.Required)]
    [Action("密码复位")]
    public virtual User ResetPwd(User user)

{

………

}

}

UserService 为常用编码的类,UserImp主要为自动生成的类,业务逻辑通常放在UserService类里面。

EESBO自定义属性标注此类为服务类,在生成代理/服务配置的时候,会自动生成配置文件和代理类。

其他的与UserImp类似。

一直在考虑,是不是要把Linq加入进去,没有决定下来。

公开的类必须添加 virtual ,使用的时候,可以用:ProxyFactory.getProxy<UserService>() 或Factory.New<UserService>,通常在服务器端用 Factory.New<UserService>()方式,在客户端用 ProxyFactory.getProxy<UserService>() 方式调用。

示例代码:

main()

{

EES.Common.Config.Configuration.Root = “……”;

User user=Factory.New<User>();

user.Code=”123456”;

UserService srv=Factory.New<UserService>();

srv.Save(user);

}

此处没有太多的处理加载的地方,系统会自动处理配置文件的加载,基于声明式事务的处理,对于多数据源和层次操作,则会一层一层的处理。

如果需要通过http进行远程调用,服务器端的UserService不需要作任何的改变,只需要加入到IIS里面,并添加些配置文件,则可通过http实现远程RPC调用,客户端代码不需要作改变,也是更改一下,添加一个自动生成的代理类则可。具体如何修改和处理,后面会继续介绍

不知道大家对于此种ORM映射的BLL处理有什么想法,请给些建议

在此谢谢了

转载于:https://www.cnblogs.com/dreamstec/archive/2010/08/30/1812631.html

EES 框架 BLL层代码组织与介绍相关推荐

  1. 【飞秋】OR层代码组织介绍

    OR层代码组织和映射介绍 即时通讯软件 OR层也是老生常谈了,有的朋友说我是重复造车轮,只是OR这部分写的太早了,更主要是的与BLL层代码的集成,非常方便,所以呢,虽然后来NH和IB出来了我没有换,M ...

  2. java kryo_Kryo框架使用方法代码示例

    Kryo框架的source已移至https://github.com/EsotericSoftware/kryo ,进入此页面,然后点击右边的Download Zip按钮,就能下载到最新版本的Kryo ...

  3. 六.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---4.laserMapping.cpp--后端建图和帧位姿精估计(优化)

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  4. 五.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---3.laserOdometry.cpp--前端雷达里程计和位姿粗估计

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  5. 四.激光SLAM框架学习之A-LOAM框架---项目工程代码介绍---2.scanRegistration.cpp--前端雷达处理和特征提取

    专栏系列文章如下: 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程_goldqiu的博客-CSDN ...

  6. html网页div框架代码,div层仿网页框架布局特效代码

    脚本代码(For Alixixi.com)如下: div层仿网页框架布局特效代码 - by 阿里西西 js.alixixi.com * { margin:0; padding:0; list-styl ...

  7. perf-perf stat用户层代码分析

    perf_event 源码分析 前言 简单来说,perf是一种性能监测工具,它首先对通用处理器提供的performance counter进行编程,设定计数器阈值和事件,然后性能计数器就会在设定事件发 ...

  8. Spring MVC框架-持久层用hibernate自动化(1)

    ##Spring MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 Web 应用程序的全功能 MVC ...

  9. 三:Sensor SLPI层代码分析---

    三:Sensor SLPI层代码分析 在学习SLPI侧代码前我们先了解下SEE的registry&config. registry 放在/persist/sensors/registry/re ...

最新文章

  1. PL/SQL 操作数据库常见脚本
  2. before vue路由钩子_vue组件级路由钩子函数介绍,及实际应用
  3. 基础的重要性(程序猿之路)
  4. Git 命令集 实践整理
  5. 回炉重造-基础规则之类和对象
  6. pyhanlp 共性分析与短语提取
  7. svd降维 python案例_PCA降维的原理、方法、以及python实现。
  8. gym103117L. Spicy Restaurant
  9. c语言全排列库函数,几种全排列的算法(C语言实现)
  10. 变速恒频风电机组的优缺点_变速恒频风电机组控制系统可靠性分析
  11. 显微镜下的大明内容_《显微镜下的大明》读后感1000字
  12. win10 计算机 搜索文件,如何在win10搜索指定文件_教你在win10搜索指定文件的方法...
  13. 单链表的逆置(递归和非递归)
  14. RK3399平台开发系列讲解(高速设备驱动篇)6.46、蓝牙驱动
  15. 【XSY3906】数数题(期望,多项式)
  16. dwc_pcie iip 代码分析
  17. 以太网接口 数据采集 matlab,基于以太网接口并行多通道采集器的设计
  18. 第一次参与国际空间站ISS 的SSTV活动
  19. OpenPose ImportError: No module named '_pafprocess'【swig】编译步骤
  20. 利用第三方平台验证码进行识别

热门文章

  1. .Net技术+智能信息直通车
  2. 关于动漫的计算机知识点,这些好看的动画片里竟然藏着许多知识点(附2019年观影日历)...
  3. evplay 翻录_翻录DVD并将其转换为ISO映像
  4. drm例子modeset-plane-test
  5. ue4 怎么修改骨骼动画_【UE4】神器!!!动画师必备!!!基于物理的动画制作软件 Cascadeur 使用指南!...
  6. 名画112 钱选《画选十幅》
  7. 机器学习/机器人视觉/传感器融合
  8. sdcard, emmc, sdio, sd标准
  9. 8K慢直播重构文旅新场景,向沉浸式时代迈进
  10. 神经网络预测未来人口数量