Welcome

首页 / 脚本样式 / ExtJS / Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 5 ----asp.net MVC+Extjs

Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 5 ----asp.net MVC+Extjs2010-07-17 博客园 孤独侠客在前面的系列中,我们已经完成了数据库设计,数据访问和业务逻辑,接下来我们来完成前台MVC和Extjs界面部分.

在这段时间里,spring.net已经发布了1.2版本,asp.net mvc也更新到了RC1 Refresh.nhibernate更新到了2.0.整个Demo程序也做了相应的更新.

整个架构由asp.net mvc把后台的业务和前台界面联系起来,在Controller中调用业务逻辑完成前台的调用,完成相应的视图转发等工作.这样存在两个问题:

Controller怎么调用业务逻辑?

最好不要直接调用业务逻辑对象,按照面向接口的编程原则,这里采用IOC依赖注入功能,把实际的业务对象注入到Controller中,这样在Controller中只是对于业务接口编程,而与具体的实现无关.如果二次开发有修改,只需要把相应的业务逻辑实现添加进来,然后修改配置文件即可.

Controller中是不是直接使用nhibernate的实体对象?

nhibernate的实体对象中包含很多复杂的一对多,多对多等映射关系,这种关系很容易造成递归调用,而且很多属性只是为了编程性添加的,而不需要其它层的开发人员知道.而且nhibernate的复杂实体对象在序列化时也并不容易,经常会造成循环引用,如果采用了Lazy Loading还可能会造成Session关闭的问题.

所以在这里引入了DTO(Data Transfer Object),用来完成和后台业务对象的相互转换.由于采用Extjs客户端,所以前台使用Json对象,这样就要完成Json和DTO的相互转换,再完成DTO和Nhibernate实体的相互转换.

下面我们就以用户User为例,我们来完成控制层部分.