EES 框架 BLL层代码组织与介绍

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调用,客户端代码不需要作改变,也是更改一下,添加一个自动生成的代理类则可。

时间: 2024-12-23 18:18:54

EES 框架 BLL层代码组织与介绍的相关文章

EES框架 BLL层代码组织与介绍

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 cod

easyui弹出层在最顶层显示跳出iframe框架通用javascript代码

原文:easyui弹出层在最顶层显示跳出iframe框架通用javascript代码 有时候我们用easyui在后台框架中弹框的时候,总是显示在框架页面里面而不是整个系统框架的上面,看着有些不太乐意. dialog = function (opts) { var query = parent.$, fnClose = opts.onClose; opts = query.extend({ title: 'My Dialog', width: 400, height: 220, closed: f

从零开始编写自己的C#框架(5)——三层架构介绍

原文:从零开始编写自己的C#框架(5)--三层架构介绍 三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发.   在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪-<.NET深入体验与实战精要>>,这是以前看到的关于三层架构介绍,觉得挺经典的,大家有时间的话认真看看) 对比以上两图,我们可以看出: 1)数据库好比猪圈 ,所有的猪有序地按区域或编号,存放在不同的猪栏里. 2)DAL 好比是屠宰场 ,把猪从猪圈

使用 .NET 框架将现有代码作为 Web 服务提供

web 使用 .NET 框架将现有代码作为 Web 服务提供 使用 .NET 建立分布式应用程序 Steve Kirk 和 Priya DhawanMicrosoft Developer Network 摘要:本文介绍了使用 ASP.NET 将现有 Microsoft Visual Basic 6.0 代码作为 Web 服务提供时所进行的数据转换.适用于 Microsoft .NET SDK 和 Microsoft Visual Studio.NET 的 Beta 1 版. 目录简介 现有代码提

PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2

从本章中,我们了解 .创建可以调用的函数以便重用代码 .把参数传递给函数并且从函数返回值和脚本的不同部分中的变量和数据进行交互 .把代码和函数组存入到其他文件中,并且我们的脚本内包含这些文件. 3.1基本代码重用:函数 3.1.1 定义和调用函数 关键字function通知php这是一个函数,后面跟着的是函数的名称,它可以是字母.数字.字符或下划线 函数名称之后是参数列表,然后是函数体.在其它语言中名称相同.但是参数列表不同的函数,php不支持这一特性. 复制代码 代码如下: <?php fun

OEA 框架中集成的 RDLC 报表介绍

之前 OEA 一直用着一个 Delphi 开发的报表,所以两年来我一直就想在 OEA 中构建一个纯 .NET 的报表模块,但是一想到要开发复杂的报表引擎和设计器就觉得麻烦.所以这事一直拖着.最近开始研究一些成熟的报表引擎,经过对比,还是发现微软的 RLDC 报表已经能满足我大多数需求.其中包括表格.矩阵.图表 等复杂控件,同时同样的报表格式在 B/S 模式下也可以直接使用,最新的 Tablix 控件非常灵活,能实现大多数表格样式.所以我决定不再费时费力去造一个轮子,而是直接把微软的 RDLC 报

基于JS实现EOS隐藏错误提示层代码_javascript技巧

废话不多说了,直接给大家贴代码了,具体代码如下所示: //参数为消息提示层对应的对象,通常为表单里的对象 //特别注意:当使用扩展方法里的type=radio或者type=checkbox时,因为当时设置消息提示层的对象为obj.parentElement.parentElement,所以传入的对象也应为其上2级父节点 function hiddenMessageDiv(obj){ var div = obj.Eos_Message; if(div!=null){ //将该对象从消息数组中移除,

Android平台webkit组件java层代码分析

转自ITeye: constGU 本文将围绕android平台webkit组件中,java层的几个主要类进行分析,说明各个类的职责以及类之间的关系.若有错误疏漏之处,望不吝指出. (源码所在目录  ${framework_sourcecode_loc}\core\java\android\webkit ) 一.概述 Android平台webkit组件java层封装了一系列浏览网页相关的功能,对开发者而言,主要功能有以下两点: 1.接收上层请求(eg:loadUrl, goBack, reload

Bootstrap Modal遮罩弹出层代码分享_javascript技巧

下面这段代码并非是Bootstrap的遮罩,只是简单版的遮罩效果,Bootstrap那个太啰嗦了.如果你钟情Bootstrap的那个遮罩,来看看这篇文章"完全版:Bootstrap弹出层遮罩". <div class="theme-popover"> <div class="theme-poptit"> <a href="javascript:void(0);" title="关闭&qu