CLR的执行模型(续)

  CLR的执行模型(续)

IL与知识产权保护  
    在Web应用和Web服务中,程序集是在服务器端,不可能获得,所以是安全的。
    可以用非托管模块来实现需要保密的算法。

Windows中,每个进程都有它自己的虚拟地址空间,使得一个进程无法干扰另一个进程,从而获得可靠性和稳定性。通过验证托管代码,可以确定代码不会非法访问内存,而且不会对另一个应用程序的代码产生干扰。

在单个OS进程中运行多个应用程序,可以减少进程数,减少需要的资源,从而增强性能。每个托管应用程序都称为一个AppDomain

不安全代码unsafe   
    在项目“属性”中的“生成”选项,“常规”中选中“允许不安全代码”,即可使用不安全代码了。不安全代码都要放到unsafe代码块中。
    在默认情况下,在用户计算机上显示安装的程序集被授予安全信任;通过内部网络或Internet执行的程序集不被授予执行不安全代码的权限。

本地代码生成器(NGen.exe)      
    作用:
  加快应用程序的启动速度;
  减小应用程序的工作集。

    存在问题:
  当使用反射和序列化时,需要包括
IL和元数据的程序集,所以不能只发布NGen.exe生成的文件;
  NGen.exe生成的文件可能失去同步,最好在更新模式中运行NGen.exe,以保持同步;
  较差的加载时性能(重定位基址);
  较差的执行时性能(静态字段只能间接访问,NGen到处插入代码来调用类构造器)。

 

通用类型系统(Common Type System  CTS
CLR是完全围绕类型展开的。

公共语言基础结构(Common Language Infrastructure  CLI一种标准

CTS规定:一个类型可以包含零个或者多个成员;制定了类型可视化规则以及类型成员的访问规则;所有类型最终必须从预定义的System.Object类型继承。

公共语言规范(Common Language Specification  CLS)所有编程语言都支持的一个最小特性集
编程语言的集成是非常好的,但不同的语言存在比较大的区别,如:有些编程语言不支持unsigned、操作符重载、参数数量可变的方法,不区分大小写。



CLS
的规则:在CLR中,一个类型的每个成员要么是一个字段,要么是一个方法。其它所有成员最终都要转化为字段或方法。
[assembly:CLSCompliant(true)]该属性应用于程序集,要求编译器核实在任何公开揭示的类型中,不存在任何特定的结构会防碍类型从其他编程语言中访问。

注:只有public class public 成员才会受编译器检查

 

与非托管代码的互操作性
CLR支持三种互操作情形:

1.       托管代码能调用DLL中的一个非托管函数

2.       托管代码可以使用一个现有的COM组件

3.       非托管代码可以使用一个托管类型

转载于:https://www.cnblogs.com/Sandwi/archive/2007/11/20/965453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值