Business Object 学习笔记2
2009-12-23 22:32 飞逝心情 阅读(502) 评论(0) 编辑 收藏 举报在面向对像开发中,要想在业务组件中采用验证,一个好的方法是在业务类型中采用验证,拒绝不符合业务要求的数据,也就是说,最好在实体类中采用公开属性隐藏字段的方法封对实体类的访问。下面是一个例子。
public class Project { private Guid _id = Guid.NewGuid(); public Guid Id { get { return _id; } } private string _name = string.Empty; public string Name { get { return _name; } set { if (value == null) value = string.Empty; if (value.Length > 50) throw new Exception("Name too long"); _name = value; } } }
很多复杂的业务系统中,业务逻辑会分离开来,分别位于“客户端”和“应用程序服务器”上。
如何在不同的进程间传递对象
在正常情况下,.net对象不可能与其它进程或者其它机器的类传递信息,默认是“本地的(Local)”。
如果一个对象通过“引用”的形式访问另一个机器上的对象,那么,他们之间虽然表像上是“互相传递值”,但实际上,他们内部采用的是“引用的方式,两个类各自运行,并没有发生类的传递,传递的是指针。”这种做法称为“Anchored Objects”。在这种情况下,远程调用的方法应该尽可能的完成“多个任务”,以减少传输中的“性能消耗”.在.net 中,可以通过使用WCF技术或者.net Remoting技术实现。
Mobile Objects:通过传值“object 本身”到另一个进程或者机器中,实现交互。如果一个类是可以“传值”的,显然,它必须可以是序列化的。
需要注意的是无论传值还是“引用传递”,都需要在目标机器上安装相应的程序集。一般来说,Anchored Objects多用在应用服务器上,而Mobile Objects多用于业务逻辑的实体类。传值易引发“仅最后一个修改有效”,传引用则会造成“同一时间被多个修改”。性能上,传引用低于传值。
逻辑分层与.net 技术的对应图