您的位置: 首页 > 资讯 > 设计

asp.net架构设计解惑

艺术中国 | 时间: 2010-07-30 08:42:36 | 文章来源: 博客园

例如:

代码

public class Order

{

private Guid _id;

private DateTime _creationDate;

private int _shippingMethod;

private int _status;

private List _orderItems;

public Guid Id

{

get { return _id; }

set { _id = value; }

}

public List OrderItems

{

get { return _orderItems; }

set { _orderItems = value; }

}

// Business Logic

public void Place()

{

// Validate order based on business rules to ensure it is in

// a good state to add to the database

// Check for stock availablity on items ordered

this.Add();

}

public void Cancel()

{

// Check to ensure this order can be canceled.

this.Status = Status.Cancelled();

this.Save();

}

public void ProcessOrder()

{

// Check to ensure this order can be processed.

// Validate order based on business rules

// Udpate the stock levels of products ordered

}

// Data Access Methods

public void Save()

{

// Code to persist changes to the database

}

public void Add()

{

// Code to Add this object to the database

}

public void Delete()

{

// Code to remove this object from the database

}

public static List FindAll()

{

// Code to retrive all Orders from the database

}

public static Order FindBy(Guid id)

{

// Code to retrive a specific Order from the database

}

}

上面的代码中,Order类包含了业务逻辑处理的代码,如Cancel, Process。通过这些方法也调用了数据访问代码来保存数据。

如果在开发的项目中,业务类和数据表是一一对应的关系,例如在开发博客或者论坛,Active Record方式就很合适。

相信很多的项目都是基于这个方式在开发和组织逻辑层,这个方式最大的弊端就是:数据库表只要改动,那么业务逻辑层动,而且这种变动会一直波及到了UI那端。

Domain Model

通过用这种方式来组织业务层的时候,业务层就只是关注把现实中的概念转换为相应的业务逻辑模型,不关注其他的方面。例如,在电子商务网站开发中,一些概念就被建模表示为一个个的业务模型(也就是业务类),Order, Shopping Cart, Customer等。而且和Active Record最大的区别就是:Domain Model中的业务类不是和表一一对应的,下图就是一个很好的例子:

   上一页   1   2   3   4   下一页  


相关文章
注:凡注明 “艺术中国” 字样的视频、图片或文字内容均属于本网站专稿,如需转载图片请保留 “艺术中国” 水印,转载文字内容请注明来源艺术中国,否则本网站将依据《信息网络传播权保护条例》维护网络知识产权。
打印文章    收 藏    欢迎访问艺术中国论坛 >>
发表评论
用户名 密码
 
尚无评论

留言须知