信息系统开发平台OpenExpressApp - CSLA约定及框架约定

r_OpenExpressApp%20Framework.JPG

CSLA相关

CSLA类库约定

  1. 业务对象标识SerializableDataContract 属性,以便序列化。我一般使用Serializable
  2. 类库通用区域:对于不同的类型,CSLA提供不同的类库模板,如
    ContractedBlock.gif
     
         
    [Serializable]
    public class MyBusinessClass : Csla.baseclass<MyBusinessClass>
    {
    #region Business Methods
    #endregion
    #region Business and Validation Rules
    #endregion
    #region Authorization Rules
    #endregion
    #region Factory Methods
    #endregion
  3. 非public默认构造函数:所有业务对象实现非public构造函数,防止用户new一个业务对象,强制UI开发人员使用工厂方法来使用业务对象

CSLA根对象方法调用约定

  1. DataPortal.Fetch<MyBUsinessClass>()调用到服务器端void DataPortal_Fetch()
  2. DataPortal.Fetch<MyBUsinessClass>(MyCriteria)调用到服务器端void DataPortal_Fetch(MyCriteria)
  3. DataPortal.Create<MyBUsinessClass>()调用到服务器端override void DataPortal_Create()
  4. DataPortal.Delete(MyCriteria)调用到服务器端 void DataPortal_Delete(MyCriteria)
  5. 更新对象调用服务器端 [Transactional(TransactionalTypes.TransactionScope)]   protected override void DataPortal_Update()
  6. 新增对象调用服务器端 [Transactional(TransactionalTypes.TransactionScope)]   protected override void DataPortal_Insert()
  7. 删除对象调用服务器端 [Transactional(TransactionalTypes.TransactionScope)]   protected override void DataPortal_DeleteSelf()     
  8. [RunLocal()]强制本地调用,如以下代码将在本地执行
    ContractedBlock.gif
     
         
    [RunLocal()]
    protected override void DataPortal_Create() {dot.gif}
  9. 父对象调用FieldManager.UpdateChildren(空/MyParam)来更新子对象

CSLA子对象方法调用约定

  1. DataPortal.FetchChild<MyBUsinessClass>()调用到本地void Child_Fetch()
  2. DataPortal.FetchChild<MyBUsinessClass>(MyCriteria)调用到本地void Fetch(MyCriteria)
  3. 生成对象调用本地 protected override void Child_Create()
  4. 父对象调用FieldManager.UpdateChildren(空/MyParam)来更新子对象
    1. 子对象调用 void Child_Update(空/MyParam) 来更新对象
    2. 子对象调用 void Child_Insert(BusinessBase parent) 来插入对象
    3. 子对象调用 void Child_DeleteSelf(BusinessBase parent) 来删除对象

  注意:本地指父对象代码执行所在的机器。

框架相关

代码生成模板

  1. 添加根对象(主表)使用模板【Lib\CodeGen\EditableRoot.cst】
  2. 添加子对象(细表)使用模板【Lib\CodeGen\EditableChild.cst】

部署路径

  1. 模块部署在【Module】目录下
  2. 类库部署在【Library】目录下

数据库约定

  1. 对象标识字段为Id,自关联外键字段为Pid
  2. 【Id】字段为Guid类型,名称为Id,建立表后修改此字段为【非聚合索引】
  3. 自关联外键为【PID】,其他表关联外键字段名为:【关联表名称+Id】
  4. 顺序号的字段为【OrderNo】,int类型,支持树形上下移动操作

类库编写

  1. 属性名称首字母大写,多个词组成的每个词第一个字母大写。 如 Id/Pid/ProjectPbs。 变量首字母小写,如id/pid/projectPbs
  2. 类库关联Id和关联对象赋值时不处理其关联,如果逻辑关系,统一约定为添加方法处理。
  3. 根对象如果是单据样式模块,根对象需要实现【MergeOldObject】把点击列表后取得的对象合并到列表对象中,实现单据模块懒加载对象功能
  4. 子对象【懒加载】属性GetChild方法内部实现需要使用DataPortal.Fetch而不是DataPortal.FetchChild,否则代码将在客户端执行。如下示例:
  internal static BQSections GetChild(BQTrade parent) 
  {
     return DataPortal.Fetch<BQSections>(parent);
  }

命名约定

  1. 列表名对象后缀为List/s, 系统会根据业务类型取数据GetList找对象名先找List,如果不存在再找s
  2. 添加细表记录方法名为NewChild  
更多内容: productView-pdf_46x35.gif 开源信息系统开发平台之OpenExpressApp框架.pdf
CSLA.NET是一个在分布式环境下只通过修改配置文件就可以实现N层部署的框架. 它致力于构建丰富,强大而灵活的业务层,包含了验证,权限,数据门户等标准化的解决方案,使你的业务对象更加标准和灵活.它提出了移动对象(Mobile Object) 的概念,使业务对象在不同的服务器上物理性的移动.但它并不失灵活性,其数据门户对ADO.NET,LINQ, ADO.NET Entity Framework,Nhibernate等都能够支持.CSLA.NET还支持在业务对象上构建WPF、ASP.NET(Web Forms、AJAX和 MVC)和Windows Forms,WCF service,Windows Workflow,web Services,Silverlight等用户接口.      CSLA.NET开始于2001年,已经有8年时间了.现在已经被使 用在很多项目中.最新发布的3.6版本包括CSLA.NET  for Windows和CSLA.NET for Silverlight两个版本.其中CSLA.NET for Silverlight对Silverlight2.0提供了无缝支持.      CSLA.NET提供核心功能:         完全支持数据绑定(WPF,Silverlight,Windows Form和Web Form)      对象状态追踪(对象是否为新增、修改、标记为删除,等等。)    标准化业务和验证规则处理 在对象和属性层级的标准化授权 整合及简化,标准的.NET身份验证模型  撤销(Undo)功能,用来支持实作取消按钮,和复杂分层的用户接口(UI)     标准化集成与数据存取层或ORM 加强对于业务对象的LINQ查询支持 许多的一般生产力(productivity)功能,可用于很多的企业应用程序方案中 异步数据存取,和异步验证规则   支持的平台有:Microsoft .NET 1.x through 4.5.1Windows Runtime (WinRT for Windows 8.1)Windows Runtime (WinRT for Windows Phone 8.1)Windows Phone 8 (Silverlight)Silverlight 5Android (using the Xamarin tools)iOS (using the Xamarin tools)Linux and OSX (using mono) 标签:.net开发框架
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值