自由、创新、研究、探索……

Linux/Windows Mono/DotNet [ Open Source .NET Development/ 使用开源工具进行DotNet软件开发]
posts - 532, comments - 2036, trackbacks - 145, articles - 56
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
       最近在做一个项目,项目的需求不够明确,这是做项目的大忌,但是没有办法。项目的架构采用Dotnet平台使用C#进行开发,为了加快项目的开发进度,采用代码生成工具之MyGeneration 生成业务基本代码,数据持久层采用IBatisNet,事务处理采用Castle的事务处理代码块,整体采用Castle IOC容器进行组装。
       IBatisNet的SQL语句放在XML文件中,SQL语句同代码的分离,带来的好处很多,修改数据库的结构,只需要使用代码生成器生成XML文件和数据库表对应的业务实体,直接使用生成的业务实体代码替换原来的业务实体文件和XML文件,DAO和BLL的代码都不需要修改,降低了修改数据库结构的风险。
      数据层主要的工作就是写sql代码,独立出来区别对待确实很有好处,对最简单的sql语句,ibatisnet 也可以帮我们生成,可以说是伸缩有度!,复杂的SQL主要是查询,统计这样的功能,这样的功能实现采用一个接口:
   /// <summary>
  /// 通用的以DataTable的方式得到Select的结果(xml文件中参数要使用$标记的占位参数)
  /// </summary>
  /// <param name="tag">语句ID</param>
  /// <param name="paramObject">语句所需要的参数</param>
  /// <returns>得到的DataTable</returns>
  DataTable GetDataTable(string tag, object paramObject) ;

  /// <summary>
  /// 通用得到参数化后的SQL(xml文件中参数要使用$标记的占位参数)
  /// </summary>
  /// <param name="tag">语句ID</param>
  /// <param name="paramObject">语句所需要的参数</param>
  /// <returns>获得的SQL</returns>
  string GetSql(string tag, object paramObject);

功能实现采用IBatisNet的DataAccess组件,可以得到执行的SQL语句。复杂的查询总是有很多的条件,要构造这样的条件本来就是麻烦事,通过IBatisNet一切都变得很简单。
 通过DataTable,IList,自定义实体的结合,在开发中提供最灵活的数据传递对象。
自由、创新、研究、探索……
Url: http://shanyou.cnblogs.com
website: http://www.openbeta.cn

Feedback

#1楼    回复  引用  查看    

2005-09-17 11:47 by DotNetFresh      
楼主你好,想问下:

"数据持久层采用IBatisNet",我对Castle的IBatisNet Facility不熟,想问问从你用看来,他和NHibernate Facility哪个优秀一些啊?还有Castle的AR,为什么不采用AR呢?

"事务处理采用Castle的事务处理代码块",是采用的Facility:Automatic Transaction Management 进行自动事务处理吗?其间有什么问题吗?:)

谢谢!

#2楼 [楼主]   回复  引用  查看    

2005-09-17 11:56 by 自由、创新、研究、探索……      
这个就是IBatisNet和NHibernate的区别了,在MS的平台上进行开发,对于使用NHibernate显得有点笨重,使用IBatisNet可以结合DataTable,当然Nhibernate也可以做到使用DataTable那样很别扭。使用SQL语句方式而不是HQL语句对于项目的各方面的权衡来说都是较好的。
事务处理采用Castle的事务处理代码块",是采用的Facility:Automatic Transaction Management和Facility:iBatisNet 代码块一起使用。使用的过程没有什么问题

#3楼    回复  引用    

2005-09-17 14:12 by dontnetfresh [未注册用户]
3Q,我也正用Castle提供的一套东西,感觉还不错.:)

#4楼    回复  引用    

2005-09-17 14:53 by pole [未注册用户]
您好请问一下,您做的项目中使用IBatisNet+Castle能否使用混淆器如XenoCode,因为如不能使用混淆虽然最终使用者看不到原码,但是使用的公司则可以,您是如何解决这个问题的呢?
很久以前自己也使用多种开源库,但都因为他们使用了和命名相关方法(namespace,class name,func name... XML setting 等等),故很多地方都要自己重开发library.

#5楼    回复  引用  查看    

2005-10-03 10:18 by haizheng      
对你的这个架构很感兴趣,能给个DEMO吗?
另外请推荐一个生成XML文件和数据库表对应的业务实体的代码生成器,谢谢!

#6楼 [楼主]   回复  引用  查看    

2005-10-19 22:38 by 自由、创新、研究、探索……      
将构建对象与使用对象解耦,只是容器最基本的一个层面的功能,更高层面的对象依赖关系管理、配置管理、AOP 支持以及服务生命期管理等等,才是一个真正的企业级容器所必须的。

#7楼    回复  引用    

2006-08-22 15:07 by iokala [未注册用户]
请教一个问题,我用castle+ibatisnet经常出现
- The error occurred while loading SqlMap .
- initialize type alias
- The error occurred in <sqlMap resource="Maps/bmusers.xml" />.
- Check the Business.Model.BmUsers.
这个错误,有时关掉程序重新进入又正常了是怎么回事???

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-09-17 11:13 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: