科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件C#锐利体验(三)

C#锐利体验(三)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

抛开Microsoft.NET平台去谈C#是没有意义的,C#之“Sharp”也正在其后端强大的平台......

作者:李建忠 来源:Microsoft 2007年11月14日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
内存管理

  CLR对程序员影响最大的就是它的内存管理功能,以至于我们很有必要单独把它列出来阐述。它为应用程序提供了高性能的垃圾收集环境。垃圾收集器自动追踪应用程序操作的对象,程序员再也用不着和复杂的内存管理打交道。这在某些喜欢张口闭口底层编程的所谓的高手来说,自动内存管理从来都是他们嘲笑的对象。的确,为通用软件环境设计的自动化内存管理器永远都抵不上自己为特定程序量身订制的手工制作。但现代软件业早已不再是几百行代码的作坊作业,动辄成千上万行的代码,大量的商业逻辑凸现的已不再是算法的灵巧,而是可管理性,可维护性的工程代码。.NET/C#不是为那样的作坊高手准备的,C语言才是他们的尤物。在Microsoft.NET托管环境下,CLR负责处理对象的内存布局,管理对象的引用,释放系统不再使用的内存(自动垃圾收集)。这从根本上解决了长期以来困扰软件的内存泄漏和无效内存引用问题,大大减轻了程序员的开发负担,提高了程序的健壮性。实际上我们在托管环境下根本找不到关于内存操作或释放的语言指令。值得指出的是Microsoft.NET应用程序可以使用托管数据,也可以使用非托管数据,但CLR并不能判断托管数据与非托管数据。

  垃圾收集器负责管理.NET应用程序内存的分配和释放。当用new操作符创建新的对象时,垃圾收集器在托管堆(Managed Heap)中为对象分配内存资源。只要托管堆内的内存空间可用,垃圾收集器就为每一个新创建的对象分配内存。当应用程序不再持有某个对象的引用,垃圾收集器将会探测到并释放该对象。值得注意的是垃圾收集器并不是在对象引用无效时就立即开始释放工作,而是根据一定算法来决定什么时候进行收集和对什么对象进行收集。任何一个机器的内存资源总是有限的,当托管堆内的内存空间不够用时,垃圾收集器启动收集线程来释放系统内存。垃圾收集器根据对象的存活时间,对象历经的收集次数等来决定对哪些对象的内存进行释放。宏观的看,我们并不知道垃圾收集的确切行为,但Microsoft.NET类库为我们提供了控制垃圾收集行为的部分功能,在某些特殊情况下,我们有必要进行一些受限的操作。

  垃圾收集器并不意味着程序员从此可以一劳永逸,如果正在操作一个包装了如文件,网络连接,Windows句柄,位图等底层操作系统资源的对象,我们还是需要明确地释放这些非托管资源的。这在“第五讲 构造器与析构器”里有详细的阐述。

  Microsoft.NET框架类库

  Microsoft.NET框架类库是一组广泛的,面向对象的可重用类的集合,为应用程序提供各种高级的组件和服务。它将程序员从繁重的编程细节中解放出来专注于程序的商业逻辑,为应用程序提供各种开发支持--不管是传统的命令行程序还是Windows图形界面程序,拟或是面向下一代因特网分布式计算平台的ASP.NET或XML Web服务。下面是对这些组件和服务的一个概括。
  • 系统框架服务
    服务框架包括一套开发人员希望在标准语言库中存在的基类库,例如:集合、输入/输出,字符串及数据类。另外,基类库提供访问操作系统服务如图画、网络、线程、全球化和加密的类。服务框架也包括数据访问类库,及开发工具,如调试和剖析服务,能够使用的类。

  • ADO.NET组件
    ADO.NET为基于网络的可扩展的应用程序和服务提供数据访问服务。ADO.NET不仅支持传统的基于连接指针风格的数据访问,同时也为更适合于把数据返回到客户端应用程序的无连接的数据模板提供高性能的访问支持。

  • XML数据组件
    所有的数据都可被看作XML,开发人员可以通过XML为任何数据使用转换,传输和确认服务。系统框架对XML数据提供第一等的操作支持。系统也支持ADO.NET数据与XML数据之间的通用转换。

  • Windows表单组件
    Windows表单组件为开发人员提供了强大的Windows应用程序模型和丰富的Windows用户接口,包括传统的ActiveX控件和Windows XP的新界面,如透明的、分层的、浮动窗口。对设计时的强大支持也是Windows表单组件令人兴奋的地方。

  • ASP.NET应用服务
    ASP.NET的核心是高性能的用于处理基于低级结构的HTTP请求的运行语言。编译运行方式大大提高了它的性能。ASP.NET使用基于构件的Microsoft .NET框架配制模板,因此它获得了如XCOPY配制、构件并行配制、基于XML配制等优点。它支持应用程序的实时更新,提供高速缓冲服务改善性能。

  • ASP.NET Web表单
    ASP.NET Web表单把基于VB的表单的高生产性的优点带到了网络应用程序的开发中来。ASP.NET Web表单支持传统的将HTML内容与角本代码混合的ASP语法,但是它提出了一种将应用程序代码和用户接口内容分离的更加结构化的方法。ASP.NET提供了一套映射传统的HTML用户接口部件(包括列表框,文本框和按钮)的ASP.NET Web表单控件和一套更加复杂强大的网络应用控件(如日历和广告转板)。

  • XML Web服务
    ASP.NET应用服务体系架构为用ASP.NET建立XML Web服务提供了一个高级的可编程模板。虽然建立XML Web服务并不限定使用特定的服务平台,但是它提供许多的优点将简化开发过程。使用这个编程模型,开发人员甚至不需要理解HTTP、SOAP或其它任何网络服务规范。 ASP.NET XML Web服务为在Internet上绑定应用程序提供了一个利用现存体系架构和应用程序的简单的、灵活的、基于产业标准的模型。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章