C#OOP之十四 .Net Framework简介

简介: C#OOP之十四 .Net Framework简介

.Net FrameWork


从以前的dos平台到现今的Windows 2003、Vista、Win7,开发语言也是百花齐放、究竟选择哪一种,到底哪个才是最好的?更为痛苦的是团队内成员之间用的开发语言的一致性的要求,不一致的话,VC++开发的类库文件Delphi,无法调,反之也如此,无法良好的实现代码重用、效率提高等,不得不痛苦的去查Windows API等巨厚无比的手册、宝典,自己重新写成类库等来调用。


       那么没有更好技术,实现各个语言之间的共通吗?团队成员之间不再局限于语言的困扰,.Net FrameWork就是应时而生的产物。


       .Net FrameWork也叫.Net 框架,主要包括两部分内容:公共语言运行时(CLR)和框架类库集(FCL)。

       

C#、VB、VC++、J#

Visual Studio.Net IDE

公共语言规范(CLS)

.Net 3.0、3.5 4.0组件(WPF、WWF、WCF)

Asp.Net 、Ado.Net、Winform、WinCe

基础类库(FCL)

公共语言运行时(CLR)

Windows XP、WindowsVista、Windows7操作系统

公共语言运行时:CLR

 

 

         原来的程序设计语言都是针对平台的,比如Windows、Linux,而现在从C# 、Java 开始,一种新的程序语言执行方式产生了,就是“中间代码+虚拟机”的执行机制。这种中间代码是不能直接执行的,它需要“虚拟机”的装置来管理和执行,可以使解释执行也可以使编译执行。如下图所示:

在.Net 框架里管理和执行中间代码的虚拟机,就是公共语言运行时(CLR),它负责管理和执行由.Net编译器产生的中间代码。

       执行过程如下:

ü       在开发环境VisualStudio.Net中编写C#代码


ü       编译器将代码编译成中间语言代码(中间语言类似于汇编语言,但不是机器码)


ü       中间语言代码由CLR管理和执行。


注意,公共语言运行时的另外一个作用是可以轻松实现跨平台(条件是在操作系统上安装.Net FrameWork,微软虽然自己并不提倡跨平台(跨平台会影响Windows操作系统的市场垄断),但现在已经出现了在Linux操作系统中运行和编辑.Net程序的平台,就是Mono(包含了C#编译器、CLR以及FCL)

     



微软中间语言--MSIL

 

.       什么是中间语言呢?假设我们有汉语、日语、法语三位学者,他们正在交流一个问题,应该怎么交流呢?如果有一种他们都懂的语言(英语、手语或世界语)来交流,他们彼此才能明白。


       在.Net中中间语言就类似于现实中的英语、手语或世界语,正是由于VB、C#、J#、VC++等编程语言被编译成中间语言,CLR最终执行的是中间语言,所以这里产生了一个语言无关性的问题。


       语言无关性是指.Net框架产生的最终代码是和具体编程语言无关的,只和中间语言有关。不管你使用哪种编程语言,最终都要变为中间语言,你使用任何语言VB或C#都是等效的。现在在公司团队中对于成员使用VB或C#写作就变得简单多了,二者的东西可以互相调用。这样带来的效益是可观的,节省了我们对于不同编程语言知识的学习时间,将更多的精力放在程序的业务逻辑等方面。

 



CTS和CLS

 

CLS被称为通用语言规范,它用来定义.Net语言都应遵循的规则。CTS称作通用类型系统,它通常包含标准数据类型和等。


      CLS定义了.Net编程语言(C#、VB、VC等)数据类型的最小特性集,只有遵循CLS的编程语言定义的值类型或引用类型才会被其他编程语言所引用。比如你在C#中可以定义Uint32返回类型的方法,但这个数据类型并不是CLS所规定的,那么在VB中调用这个方法就会出现麻烦或产生错误。也就是说,保证不同语言程序的互操作性的前提是,在程序里要使用CLS里规定的数据类型进行编程。


       而CTS可以说是.Net的特性全集,从右图中你可以看出某个编程语言的类型等特性只不过是CTS的一个子集。如果你直接使用IL编程,那么你可以使用CTS的所有特性,如果你使用C#,那么你只能使用CTS里面针对C#的那部分类型或准则则。


CTS描述了语言在.Net环境中的定义及其行为方式,一门语言要进入.Net环境运行,就必须符合CTS的规定。对于.Net中的任何语言,其类的定义方式、继承的语法甚至对象的生命周期等相关的语法都是CTS规定的。




.Net基础类库(FCL)

 

.       在.Net中,微软已经为广大的程序员们提供了强大无比的类库来方便大家轻松的开发程序。关于类库的概念一直就存在,以前的VC有MFC类库、Delphi有VCL类库、Java有Swing、SWT等类库。这些类库都封装了系统底层的功能,并提供更好的操作方式。


       .Net中的类库封装了对Windows、网络、文件、多媒体的处理功能,是所有.Net语言都必须使用的核心类库。在Visual Studio中使用.Net基本类库(FCL)我们可以开发以下六种应用程序:


n        Windows窗体应用程序


n        Windows控制台应用程序


n        XML Web服务


n        Asp.Net Web窗体应用程序


n        Windows服务


n        .Net组件


FCL类库大约有7000多个类(每个类可能会有上百个方法或属性,比当初18000多个Win32 API显得更厉害了),别看多,理清思路与脉络、万法归一,学习不是难事。


言归正传,这些类被按照命名空间进行了分别别类(命名空间是对类进行分类的)。常用的类库如下:


命名空间

说明

System

包括最基本的类,这些类提供数据类型、事件和事件处理、接口、属性、异常处理等操作。

System.Drawing

处理图形和绘图,包括打印

System.Data

处理数据存取和管理,在定义 ADO.NET 技术中扮演重要角色

System.IO

管理对文件和流的同步和异步访问

System.Windows

处理基于窗体的窗口的创建

System.Reflection

包含从程序集读取元数据的类

System.Threading

包含用于多线程编程的类

System.Collections

包含定义各种对象集的接口和类

System.Net

提供用于网络通信的类、如P2P通信、网络聊天等

为什么选择C#,看看以前在Win32下开发一个简单窗体程序师多么的困难吧。代码 如下:


使用Windows API显示一个窗体的程序:


HWND hwndMain = CreateWindowEx(


   0, "MainWinClass","Main Window",


   WS_OVERLAPPEDWINDOW |WS_HSCROLL | WS_VSCROLL,


   CW_USEDEFAULT, CW_USEDEFAULT,


   CW_USEDEFAULT, CW_USEDEFAULT,


   (HWND)NULL, (HMENU)NULL,hInstance, NULL);


ShowWindow(hwndMain, SW_SHOWDEFAULT);


UpdateWindow(hwndMain);



在.Net框架下使用C#显示一个窗体的程序:


Form form = new Form();


form.Text = "Main Window";


form.Show();


其他行业不再列举,总而言之,使用.Net进行企业级开发、游戏定制、用户服务越来越多,已经应用到社会的方方面面。

 



小结:

 

在本章中,我们主要学习了:


u      什么是.NetFrameWork


u      CTS和CLS的概念


u      .Net FrameWork行业应用



英语词汇:

 

英文                 全文                                         中文

CLR              CommonLanguage Runtime                公共语言运行时


FCL              FoundationCommon Library                 基础类库


MSIL             MicrosoftIntermediateLanguage             微软中间语言


CTS             Common Type System                 公共类型系统


CLS             Common Language Specification            通用语言规范


 



练习项目:

 

 

使用MSDN了解MSIL、CTS、CLS的一些详细介绍,进行总结归纳。

 

目录
相关文章
|
2月前
|
C++ Windows
.NET Framework安装不成功,下载`NET Framework 3.5`文件,Microsoft Visual C++
.NET Framework常见问题及解决方案汇总,涵盖缺失组件、安装失败、错误代码等,提供多种修复方法,包括全能王DLL修复工具、微软官方运行库及命令行安装等,适用于Windows系统,解决应用程序无法运行问题。
176 3
|
2月前
|
C++ Windows
WindowsDLL修复专家,MSVCP**、DLL修复vcruntime**、DLL修复、`.Net Framework`缺失、DirectX类DLL修复、VC运行库修复
Windows DLL修复专家是一款专为解决因DLL文件缺失、版本错误导致的软件或游戏无法运行问题的系统工具。它支持一键扫描和修复各类DLL异常,涵盖MSVCP、vcruntime、.NET Framework、DirectX等多种常见问题。具备自动检测、备份还原功能,确保修复过程安全可靠。适用于软件报错、系统异常及新系统适配场景,降低用户手动修复门槛,提升系统稳定性与兼容性。
117 3
|
5月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
177 0
|
9月前
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
249 18
|
9月前
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
252 12
|
9月前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
124 6
|
9月前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
120 6
|
9月前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
119 6
|
9月前
|
开发框架 监控 .NET
C#进阶-ASP.NET WebForms调用ASMX的WebService接口
通过本文的介绍,希望您能深入理解并掌握ASP.NET WebForms中调用ASMX WebService接口的方法和技巧,并在实际项目中灵活运用这些技术,提高开发效率和应用性能。
502 5
|
9月前
|
算法 Java 测试技术
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
402 13