CSLA框架试用:业务对象分类

  如标题,这里说的是CSLA框架中业务对象的分类,刚开始看到时很不理解,为什么对象还要分类呢,先来以相反的方向描述下平时大家(或者说是我的知识范围内)所应用的方法。

  平常操作对象大都是简单的对象,这里说简单是指它只具备对象属性及对象行为这种单一功能(还有些只是数据填充器),如获取一个客户信息,我们只返回包装了客户信息数据的实体就可以,而要获取列表,只需要返回List<T>的列表,不管客户端怎样使用,对比CSLA的业务对象,它们缺乏了足够的智能性,也就是各自的职责。或者许说在使用linq2sql或者entity framework,它们有一定的智能性,可以在上下文中跟踪实体状态,以及方便的操作对象之间的关系,我也感觉它们与CSLA之间有共性,但对于一个ORM来说或许它们的责任就是以对象的形式封装数据操作,对于更多的职责来说应用起来还真有点不爽(个人感觉~)。下面就几类业务对象发表下自己的使用看法。

  从使用角度来说,对于可编辑对象可以说是使用最广的业务对象之一,从名称中就可看得出它的职责是编辑对象信息,这里还要分根对象与子对象,对于不同级别的对象它们的操作也是不同,以根对象为例,根对象有责任编写代码从持久化里面获取对象信息以及填充属性值,而向用户暴露的属性是经过了包装过的,包装了什么呢?数据验证,身份验证,错误跟踪,撤销跟踪,状态跟踪等,客户去操作对象时在对象背后这些功能都在运转,这也是根对象的几项主要功能,框架中向开发人员开放了如AddBusinessRules类似的方法来统一管理如验证信息、权限信息,对于属性的的getter,setter来说,在2.0的版本中显得更直接,而在现在的版本中这些工作都封装在了基类中。刚才说到子编辑对象,它的职责对于根对象来说大都相同,但它并不对当前对象的数据获取作操作,而是接收来自上层对象提供的现成数据,所以它没有DataProtal_Method这种方法,它只是提供数据操作的局部方法而已,在例子中看到甚至这些数据操作方法也是由父对象来操作的。遇到的一个问题就是对象状态跟踪的准确性,特别是对于对象初始化时属性的赋值,它必须在对象内部完成,以前我们喜欢new完一个对象后再为对象默认属性赋值,因为它们没有状态,而在这里如果后期更新属性的话对象内部已经对它进行了跟踪,对于撤销操作就会有效了,所以这块需要注意一下...

  个人比较喜欢的另一个对象类型是只读业务对象列表,它是一个列表类型,所以会对应一个只读对象子类型作为它的具体信息,这种列表业务类主要是对数据的获取以及填充列表项工作,其他的都是业务方法了,它不会跟踪对象状态(也没必要~),也没有撤销等功能,所以性能会比较好,对于只读列表绑定感觉它比较适合。这里对于频繁使用的并且更新速度慢的数据使用静态缓存感觉会比较好。

  键值对,这个在平常用的也不少,在这里好像它与只读对象列表差不多,只是简化了类型和增加了几个基础查询方法。对于简单的数据还挺方便,好像这种数据更新速度更慢,应用缓存也是很不错,同样它只负责对象加载工作,并没有可编辑对象那么复杂,或者它是最简单的一个业务对象吧,因为对于列表对象可能会有复杂的业务方法。

  Command对象,这个业务对象应该是最灵活,也是非常重要的一个业务对象,它的结构非常简单,但可以实现的非常复杂,我感觉这类对象让框架变的灵活的多。

  这里所说的父、子关系,父对象并非就是根对象,这点需要搞清楚。除上面提到的几种对象外还有其他的变种形式,主要还是根据父子关系的变形,不过也很好理解。

  自己感觉很好的应用这些业务对象来进行实际开发有一定难度,主要原因不是因为它不好,也不是因为它难,而是从根本上,也就是自己的面向对象水平还有对象设计上还有差距,如果看过DDD就会发现,它们的思路有很多共性,或许它们都是面向对象的具体体现,无论是从对于对象概念还是从对象关系处理,以及从对象职责的角度,所以自己感觉提高思想的水平是学习和应用它们的基础,这里是在了解业务领域的前提下单纯说业务对象的设计,所以与特定领域知识还是息息相关的。

  脑门突然闪过一道光,在DDD中看到的,自己也感觉很有道理,也适合于CSLA的应用,就是这种框架的应用不是为了提高响应速度,或者说它应该是在响应速度不是最主要目的的情况下应用的框架。

  这就是今天想到的,下次继续。
  [ 附个个人广告:北京有招人的公司吗?工龄1.5年,C#,谢谢!QQ:496195435. ]

转载于:https://www.cnblogs.com/quluqi/archive/2010/07/06/1771947.html

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、付费专栏及课程。

余额充值