您好、欢迎来到现金彩票网!
当前位置:爱彩网app下载 > 公共语言 >

公共语言运行库(CLR)(6)

发布时间:2019-04-25 11:34 来源:未知 编辑:admin

  此时您可能会问,COM是如何与CLR协调一致的?答案很简单,它并没有与CLR协调一致。从技术前景上说,COM并不是支持CLR的核心技术。CLR完全是从头编写的新代码,而COM只用于互操作及主控。互操作允许使用言中现有的COM组件,就好像它们是CLR类一样,并允许将CLR类作为COM组件用于非CLR应用程序。而使用COM可以主控应用程序(如IIS)中的CLR,因为CLR为加载和执行CLR代码提供了一组COM组件。

  CLR不基于COM,这说明未来COM将不再是在Windows平台上编写的Web应用程序中使用的主流技术。这就意味着,C/C++程序员或VB程序员使用的大多数概念不是.NET Framework的一部分。例如,在COM中,所有对象都会计算引用的次数,所有COM方法都返回HRESULT。但是,基于接口的编程概念仍然会在.NET中得到广泛应用,因此在接口方面的COM思维方式还是有效的。出于开发效率的考虑,大多数人仍然会将接口转换为基类。

  目前Microsoft公司内部正在敦促各个开发小组不要再建立和发行新的COM组件。而应该创建.NET组件,作为COM组件的替代产品。2.2.8 中间语言

  本书不打算对IL进行全面介绍,但通过下面的VB.NET代码行,您可以对它有一个初步印象。

  该代码行调用了Console类的WriteLine方法,该类是System命名空间的一部分。如前所述,命名空间是一种对相关类进行分组的方式。当该代码行作为控制台应用程序的一部分而进行编译和运行时,它会向控制台窗口输出简单的消息。我们可以用IL编写出相同的代码行,如下所示:

  该代码使用了相同的API调用,不同之处在于它的前缀为[mscorlib],告诉CLR所调用的API位于文件MSCORLIB.DLL中。第一行显示了将参数输入API的方式。ldStr命令将指定的字符串加载到调用堆栈上,由此所调用的API可以检索它。

  如果前面使用VB.NET编译器对简单的VB代码进行编译,那么得到的输出结果将是一个包含了如上所示的IL的可执行文件。但IL并不完全相同,因为VB编译器实际上输出了一些额外的初始化IL,而这在本例中并不重要。最后要说明的是,所创建的DLL和EXE是自我描述的。2.2.9 应用程序域

  所有的Windows应用程序都在一个进程中执行。进程拥有像内存和核心对象这样的资源,线程则执行加载到进程中的代码。在操作系统中,不同的进程是互不干扰的,因此一个进程不可能影响运行在另一个进程中的应用程序。为了让多个应用程序运行在同一台计算机上,这种互不干扰是最基本的要求,这种安全要求不管某个应用程序发生了什么情况,其他应用程序也能照常运行。进程提供了很好的应用程序容错性,这也是为什么IIS和COM+以高隔离模式运行时使用这些进程的原因。

  在Windows中,进程存在的问题是创建和管理进程要耗费大量的资源,在大量使用进程时它们的伸缩性不是很好。例如,如果使用IIS将大量的站点配置为隔离运行,那么每个站点都会有其专用的进程,这会消耗许多资源(如内存)。如果在同一个进程中运行所有这些应用程序,就可以在一台计算机上运行多得多的站点,因为这样会消耗较少的资源,需要的内存也会少一些,因为DLL只需加载到一个进程中,减少了不同进程和核心IIS处理器进程之间的内部处理开销。这种方式的缺点是如果一个站点崩溃了,所有的站点都会受到影响。图2-6显示了同一个.NET进程中的多个应用程序域。

  当ASP.NET作为IIS4/5的一部分运行时,它会使用应用程序域来执行每个ASP.NET应用程序的实例,如图2-7所示。由于每个ASP.NET应用程序会在自己的应用程序域中执行,因此不会和同一台计算机中的其他ASP.NET应用程序发生冲突。ASP.NET会忽略在IIS中指定的进程隔离性。

  在与Winsoed Server 2003一起安装的IIS 6.0中,应用程序(AppDomains,同样如此)可以在隔离的应用程序池中运行,如图2-8所示。这提供了更高的健壮性、性能和可伸缩性。在IIS管理器中,会把每个用程序或Web站点分配到特定的应用程序池中。应用程序池还可以用于在同一台机器上运行ASP.NET的不同版本――应用程序池中的所有应用程序都必须运行在同一个版本下,但可以为每个不同的版本创建一个或多个应用程序池。

http://adcamp.net/gonggongyuyan/78.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有