C#发现之旅:基于反射和动态编译的快速ORM框架(上)
2010-09-30 21:08:28 来源:WEB开发网核心提示:动态编译技术所谓动态编译技术就是应用程序在运行时,程序内部自动的生成C#代码,C#发现之旅:基于反射和动态编译的快速ORM框架(上),然后调用.NET框架提供的C#程序编译器生成临时的程序集,然后将临时程序集加载到应用程序域中动态的调用其中的对象模块,在这个过程中,程序将会在磁盘上生成若干临时文件,动态编译技术内部调用
动态编译技术
所谓动态编译技术就是应用程序在运行时,程序内部自动的生成C#代码,然后调用.NET框架提供的C#程序编译器生成临时的程序集,然后将临时程序集加载到应用程序域中动态的调用其中的对象模块。
动态编译技术内部调用了代码生成器。以前我们是在编程时使用代码生成器生成代码文档,然后添加到C#工程中,然后进行整体编译,此时我们是手工的使用代码生成器,这个过程可以称为静态编译。而动态编译技术却是将这个过程自动化了,而且调用代码生成器生成代码文本的过程放置在软件运行时执行。
动态编译技术能同时兼顾灵活性和性能。微软.NET框架本身也有动态编译技术的应用,比如XML序列化和反序列化,ASP.NET框架处理ASPX文件等等。
一般而言使用动态编译技术的过程可以为
1. 应用程序需要调用动态编译功能,则收集一些参数,然后调用动态编译模块。
2. 动态编译模块内部有一个全局的临时编译的程序集的缓存列表,若根据应用程序传递的参数可以在缓存列表中找到相匹配的临时程序集则直接返回这个程序集对象。
3. 动态编译模块收集参数,然后调用内置的代码生成器生成代码字符串。
4. 动态编译模块调用微软.NET框架提供的C#代码编译器,生成一个临时的程序集对象。具体就是调用Microsoft.CSharp.CSharpCodeProvider 提供的方法。在这个过程中,程序将会在磁盘上生成若干临时文件,这个过程会受到微软.NET框架的安全设置的影响。
更多精彩
赞助商链接