ASP.NET网页编程之从.NET CLI(第3版)看.NET Framework 2.0仓酷云
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。2005年6月,.NETCLI(第3版)正式成为ECMA尺度ECMA-335(第3版),第3版.NETCLI对应.NETFramework2.0。懂得第3版.NETCLI对懂得.NETFramework2.0内核有主要意义,本文试经由过程扼要剖析.NETCLI(第3版)包括的内容,开端懂得一样平常材料中较少触及的.NETFramework2.0内核相干信息。1甚么是.NETCLI
.NETCLI是.NET大众言语基本布局(.NETCommonLanguageInfrastructure)的缩写,.NETFramework基于.NETCLI。.NETCLI文档中对.NETCLI的界说是:.NETCLI界说了一个大众言语基本布局,在大众言语基本布局中,各类分歧的初级言语开辟的使用程序,无需修正程序以顺应分歧的体系情况独有的特征,就能够在分歧的体系情况下运转。
这个界说点了然.NETFramework的基础特征:
1、.NETFramework和Java一样,具有跨平台性,“分歧的体系情况”实践上就是分歧的硬件和软件平台(包含操纵体系),实际上说,在任何硬件和软件平台上,只需完成.NETFramework,就能够不加修正地运转任何.NET使用程序,而无需思索平台本身的特征。
2、.NETFramework还能够撑持多种初级言语(跨言语性),任何.NET编程言语,即.NET平台撑持的初级言语,开辟的使用程序在.NETFramework上是等价的,都能够在.NETFramework上运转。
不管贸易的炒作怎样举行,体系底层程序员应当坚持苏醒的思想,从.NETFramework的基础特征看来,一般被称为.NETCLR(.NET大众言语运转时,.NETCommonLanguageRuntime)的.NETFramework底层,实质上必定是相似于Java假造机(JavaVM)的假造机,.NETCLR实行的代码必定也是一种假造机代码大概两头代码,不然.NETFramework不成能完成跨平台,出格是顺应分歧的硬件平台。由于分歧的硬件平台,CPU的指令集多是分歧的,只要经由过程假造机将两头代码在运转时静态转换为CPU指令集撑持的本机代码,才干完成两头代码在分歧硬件平台上的一样实行,进而完成顺应分歧的硬件平台。
.NETFramework能够撑持多种.NET编程言语,这意味着:任何.NET编程言语的源程序终极都编译成不异的两头代码,也就是能够在.NETCLR(假造机)上运转的假造机代码。
2.NETCLI包括的内容
.NETCLI(第3版)文档包括以下部分:
1、观点和系统布局:形貌.NETCLI的全体系统布局,供应大众范例体系(CTS,CommonTypeSystem)、假造实行体系(VES,VirtualExecutionSystem)和大众言语标准(CLS,CommonLanguageSpecification)的尺度化形貌,还供应对元数据(Metadata)的信息性形貌。
2、元数据的界说和语义:供应元数据的尺度化形貌,包含元数据在.NET扩大PE文件格局中的地位(以.NET扩大PE文件格局的情势暗示),元数据的逻辑内容(以表格及其联系关系的汇合的情势暗示,实践上利用了情势化办法暗示)和元数据的语义(以汇编成为假造机代码的汇编器ilasm了解的情势暗示)。
3、CIL指令集:形貌大众两头言语(CIL,CommonIntermediateLanguage)指令集。CIL又称MSIL(微软两头言语,MicrosoftIntermediateLanguage),CIL指令就是假造机代码大概两头代码的指令。
4、Profile和库:供应CLI库的扼要先容,和将其分化为Profile和库的标准。这里有一个配套的文件CLILibraryTypes.xml,思索过随这一部分一同公布,不外该文件是XML格局的,该文件供应了CLI库中每个类、值范例和接口的细节申明。“Profile”一词在这里的寄义是库的汇合,一同组合起来组成供应必定功效级其余分歧性全体,换而言之,分歧的Profile对应分歧的库汇合,供应的功效级别也分歧,“Profile”一词亦可翻译成“库提要”大概“库设置”,但切勿翻译成“设置文件”。
5、调试互换格局:可互换(.NETCLI通用)调试信息的格局。
6、附件
从.NETCLI文档包括的全体内容来看,.NETCLI包括以下内容:
1、CLS(.NETCLS)
2、CTS(.NETCTS)
3、VES
VES是一般所说的.NETCLR的中心,这也是.NETCLR实质上是假造机的又一证实。
4、元数据
包含.NET扩大PE文件格局。
5、CIL(MSIL)
6、库和Profile
7、调试信息的格局
8、附件
完成.NETCLI界说的大众言语基本布局便可完成.NETFramework的子集。懂得.NETCLI能够从底层较为具体地懂得.NETCLS、.NETCTS、VES、Metadata、NET扩大PE文件格局、CIL等,这是体系底层程序员懂得.NETFramework内核和开辟相干软件所必须的。保举任何一名.NET体系底层程序员仔细浏览.NETCLI文档,.NETCLI文档可在Microsoft公司网站高低载。
3对.NETCLI包括内容意义的剖析
.NETCLI供应了一个可实行代码(CIL代码)和代码运转的实行情况(VES)的标准,供应给VES可实行代码的是模块(Module),模块是一个文件格局中包括可实行内容的文件。
.NETCLI的中心是一个一致的范例体系(CTS),一切的.NET编程言语编译器、工具乃至.NETCLI本身都利用CTS,CTS模子界说了一组.NETCLI在界说、利用和办理范例时遵守的划定规矩,CTS断定了完成跨言语集成、范例平安和高功能代码实行的框架,经由过程形貌CTS能够形貌.NETCLI的系统布局。
元数据用于形貌和援用CTS界说的范例。由于元数据包括在.NET编程言语编译天生的终极的可实行文件——.NET扩大PE文件中,以是一切的.NET可实行文件中,仍旧包括源程序中的一切范例的界说(形貌),一般所说的.NET编程言语中的类(Class),也是CTS中界说的一品种型——援用范例的一种,这意味着一切范例,包含类,能够在.NET可实行文件运转时静态会见,比方在运转时静态断定利用某品种创立对象,而不是在编译时就断定创立对象的类。
CLS是.NET编程言语计划者和框架(比方类库)计划者之间的协议,CLS指定了CTS的子集和用法商定,编程言语经由过程完成CLS界说的CTS的最小化部分便可取得最年夜的会见框架的才能。比方:类库表露出的接口假如只利用CLS指定的CTS子会合的范例,并遵守CLS协议,那末类库就能够被任何.NET编程言语挪用。制订CLS的目标是思索到跨言语集成,由于各类.NET编程言语固然有其个性,但也有其特征,比方C#撑持运算符重载而VB.NET不撑持,一样VB.NET撑持前期绑定语法而C#不撑持,跨言语挪用的范例必需是各类.NET编程言语都能撑持的范例,以是要界说各类.NET编程言语都撑持的CTS子集和用法商定。任何.NET编程言语都必需遵守.NETCLS,比方VB6劈面向对象的撑持不完全,但作为.NET编程言语的VB.NET,必须完整撑持面向对象,这招致了VB6和VB.NET的不兼容。
VES完成并强迫恪守CTS。.NET可实行文件完整由范例(包含类)组成,VES实行.NET可实行文件,实践上是实行范例,实质上是在元数据——范例界说的驱动下实行范例中办法的完成,办法的完成能够是CIL代码,也能够是本机代码,比方VisualC++.NET中的夹杂程序集同时包括CIL代码和本机代码,这就是托管实行(受控实行,ManagedExecution)的实质。VES经由过程实行范例来完成并强迫恪守CTS,由于范例是遵守CTS的,VES只能实行遵守CTS的范例。
假造机代码——CIL代码的指令集,近似一种假造的RISC系统布局CPU的指令集,CIL指令一样能够用一种假造的汇编言语暗示,称为IL汇编言语。.NET可实行文件中的范例,其办法只需是用CIL代码完成的,能够反汇编成IL汇编言语的情势。由于CIL代码实质上是一种假造机代码,要将CIL代码反编译成.NET编程言语的源程序情势也是很复杂的,好像Java可实行文件能够反编译成Java源程序一样。
4第3版.NETCLI中增加的内容
第2版.NETCLI于2002年公布,对应.NETFramework1.0,第3版.NETCLI对应.NETFramework2.0。对照第2版.NETCLI和第3版.NETCLI,能够发明第3版.NETCLI增加的内容,最主要的就是对泛型(参数化的范例,Generics)的撑持,这与.NETFramework2.0的底层——.NETCLR2.0增加的最主要内容是分歧的。
5.NETCLR与JavaVM的异同
.NETCLR的实质和JavaVM相似,都是假造机,这与Microsoft宣称.NETFramework能够跨平台是对应的。
可是.NETCLR其实不夸大100%的平台有关性,托管实行的实质只是元数据驱动实行,只管范例中办法的完成一样平常都利用CIL代码,比方C#和VB.NET的编译器只天生CIL代码,但不扫除利用本机代码,比方VisualC++.NET的编译器能够天生同时包括CIL代码和本机代码的可实行文件,本机代码明显是平台相干的。
.NETFramework中,良多.NET框架类库的完成只是一种对Windows平台的包装,终极挪用的仍是WindowsAPI大概Windows相干服务,比方企业服务(EnterpriseServices)终极挪用COM+企业组件服务。.NET框架类库是.NET使用程序挪用的API,明显,利用了上述.NET框架类库的.NET使用程序是不成能分开Windows平台的。
.NET使用程序还能够间接挪用WindowsAPI,间接挪用WindowsAPI的.NET使用程序更不成能分开Windows平台。
可见Microsoft其实不把跨平台作为.NETFramework寻求的主要方针,.NETCLR是和Windows平台乃至硬件平台协同事情的,而JavaVM的方针则是完成完整的跨平台,在各类硬件和软件平台上都有JavaAPI的自力完成,可见两者的计划主要方针其实不不异。
以是.NETCLR称为“Runtime(运转时)”,而JavaVM称为“VirtualMachine(假造机)”仍是很贴切的。
Microsoft会让.NETFramework完整跨平台吗?笔者看来如今不会,不然怎样坚持Windows平台的把持位置?
.NETCLI界说的只是.NETFramework的子集,仅此罢了。
6.NETFramework3.0
WindowsVista(WindowsNT6.0)将于2006年岁尾到2007年岁首的工夫正式公布,WindowsVista中包括了.NETFramework3.0。
.NETFramework3.0是WinFX正式公布时的称号,.NETFramework3.0供应了4个全新的子体系,关于程序员来讲能够以为是4组全新的API,还包含全新的程序计划系统布局,它们分离是:图形用户界体面体系WPF(Windows暗示层基本,WindowsPresentationFoundation)、平安系统CardSpace、收集服务通讯子体系WCF(Windows通讯基本,WindowsCommunicationFoundation)和事情流子体系WF(Windows事情流基本,WindowsWorkflowFoundation)。
实践上.NETFramework3.0的中心仍旧是.NETFramework2.0,其底层仍旧是.NETCLR2.0,因而.NETFramework3.0的公布对体系底层程序员的打击绝对对照小。从.NETFramework3.0的中心仍旧是.NETFramework2.0看来,Microsoft没法保持WindowsAPI时期的大批资本,包含COM/COM+、DirectX等,.NETFramework在一段时代内仍旧不会完整代替WindowsAPI,体系底层程序员仍旧年夜有可为。
援用本文入手下手处的一句话:不管贸易的炒作怎样举行,体系底层程序员应当坚持苏醒的思想。
来自:http://blog.csdn.net/Changjiang/archive/2006/11/08/1372371.aspx
无论谁倒了对双方阵营的粉丝们也是有害无益。 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。 asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。 可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
页:
[1]
2