反射已经"Out",动态编译才能"Hold"住
2015-07-25 23:57
357 查看
Net支持反射功能以后,确实使我们Net程序眼前一亮啊,真是太神奇了,只需要传入字符串就可以完成功能.可以说,反射功能的引入,使我们在处理某些问题上更加得心应手.
传统的Db管理软件中,数据库字段的频繁改动,前台实体类的不断修改,使我们大为头痛.并不是说我们设计的Db结构不合理,而且客户的需求变动十分频繁,而且非常不可控,当然,如果对行业业务非常精通的话,是可以避免这个问题的.
使用反射功能,虽然可以传入字符串来解决某些问题,但如果遇到上述提到的数据库字段增删的问题,我们常用的方法是写入给客户升级的SQL语句,然后在公司修改某个DLL文件中的实体类以后,重新编译,打包测试通过后.将前台DLL文件和后台SQL语句一并发至各户处,实施员或客户的系统管理员将最新的文件覆盖,SQL语句生成,反射功能我们在生成实体类对象时会用到.
整个过程基本如此,其中,重新生成DLL文件的步骤,如果采用动态编译的方法处理,似乎就变得简单多了.大致思路如下
1. 修改Db表结构的步骤依旧没有变化.
2. 生成DLL文件,采用动态编译.即在系统打开时,根据Db中的对象生成实体类,再直接编译生成DLL文件,与上个方法相比,编译DLL的过程由系统自动执行了,而不需要我们在公司编译.这样我们只需要保证SQL语句升级正确就可以了.
3. 根据生成好的DLL文件,我们再使用反射就OK了
当然,动态编译的功能还远远不止于此,比如:生成一段NET字符串,动态执行等.有兴趣的童鞋,可以在博客园里搜索下,这里推荐一下这篇文章,确实不错.
地址:http://www.cnblogs.com/lichdr/archive/2004/10/20/54569.html
实现动态编译的方法其他很简单,如图-1所示.在我提供的下载文件中,有完整的方法,直接使用即可
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010724571064.jpg)
图-1
我们再看看是如何使用这个方法来编译文件的,我们现在实现这样一个业务,客户需要新增加一张表,对应的实体也要增加,并实现实体的增删改查操作.如图-2所示,首先要制作好实体类的字符串
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010725007943.jpg)
图-2
然后直接编译即可,如果编译成功,我们就直接可以使用反射对其操作了.如图-3所示
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010725021059.jpg)
图-3
效果怎么样?这样处理的话,如果再遇到类似需求,我们需要做的事情,就是提供字符串就可以了,而不需要在公司生成DLL,由实施员负责覆盖.
技术的更新,会使我们在处理某些问题上变得更加容易和简单.
源文件
反射已经Out动态编译才能Hold住.Files
传统的Db管理软件中,数据库字段的频繁改动,前台实体类的不断修改,使我们大为头痛.并不是说我们设计的Db结构不合理,而且客户的需求变动十分频繁,而且非常不可控,当然,如果对行业业务非常精通的话,是可以避免这个问题的.
使用反射功能,虽然可以传入字符串来解决某些问题,但如果遇到上述提到的数据库字段增删的问题,我们常用的方法是写入给客户升级的SQL语句,然后在公司修改某个DLL文件中的实体类以后,重新编译,打包测试通过后.将前台DLL文件和后台SQL语句一并发至各户处,实施员或客户的系统管理员将最新的文件覆盖,SQL语句生成,反射功能我们在生成实体类对象时会用到.
整个过程基本如此,其中,重新生成DLL文件的步骤,如果采用动态编译的方法处理,似乎就变得简单多了.大致思路如下
1. 修改Db表结构的步骤依旧没有变化.
2. 生成DLL文件,采用动态编译.即在系统打开时,根据Db中的对象生成实体类,再直接编译生成DLL文件,与上个方法相比,编译DLL的过程由系统自动执行了,而不需要我们在公司编译.这样我们只需要保证SQL语句升级正确就可以了.
3. 根据生成好的DLL文件,我们再使用反射就OK了
当然,动态编译的功能还远远不止于此,比如:生成一段NET字符串,动态执行等.有兴趣的童鞋,可以在博客园里搜索下,这里推荐一下这篇文章,确实不错.
地址:http://www.cnblogs.com/lichdr/archive/2004/10/20/54569.html
实现动态编译的方法其他很简单,如图-1所示.在我提供的下载文件中,有完整的方法,直接使用即可
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010724571064.jpg)
图-1
我们再看看是如何使用这个方法来编译文件的,我们现在实现这样一个业务,客户需要新增加一张表,对应的实体也要增加,并实现实体的增删改查操作.如图-2所示,首先要制作好实体类的字符串
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010725007943.jpg)
图-2
然后直接编译即可,如果编译成功,我们就直接可以使用反射对其操作了.如图-3所示
![](http://images.cnblogs.com/cnblogs_com/xiyang1011/201111/201111010725021059.jpg)
图-3
效果怎么样?这样处理的话,如果再遇到类似需求,我们需要做的事情,就是提供字符串就可以了,而不需要在公司生成DLL,由实施员负责覆盖.
技术的更新,会使我们在处理某些问题上变得更加容易和简单.
源文件
反射已经Out动态编译才能Hold住.Files
相关文章推荐
- java多线程学习笔记——相关名词介绍
- sublime 3 build
- linux性能分析命令-扫盲贴
- JavaScript推荐资料合集(前端必看)
- virmon防火墙有了升级
- HDU 5311 Hidden String (暴力)
- 从软件部署看运维的四种境界
- Memcached客户端(memcached-Java-client)与 Spring集成(单服务器)
- Xcode快捷键
- HDU 5311 Hidden String (优美的暴力)
- python发邮件
- Haproxy+PXC实现负载均衡
- Python GUI漫谈
- java web项目中将数据库从SQL Server转为Access出现的常见错误
- android JNI调用系统liblog.so打印Log
- C++学习,总结一
- HDU 2612 Find a way (BFS)
- hdu 5310 Souvenir (水)
- A除以B问题
- 解压