(01) 微软.NET平台与开发体系结构
C#高级编程《第7版》读书笔记(1-3章)

本文档是学习《C#高级编程》第七版的读书笔记,对于一些资源参考了网络相关文章。
本文档仅供个人学习,不可用于商业行为。
第Ⅰ部分部分 C#C#语言语言语言第一章第一章 .NET 体系结构1. 什么是 .NET Framework?2. C#语言和 .NET Framework 关系是什么?3. 什么是公共语言运行库?4. 什么是托管代码? 其与非托管代码有什么不同? 他们执行效率如何?5. IL 是什么?6. 什么是程序集?7. 值类型和引用类型的区别?答1:.NET Framework 是用于Windows 的新托管代码编程模型。
.NET Framework 又称 .Net 框架。
一个致力于敏捷软件开发(Agile software development Agile software developmentAgile software development)、快速应用开发(Rapid Rapid application developmentapplication development)、平台无关性和网络透明化的软件开发平台。
.NET 框架是以一种采用系统虚拟机运行的编程平台,以通用语言运行库(Common Language Runtime Common Language Runtime Common Language Runtime)为基础,支持多种语言(C#、VB、C++、Python 等)的开发。
答2:C#本身只是一种语言,尽管它是用于生成面向.NET 环境的代码,但它本身不是.net 的一部分。
.net 支持的一些特性,C#并不支持。
而C#语言支持的另一些特性,.net 却不支持。
但C#语言是和.NET 一起使用的,所以如果要使用C#高效地开发应用程序,理解Framework 就非常重要。
答3:.NET Framework 的核心是其运行库的执行环境, 称为公共语言运行库公共语言运行库 (CLR) 或 .NET 运行库。
简述.net架构

.NET架构是一个软件开发框架,主要用于构建、部署和运行应用程序。
.NET架构
主要分为三个部分:
1.Framework Class Library (FCL):包含了大量的预构建类和接口,这些类和接口可
以帮助开发人员快速构建应用程序。
mon Type System (CTS):提供了一套通用的数据类型和编程规范,使得不同
编程语言可以在.NET平台上无缝集成。
CTS还包括Common Language
Specification (CLS),它定义了一套所有.NET语言都需要遵循的最小规范,以确保语言之间的互操作性。
mon Language Runtime (CLR):是.NET架构的核心部分,负责执行.NET代
码。
CLR提供了一个托管的执行环境,包括内存管理、垃圾回收、类型检查等功能,使得开发人员可以专注于编写业务逻辑而不用关心底层细节。
此外,.NET架构还支持多种编程语言,如C#、、C++等,这些语言都可以编译成Common Intermediate Language (CIL),并通过CLR执行。
.NET架构的优点包括跨平台性、高性能、易维护、安全性高等。
它可以用于构建各种类型的应用程序,包括Web应用、桌面应用、移动应用等。
同时,.NET架构
也提供了丰富的开发工具和社区支持,使得开发人员可以快速上手并高效地开发应用程序。
总之,.NET架构是一个功能强大、易于使用和高度可扩展的软件开发框架,适用
于各种类型和规模的应用程序开发。
微软NET的技术介绍

微软.NET的技术介绍1 微软.NET的发展和基本思想① MicroSoft .NET的发展历史:随着网络经济的到来,微软公司希望帮助用户,能够在任何时候、任何地方、利用任何工具都可以获得网络上的信息,并享受网络通信所带来的快乐。
.NET战略就是为着实现这样的目标而设立的。
微软公开宣布,今后将着重于网络服务和网络资源共享的开发工作,并称,将会为公众提供更加丰富、有用的网络资源与服务。
微软新一代平台的正式名称叫做“新一代Windows服务”(NGWS),现在微软已经给这个平台注册了正式的商标——。
在.Net环境中,微软不仅仅是平台和产品的开发者,并且还将作为架构服务提供商、应用程序提供商,开展全方位的Internet服务。
在谈及这个平台中使用的新技术,微软透露,它将在.Net环境中提供更多新产品和一揽子的全套服务。
② MicroSoft .NET平台的基本思想是:侧重点从连接到互联网的单一网站或设备上,转移到计算机、设备和服务群组上,使其通力合作,提供更广泛更丰富的解决方案。
用户将能够控制信息的传送方式、时间和内容。
计算机、设备和服务将能够相辅相成,从而提供丰富的服务,而不是像孤岛那样,由用户提供唯一的集成。
企业可以提供一种方式,允许用户将它们的产品和服务无缝地嵌入自己的电子构架中。
这种思路将扩展二十世纪八十年代首先由PC赋予的个人权限。
MicroSoft .NET将开创互联网的新局面,基于HTML的显示信息将通过可编程的基于XML的信息得到增强。
XML是经“万维网联盟”定义的受到广泛支持的行业标准,Web浏览器标准也是由该组织创建的。
微软公司为开发它投入了大量精力,但它并不是MicroSoft的专有技术。
XML提供了一种从数据的演示视图分离出实际数据的方式。
这是新一代互联网的关键,提供了开启信息的方式,以便对信息进行组织、编程和编辑;可以更有效地将数据分布到不同的数字设备;允许各站点进行合作,提供一组可以相互作用的“Web服务”。
.NET4.0简介

4.0 简介框架是微软公司面向下一代移动互联网、服务器应用和桌面应用的基础开发平台,是微软为开发者提供的基本开发工具,其中包含许多有助于互联网应用迅捷开发的新技术,如图1-1所示。
图1-1 开发平台1.的产生在传统的软件开发工作中,开发者需要面对的是多种服务器和终端系统,包括用于个人计算机的Windows操作系统、用于服务器的Windows服务器系统、非Windows系统(如FreeBSD、Linux和BSD)、用于平面设计的Mac OS X操作系统,以及各种移动终端系统(如Windows Mobile、iOS、Android)等。
在开发基于以上这些系统的软件时,开发者往往需要针对不同的硬件和操作系统,编写大量实现兼容性的代码,并使用不同的方式对代码进行编译。
这一系列的问题,都给软件设计和开发带来很多困难。
以Windows操作系统为例,目前主要使用的Windows操作系统内核包括Win9X、NT4、NT 5.0/5.1、NT6.0/6.1、Windows CE、Windows Mobile 6.X和Windows Phone OS等。
在这些操作系统下进行软件开发,可使用的技术包括以下几种:●用于图形图像开发的GDI、DirectX、OpenGL等技术●用于数据库操作的ADO、DAO、RDO、ODBC等技术●用于Web应用开发的ASP、JSP、PHP等技术●用于移动终端的XNA、HTML 5等技术以上这些技术各有各的标准和接口,相互并不兼容。
若干软件开发者必须学习和使用相同的技术才能实现协作,而企业在实施开发项目时,也需要聘用指定技术的开发人员,才能实现最终的产品。
基于以上问题,微软公司在本世纪初开发出了一种致力于敏捷而快速的软件开发框架,其更加注重平台无关化和网络透明化,以CLR(Common Language Runtime,通用语言运行时)为基础,支持多种编程语言,这就是框架。
2.的特点框架既是一个灵活、稳定的能运行服务器端程序、富互联网应用、移动终端程序和Windows桌面程序的软件解析工具(类似虚拟机程序),又是软件开发的基础资源包,其具有以下特点。
.netcore 框架原理

.netcore 框架原理.NET Core是一个跨平台的、通用的开发框架,由微软开发。
它基于.NET Framework和.NET Standard,用于构建高性能、可扩展的应用程序。
其核心原理主要包括以下几点:1. 运行时:.NET Core使用通用语言运行时(Common Language Runtime,简称CLR)作为其核心运行时。
CLR是一个虚拟机,负责执行由C#、F#和Visual Basic等编程语言编写的代码。
2. 框架基础设施:.NET Core提供了一系列基础设施,用于构建和管理应用程序,包括依赖注入、服务定位、日志记录等。
这些基础设施遵循开闭原则,允许开发者灵活地选择和替换组件。
3. 应用开发模型:.NET Core采用MVC(Model-View-Controller)开发模型,将业务逻辑、数据展示和用户交互分离,有助于构建可维护和可扩展的应用程序。
4. 路由机制:.NET Core的路由机制负责将用户请求映射到相应的处理程序。
路由器根据请求的URL、HTTP方法等信息,找到对应的处理程序并执行。
5. 依赖注入:.NET Core提供依赖注入(Dependency Injection)机制,允许开发者通过注入的方式为应用程序组件提供依赖。
这有助于解耦和提高代码的可测试性。
6. 跨平台:.NET Core支持跨平台开发,可以在Windows、Linux和macOS等操作系统上运行。
这意味着开发者可以在不同平台上共享代码,降低重复开发的工作量。
7. 开箱即用:.NET Core提供了丰富的开箱即用功能,如身份验证、授权、缓存、消息队列等,帮助开发者快速构建功能完善的应用程序。
8. 安全性:.NET Core关注安全性,内置了诸多安全特性,如防止SQL 注入、跨站脚本攻击等。
此外,开发者还可以利用 Core的安全特性,轻松实现对应用程序的安全控制。
9. 生态系统:.NET Core拥有庞大的生态系统,包括丰富的库、工具和社区支持。
.net 框架设计与实现

.NET框架(.NET Framework)是微软开发的一种跨语言集成平台,用于构建和运行各种类型的应用程序,包括桌面应用程序、Web应用程序和移动应用程序等。
它提供了一套丰富的类库和工具,支持多种编程语言,包括C#、、F#等。
.NET框架的设计目标是提供一个统一的、高效的开发环境,使得开发者可以使用一种或多种语言编写应用程序,并且能够在不同平台上运行。
它包括以下几个关键组件:Common Language Runtime(CLR):CLR是.NET框架的核心组件,它提供了一种称为“公共语言规范”(Common Language Specification, CLS)的跨语言规范,使得不同的编程语言可以互操作。
CLR还负责应用程序的内存管理、线程管理和异常处理等任务。
Base Class Library(BCL):BCL是一组用于构建应用程序的类库,它提供了许多实用的类和接口,包括文件操作、网络通信、数据库访问、图形界面等。
Intermediate Language(IL):IL是一种中间语言,也称为微软中间语言(Microsoft Intermediate Language, MSIL)。
它是一种跨平台的编程语言,被编译成可执行文件后可以在任何支持.NET框架的平台上运行。
Just-In-Time (JIT)编译器:JIT编译器是将IL代码编译成本地代码的编译器,它在运行时将IL代码转换为机器代码,从而提高应用程序的性能。
垃圾回收器:垃圾回收器负责自动管理应用程序的内存,自动回收不再使用的内存,避免内存泄漏和内存溢出等问题。
实现.NET框架需要遵循一定的规范和标准,包括公共语言规范(CLS)、公共类型系统(CTS)和公共二进制接口(CMI)。
同时,还需要开发各种工具和库,以支持不同的编程语言和开发场景。
Net FrameWork结构及原理

与其他技术对比概述
与.NET Core对比
与Node.js对比
添加标题
添加标题
与Java Spring框架对比
添加标题
添加标题
与Python Django框架对比
与其他技术对比分析
与.NET Core对比:Net Framework是微软早期的开发框架,而.NET Core是微软近年来推 出的跨平台开发框架。两者在语言支持、运行时环境、API集和生态系统等方面存在差异。
.NET Framework是Microsoft开 发的一个应用程序框架
它提供了一套丰富的类库和工具, 用于开发Windows桌面、Web和 移动应用程序
它支持多种编程语言,如C#、 、C++等
它提供了一些基本的服务,如线 程管理、安全性、错误处理等, 以简化应用程序的开发过程
Net FrameWork发展历程
体系结构特点
内容1:体系结构特点 内容2:体系结构组成 内容3:体系结构层次 内容4:体系结构关键技术
Net FrameWork运行机制
运行机制概述
运行机制定义 运行机制组成部分 运行机制工作原理 运行机制特点与优势
运行机制组成
应用程序框架 运行库 框架类库 公共语言运行时
运行机制特点
单击添加标题
桌面应用程序:Net Framework可以用于构建 桌面应用程序,如Windows窗体应用程序和 WPF应用程序。
移动应用程序:虽然Net Framework不是移动 开发的首选平台,但仍然可以使用它来构建一 些移动应用程序,如Windows Mobile应用程 序。
游戏开发:Net Framework可以用于构建各种 类型的游戏,包括2D和3D游戏。
.NET平台

.NET平台前⾔“对于刚开始接触C#的初学者来说,了解⼀下.NET平台是很有必要的。
”这是我在看C#的时候常听到的⼀句话,所以就总结了⼀下有关.NET平台的⼀些基础知识。
事先声明:以下所述,错误难免,如有误导之处,请⼤家给予指正。
.NET平台.NET平台⼜称.NET框架(.NET Framework),是.NET的核⼼组成部分,提供了⼀个多语⾔组件开发和执⾏的环境,⼀个完全可操控的安全的和特性丰富的应⽤开发执⾏环境,这不但使得应⽤程序的开发和发布更加简单,并且实现了众多语⾔间的⽆缝集成。
⼀个.NET应⽤程序⼀定是⼀个运⾏在.NET Framework上的应⽤程序,如果⼀个应⽤程序跟.NET Framework⽆关,它就不能叫做.NET程序。
.NET体系结构⾸先,给出.NET作为开发平台在计算机中的位置,如图所⽰:然后,给出.NET Framework的体系结构,如图:在图中可见,.NET framework体系结构的最顶层是各种语⾔,有Visual 、Visual C++,visual C#.net和visual j#.net等⼏⼗种。
其中,C#是为了更好的发挥.NET的各种优势,Microsoft公司在⼏⼗年开发程序设计语⾔的基础上,精⼼设计的全新程序设计语⾔。
图中可以看出,CLR是.Net Framework的底层,它定义了在不同的编程语⾔之间通⽤的数据类型,提供程序运⾏所需要的内存管理和⽣命期管理。
CLR的意义在于:从运⾏时的⾓度看,.NET是基于Windows系列操作系统(包括服务器、⼯作站、智能⼿机、PDA)的跨设备的统⼀运⾏平台;从开发者的⾓度看,凡事符合CLS的程序语⾔所开发的程序都可以在任何有CLR的操作系统上执⾏和互操作,具有与平台⽆关的特性,同时可以相互调⽤。
从图中还可以看出,CLR之上的是.NET Framework类库,它提供了⼀整套从基本输⼊输出到数据访问以及⽤于构建Web应⽤和Windows桌⾯应⽤的组件类库。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公共语言运行时
元数据 (Metadata)
简化编程模式的关键 自动生成
与中间代码一起存在可执行文件里 (.dll 或 .exe) 使用现有的 PE/COFF 格式
遵从现有的扩展机制
用二进制的方式存储
可以与XML Schema互相转化 可以与COM type libraries互相转化
System.Windows.Forms
Design ComponentModel
System.Drawing
Drawing2D Imaging Printing Text
System.Data
OleDb Common SqlClient SQLTypes XSLT XPath
System.Xml
Serialization
Windows Forms
丰富的 Windows 应用程序
把VB Forms, MFC and WFC的精华集成在一起
提供了先进的功能
可视化的 Forms 继承 先进的图形支持 – GDI+ 很容易地访问 Win32 ® API
元数据里包含了些什么?
对部署单元程序集 (assembly) 的描述
标识:名字、版本、地域/文化、公钥标记 输出哪些类型 它依赖于哪些其他的程序集 需要运行的安全许可
对类型的描述
名字、可视性、基类、实现的接口 成员 (方法、域、属性、事件、嵌套类型)
用户自定义的 编译器定义的 Framework定义的
更加容易地部署,运行和维护
对Web 标准的支持
.NET Framework支持
HTML, XML, SOAP, XSLT, XPath
现有的远程协议– DCOM, CORBA, RMI – 都不能很好地使用于互联 网 使用松耦合的 RPC 机制 – SOAP
Web services使互联网上不同设备能够交互
其他特性
公共语言运行时
清单(manifest)
指向元数据中对导出类型的描述 Classes Base classes Implemented interfaces Data members Methods
对程序集的描述
Name Version Culture Other assemblies Security Permissions Exported Types
The .NET的演变历史
使用 .NET Framework的公共 语言运行时(CLR), 组件都建 立在一个共同的底层基础上. 不 再需要管道的繁琐细节,对象 可以直接交互。
公共语言运行时(Common Language Runtime)
管理运行代码
确认类型的安全性 提供垃圾收集,错误处理 对半信任代码的访问安全控制 数值类型 (integer, float, user defined, etc) 引用类型(Objects, Interfaces) 提供跨语言的支持,包括统一的异常处理和跨语言调试 包括Windows API和COM InterOP服务
编译
源代码 语言编译
中间代码
Assembly
元数据
本机代码 Native Code
即时编译
(JIT Compiler)
在安装或函数/方法第一 次被调用时
执行
公共语言运行时
程序集 (Assemblies)
example.DLL Metadata(元数据) IL Managed code
Resources
多语言的一个世界
超过20种语言
同一个开发环境
C++ Visual Basic
同一套体系框架 同一样调试方式
C# J# Delphi Mondrian Component Pascal Pascal Python Haskell Ada Perl RPG JScript Scheme Oberon Smalltalk Java Eiffel Oz Mercury Cobol Fortran C Objective Caml ML APL
微软.NET平台 与 开发体系结构
日程
.NET开发的底层框架 应用程序体系结构 应用程序开发实践
什么是.NET Framework?
是一组技术
为互联网和分布式应用程序开发提供一种新的开发平台 简化应用程序开发和部署 为Web Service提供一种标准平台 改善系统和应用程序之间的交互性和集成性 使应用程序对任何设备都能够进行访问
.NET应用程序类型
Windows Form应用程序 Windows Form控件 Windows Service应用程序 Web应用程序 Web Service
.Net Framework的设计基于如下目标
简化开发 (Simplify development)
丰富的类库
Windows Forms Web应用平台
丰富的交互式网页 强有力的 Web Services
.NET平台
开发人员发展历程 操作系统 应用服务实现 开发工具支持
Visual Studio .NET
.NET Enterprise Servers .NET Building Block Services
传统的开发
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);
简单快速,屏蔽底层细节 跨语言和应用类型
统一的编程模式 (Unify programming models)
使用公认的互联网国际标准
Rich XML, standard protocols, stateless
For components, versioning, availability
.NET Framework
快速开发工具
强大, 相对复杂
代码嵌套在 HTML页面中
VB Forms
MFC/ATL
ASP
Windows API
统一的编程API
.NET Framework 类库
System.Web
Services Description Discovery Protocols Caching Configuration UI HtmlControls WebControls Security SessionState
XML的支持很深地扎根在.NET Framework里
Data, Remoting, Serialization, documentation, config
.NET Framework的组成部分
公共语言运行时(Common Language Runtime) (CLR)
适用所有语言的公共类型系统(Common Type System ) 多语言互用(可以相互继承和调用) 丰富的运行时环境 基本类库(Base class libraries), 和XML
无缝集成
把.NET classes当作 COM objects来用
不需要额外的开发工作
COM objects可以被引进(import)
No ref counting or COM API needed
Transactions, Object pooling, etc… No marshaling(列集) for common cases
Stream-level access to data sources Fastest way to get data out of SQL
System.Xml
非常好的标准支持
100% 兼容 W3C 标准 XSLT 1.0, XPath 1.0, XSD 1.0, DOM2.0
为原始数据解析和XSLT提供了非常好的吞吐能力
先进的多语言互用功能
目前支持20多种语言
VB, C++, C#, Java, JScript, Perl, COBOL
调试器等可以跨语言工作
功能强大的工具
更简单的部署
不需要在registry里注册
代码完全可以自我描述 只要把应用程序xcopy到目录下即可执行 安装一个应用程序不会影响别的应用程序
=>自我描述的组件,直接xcopy =>层次化的名字空间(namespace) =>原代码直接到元数据(METADATA) =>结构化的异常处理 =>root object class =>垃圾回收 (garbage collector)
=>”new” 操作符
多语言开发
内建的对象系统