Net基本术语

基本术语

 什么是CLR?
    CLR = Common Language Runtime(通用语言运行时)。CLR是一套标准资源,(理论上)可以被任何.NET程序所利用,而不管使用哪种程序语言。它管理所有.NET程序集的执行。Robert Schmidt(微软)在他的MSDN PDC#文章里,列举了如下CLR资源:

  • 面向对象的编程模型(继承、多态、异常处理和垃圾收集等) 

  •  安全模型

  •  类型系统

  •  所有.NET基类

  •  许多.NET framework类

  • 开发、调试和评测(profiling)工具

  •  执行和代码管理

  •  IL到本地代码(IL-to-native)转换器和优化器

    这对于.NET世界来说意味着什么?不同程序语言的能力将比过去任何时候更加趋同,尽管显然并非所有语言都能支持所有CLR服务。

 

MSIL :

    微软中间语言,Microsoft Intermediate Language。

    所有的.Net语言编译器都生成它。这是编译器生成的二进制代码的公共标准,是CLR执行的语言。CLR也定义存储程序集的元数据的格式,这表示不管使用什么语言编写,所有的程序集都共享存储元数据的公其格式。

 

什么是CLS?

    CLS = Common Language Specification(通用语言规范)。它是CTS的一个子集,所有.NET语言都将支持它。任何使用CLS兼容的类型的程序,都可以和以任何语言编写的.NET程序进行互操作。其作用是在所有与CLS兼容的语言(c#,Visual Basic的.Net版本,Visaul C++或其它的.Net语言)中编写的程序都共享组件,这些组件具有跨各种语言界限的完全继承性。CLS定义了语言必须支持的功能,以支持与其它.NET语言的交互性。还可以使用CLS中没有的功能,但无法保证其他语言也支持这此功能。

理论上,这允许在不同的.NET语言之间进行非常紧密地互操作。比方说,允许一个C#类从一个VB类继承下来。

 

 

 什么是CTS?

    CTS = Common Type System(通用类型系统)。这是.NET运行时能够理解的一大套类型,因此,.NET应用程序就可以使用它们。不过要注意,并不是所有.NET语言都支持CTS中所有类型的。CTS是CLS的一个超集。它定义由所有.NET语言使用的基本类型,以及定义自己的类的规则。这可以防止不兼容方式实现语言(比如string类型)

 

 

 什么是IL?
    IL = Intermediate Language(中间语言)。也称为MSIL(Microsoft Intermediate Language,微软中间语言)或CIL(Common Intermediate Language,通用中间语言)。所有.NET源代码(不管用哪种语言编写)都被编译成IL。当软件被安装时,IL转换为机器码,或在运行时被即时 (Just-In-Time,JIT)编译器所处理。

 什么是C#?
    C#是微软设计的一门新语言,用于和.NET framework协作。在它的白皮书《C#介绍》(“Introduction to C#”)中,微软是这么描述C#的:
    “C#是一门派生于C和C++的简单、现代、面向对象和类型安全的程序语言。C#(发音C sharp)坚实地植身于C和C++语言家族树中,并将很快为C和C++程序员所熟悉。C#目标是将Visual Basic的高生产力和C++的原生威力联合起来。”
把上面一段话中的“C#”用“Java”取而代之,你会发现这个说法依然挺好

 在.NET环境下,“托管(managed)”一词的含义是?
    术语“托管(managed)”是许多混乱产生的起因,在.NET中,它被用于许多不同的地方,所表达的东西有着细微的差别。
    托管代码(Managed code):.NET framewor为运行在它里面的程序提供了数个核心运行时服务,例如异常处理和安全。为了使这些服务能够运作起来,代码必须向运行时提供最起码的信息, 这样的代码被称为托管代码。默认来说,所有C#和Visual Basic.NET代码都是托管的。VS7 C++代码缺省来说不是托管的,但可以通过指定命令行开关(/com+),使编译器生成托管代码。

    托管数据(Managed data):这些数据由.NET运行时垃圾收集器进行配置和清除。C#和VB.NET数据总是托管的,默认来说,VS7 C++数据是非托管的,即使使用/com+开关也是如此,但可以用__gc关键字将其标记为托管的。

    托管类(Managed classes):通常在C++托管扩展(Managed Extensions for C++)背景下谈及这个术语。当使用ME C++时,类别可标以__gc关键字。正如名字所暗示的,这意味着这个类的实体所占用的内存由垃圾收集器托管,但意思还不仅于此。这个类变成了一个完全交 付给.NET大家庭的成员,它可享受.NET所带来的好处,同时也受.NET施加的有关制约。关于好处的一个例子是可以和其它语言编写的类很好地互操作, 例如,一个managed C++类可以继承自一个VB类。关于约束的一个例子是,托管类只能继承自一个基类。

 什么是反射(reflection)?
    所有.NET 编译器都为它们生成的模块(modules)中所定义的类型产生元数据(metadata),这些元数据和模块打包在一起(模块被打包于配件 (assemblies)之中),并可通过反射机制(reflection)存取。System.Reflection名字空间中包含的类,可以用于“查 询”模块/配件的类型。
    使用反射来存取.NET元数据,非常类似于使用ITypeLib/ITypeInfo存取COM中的类型库数据,并且,它被用于类似的用途,比方说,决定数据类型尺寸,以用于跨越上下文/进程/机器边界列集(marshaling)数据。
    反射还可以用于动态调用方法(methods)(参见System.Type.InvokeMember),或在运行时刻动态创建类型(参见System.Reflection.Emit.TypeBuilder)。

什麼是强类型定义语言?
强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是

什麼是弱类型定义语言?
  一种类型可以被忽略的语言,与强类型定义相反。VBScript是弱类型定义的。在VBScript中,可以将字符串   '12'   和整数   3   进行连接得到字符串   '123',然后可以把它看成整数   123,而不需要显示转换。

什麼是动态类型语言?
动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

什麼是静态类型语言?
静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamic typing when needed。

什么是一元操作符?
是只有一個操作數的操作符。如遞增操作符(++)。

什么是二元操作符?
是要示有兩個操作數的操作符。如乘法操作符(*)。

DCOM:
Distributed Component Object Model,DCOM:分佈式組件對像模型

SOAP:
Simple Object Access Protocol,SOAP:簡單對像訪問協議。宗旨是增加跨平台的互操作性。

WSDL
Web服務描述語言:Web Service Description Language,WSDL。Web服務的URL後綴名為.asmx

序列化:
SOAP允許我們在客戶端應用程序和Web服務之間傳遞複雜的數據結構。你可以選擇以輸入參數、輸出參數或者返回值的形式來傳遞。為此數據結構本身要轉換成能通過網絡傳輸並在另一端重新組裝的格式。這個過程稱為「序列化」


你可能感兴趣的:(net)