c#

位置:IT落伍者 >> c# >> 浏览文章

C#体验Microsoft.NET平台基础构造


发布日期:2018年07月16日
 
C#体验Microsoft.NET平台基础构造
抛开MicrosoftNET平台去谈C#是没有意义的C#之Sharp也正在其后端强大的平台仅仅拘泥于语法层面是体验不了C#的锐利之处的C#程序很多诡秘之处必须依靠MicrosoftNET平台才能深度的掌握和运用简单的讲MicrosoftNET平台是一个建立在开放互联网络协议和标准之上采用新的工具和服务来满足人们的计算和通信需求的革命性的新型XML Web智能计算服务平台它允许应用程序在因特网上方便快捷地互相通信而不必关心使用何种操作系统和编程语言 从技术层面具体来说MicrosoftNET平台主要包括两个内核即通用语言运行时(Common Language Runtime简称CLR)和MicrosoftNET框架类库它们为MicrosoftNET平台的实现提供了底层技术支持通用语言运行时是建立在操作系统最底层的服务为MicrosoftNET平台的执行引擎MicrosoftNET框架包括一套可被用于任何编程语言的类库其目的是使得程序员更容易地建立基于网络的应用和服务在此之上是许多应用程序模板这些模板为开发网络应用和服务提供高级的组件和服务MicrosoftNET平台之浩瀚绝非这里的几千字能够廓清我们下面将着重体验那些对我们用C#开发应用程序至关重要的平台基础构造 通用语言运行时(CLR) 通用语言运行时是整个MicrosoftNET框架赖以建构的基础它为MicrosoftNET应用程序提供了一个托管的代码执行环境它实际上是驻留在内存里的一段代理代码负责应用程序在整个执行期间的代码管理工作比较典型的有内存管理线程管理安全管理远程管理即时编译代码强制安全类型检查等这些都可称得上MicrosoftNET框架的生命线 实际上我们可以看出来CLR代理了一部分传统操作系统的管理功能在CLR下的代码称之为托管代码否则称为非托管代码我们也可将CLR看作一个技术规范无论程序使用什么语言编写只要能编译成微软中间语言 (MSIL)就可以在它的支持下运行这使得应用程序得以独立于语言目前支持CLR的编程语言多达二三十种微软中间语言是我们在MicrosoftNET平台下编译器输出的PE文件的语言它是MicrosoftNET平台最完整的语言集非常类似于PC机上的汇编语言即时编译器在运行时将中间语言编译成本地二进制代码它为MicrosoftNET平台提供了多语言的底层技术支持另外根据需要MicrosoftNET即时编译器提供了特殊情况下的经济型即时编译和安装时编译技术 CLR的设计目的便是直接在应用程序运行环境中为基于组件的编程提供第一等的支持正如在Windows中添加了对窗口控件图形和菜单的直接支持为基于消息的编程添加了底层结构为支持设备无关性添加了抽象内容一样CLR直接支持组件(包括属性和事件)对象继承性多态性和接口对属性和事件的直接支持使得基于组件的编程变得更简单而不需要特殊的接口和适配设计模式在组件运行时CLR负责管理内存分配启动和中止线程和进程强化安全系数同时还调整任何该组件涉及到的其他组件的附属配置序列化支持允许以多种格式操作存储在磁盘上的组件包括基于业界标准XML的SOAPCLR提供了处理错误条件的有力协调的方式每个模块都具有内置的完整的元数据这意味着诸如动态创建和方法调用之类的功能更容易也更安全映射甚至允许我们灵活地创建和执行代码我们可以控制应用程序使用的组件的版本这使应用程序更加可靠组件代码是与处理器无关的和易于验证的中间语言 ( IL)而不是某一种特定的机器语言这意味着组件不但可以在多种计算机上运行而且可以确保组件不会覆盖它们不使用的内存也不会潜在地导致系统崩溃CLR根据托管组件的来源(例如来自因特网企业局域网本地机)等因素对他们判定以适当的信任度这样CLR会根据他们的信任度来限定他们执行如读取文件修改注册表等某些敏感操作的权限借助通用类型系统(Common Type System简称CTS)对代码类型进行严格的安全检查避免了不同组件之间可能存在的类型不匹配的问题CLR下的编程全部是围绕组件进行的 值得指出的是CLR通常寄宿在其他高性能的服务器应用程序中比如因特网信息服务器(IIS)Microsoft SQL Server这使得我们可以充分利用通用语言运行时诸多的安全高效的优点来部署自己的商业逻辑 内存管理 CLR对程序员影响最大的就是它的内存管理功能以至于我们很有必要单独把它列出来阐述它为应用程序提供了高性能的垃圾收集环境垃圾收集器自动追蹤应用程序操作的对象程序员再也用不着和复杂的内存管理打交道这在某些喜欢张口闭口底层编程的所谓的高手来说自动内存管理从来都是他们嘲笑的对象的确为通用软件环境设计的自动化内存管理器永远都抵不上自己为特定程序量身订制的手工制作但现代软件业早已不再是几百行代码的作坊作业动辄成千上万行的代码大量的商业逻辑凸现的已不再是算法的灵巧而是可管理性可维护性的工程代码NET/C#不是为那样的作坊高手准备的C语言才是他们的尤物在MicrosoftNET托管环境下CLR负责处理对象的内存布局管理对象的引用释放系统不再使用的内存(自动垃圾收集)这从根本上解决了长期以来困扰软件的内存洩漏和无效内存引用问题大大减轻了程序员的开发负担提高了程序的健壮性实际上我们在托管环境下根本找不到关于内存操作或释放的语言指令值得指出的是MicrosoftNET应用程序可以使用托管数据也可以使用非托管数据但CLR并不能判断托管数据与非托管数据 垃圾收集器负责管理NET应用程序内存的分配和释放当用new操作符创建新的对象时垃圾收集器在托管堆(Managed Heap)中为对象分配内存资源只要托管堆内的内存空间可用垃圾收集器就为每一个新创建的对象分配内存当应用程序不再持有某个对象的引用垃圾收集器将会探测到并释放该对象值得注意的是垃圾收集器并不是在对象引用无效时就立即开始释放工作而是根据一定算法来决定什么时候进行收集和对什么对象进行收集任何一个机器的内存资源总是有限的当托管堆内的内存空间不够用时垃圾收集器启动收集线程来释放系统内存垃圾收集器根据对象的存活时间对象历经的收集次数等来决定对哪些对象的内存进行释放宏观的看我们并不知道垃圾收集的确切行为但MicrosoftNET类库为我们提供了控制垃圾收集行为的部分功能在某些特殊情况下我们有必要进行一些受限的操作 垃圾收集器并不意味着程序员从此可以一劳永逸如果正在操作一个包装了如文件网络连接Windows句柄位图等底层操作系统资源的对象我们还是需要明确地释放这些非托管资源的这在第五讲 构造器与析构器里有详细的阐述 MicrosoftNET框架类库 MicrosoftNET框架类库是一组广泛的面向对象的可重用类的集合为应用程序提供各种高级的组件和服务它将程序员从繁重的编程细节中解放出来专注于程序的商业逻辑为应用程序提供各种开发支持不管是传统的命令行程序还是Windows图形界面程序拟或是面向下一代因特网分布式计算平台的ASPNET或XML Web服务下面是对这些组件和服务的一个概括

系统框架服务

服务框架包括一套开发人员希望在标准语言库中存在的基类库例如集合输入/输出字符串及数据类另外基类库提供访问操作系统服务如图画网络线程全球化和加密的类服务框架也包括数据访问类库及开发工具如调试和剖析服务能够使用的类

ADONET组件

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

XML数据组件

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

Windows表单组件

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

ASPNET应用服务

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

ASPNET Web表单

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

XML Web服务

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

上一篇:利用C#转换图片格式,还可转换为ico

下一篇:微软 .NET 在新的平台上编程