摘要:
1.4.1 IL和验证IL 是基于栈的,也就是它的所有指令都要将操作数压入(push)一个执行栈,并从栈弹出(pop)结果. IL 指令是”无类型”(typeless)的,例如IL提供了一个add指令,它的作用是判断栈中最后两个操作数的类型并且将它们加到一起. 将IL编译成本地CPU指令时,CLR会执行一个名为验证(verification)的过程,这个过程确定代码所做的一切都是安全的,这也就是IL的优势之一:健壮性和安全性.例如,验证正确的数量参数,返回值的正确使用等等. 将每个windows进程都放到一个独立的地址空间可以获得健壮性与稳定性:进程间不互相干扰. 进程数量太多,会损害性能并. 阅读全文
摘要:
1.4执行程序集的代码 IL是与CPU无关的机器语言,可将它视为一种面向对象的机器语言.高级语言通常只公开了CLR的所有功能的一个子集,而IL汇编语言允许开发人员访问CLR的所有功能. 若某一高级语言隐藏了需要的CLR功能,那么可以使用IL或者其他公开了这一功能的高级语言来写.这也是CLR其中一个非常出色的特性”混合语言编程”,允许在不同编程语言之间方便地切换,同时又保持紧密集成. CLR的“即时”编译器(just in time,JIT)会把IL编译成本地CPU指令. 方法的调用图: 一个方法只有在首次调用时才会造成性能损失,以后都无需重新验证IL并把它编译成本地代码,因为JIT编译器将本. 阅读全文
摘要:
1.2 将托管模块并成程序集 CLR是和程序集一起工作的. 程序集 是一个或多个模块/资源文件的逻辑性分组,它是重用、安全性以及版本控制的最小单元,它的逻辑表示和物理表示区是分开的,根据不同的编译器或工作可以生成单文件或多文件的程序集。在CLR世界里,它相当于一个“组件”。 在程序集的模块中包含了引用程序集有关的信息,这就使程序集能够自描述(self-describing),能让CLR不需要通过注册表或Active Directory Domain Services(ADDS)就可以找到程序集的直接依赖对象(immediate dependency)并执行程序集中的代码.由于无需额外的信息,. 阅读全文
摘要:
学多些懂多些… 1.1将源代码编译成托管模块 .NET Framework 在某种程度上,它是它自己的操作系统:有自己的内存管理器、安全系统、文件加载器、错误处理机制、应用程序隔离边界(AppDomains)、线程处理模型等。 公共语言运行时 (Common Language Rumtime,CLR)的核心功能(比如内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。例如,CLR允许创建线程,所以面向CLR的任何语言都能创建线程。可用任何编程语言进行开发,只要编译器是面向CLR的就可以了,例如Microsoft创建的几个语言编译器:C++/CLI、C#、Visua. 阅读全文
摘要:
问题:在codebehind.cs文件中, 如何获取一个服务端控件的innerHtml解决方案: StringBuilder sb= new StringBuilder(); StringWriter sw= new StringWriter(sb);HtmlTextWriter hw= newHtmlTextWriter(sw);yourServerControl.RenderControl(hw);return sb.ToString();注意事项:要确认此服务端控件已经完成相应的数据绑定,赋值等操作后, 用上述方法你才会得到需要的HTML原文:http://www.cnblogs.com 阅读全文