大学学过 C# + SQLServer,现在早已忘得差不多了,对 .NET 做个记录,存个档。
由于微软市场营销和技术研发脱钩的缘故,一种技术流行之后,它的名字就会都到处用,恨不得包含一切编程技术。所以概念可能会很混乱。
- Win32API: Windows 操作系统提供的 API
- DDE: Dynamic Data Exchange
跨进程通信技术,对应的是 SUN 公司提出的 RPC - OLE: Object Linking and Embedding, 对象连接与嵌入
由 DDE 演化而来,用于实现不同程序之间的相互调用
Windows 操作系统提供了三种进程间的通信机制:
- 剪贴板
- DDE
- OLE
是一种应用层面的技术。其底层逻辑演变成了 COM 技术,其应用层面的控件技术演变成了 ActiveX,现在这个词一般用来指 MS Office 文档或者 Outlook 邮件中使用的 OLE 对象(复合文档)。
DDE -> OLE 1.0 -> COM -> OLE 2.0-> ActiveX
OLE 1 已经成为历史,OLE 2 基于 COM 实现
- COM: Component Object Model, 组件对象模型
OLE 开发过程中,其核心思路和底层逻辑被提取出来,成为了一种通用的跨进程通信技术。
DCOM: 分布式组件对象模型
三种分布式对象技术 (OO RPC): CORBA, COM/DCOM, JavaBean/EJB - ActiveX:
微软有段时间非常喜欢 Active 这个词,就像有段时间热衷 Live 一样。
Active 这个,Active 那个,最后统一叫做 ActiveX,可以囊括所有 COM 相关技术。现在这个词一般用来单指曾广泛用于浏览器的 ActiveX 控件(原来的 OLE 控件技术)。 - MFC: Microsoft Foundation Classes, Microsoft 基础类库
将底层 C 接口(Win32API)封装成面向对象的 C++ 接口。 - ATL: Active Template Library
微软的 C 模板技术,简化了 COM 开发
不知道和 C STL (Standard Template Library) 有什么关系。 - ASP: Active Server Pages
可以结合 HTML, ASP 指令, COM 控件,支持 JScript 和 VBScript
ASP.NET: 一种新技术,支持所有 .NET 语言,需要编译
概念
.NET Framework
.NET 框架是一种运行在 Windows 上的虚拟机编程平台,以通用语言运行库(Common Language Runtime,CLR)为基础,支持多种语言(C#、F#、VB.NET、C++、Python等)的开发。
开源版本: Mono
2016/06, 微软推出 .NET Core (后来又简称为 .NET), 是 .NET 框架的继承者,目标是跨平台,支持 Windows, MacOS, Linux。
项目基于 MIT 协议开源,还成了 .NET 基金会。
- .NET 平台标准 (.NET Platform Standard -> .NET Standard)
- CLI: Common Language Infrastructure 共同语言架构
分成 - 通用类型系统(Common Type System, CTS)
- 元数据系统(Metadata)
- 通用语言规范(Common Language Specification, CLS)
- 虚拟执行系统(Virtual Execution System, VES)
- 通用中间语言(Common Intermediate Language, CIL)
- 框架(Framework)
- CLR: Common Language Runtime 共同语言运行环境
就是 .NET 虚拟机 + 基础类库,相当于 Java 的 JRE
将各种不通的语言编译成 MSIL 中间语言,然后再转换成 Native Code
包括一个 JIT 编译器,.NET Framework 4.6 和 .NET Core 之后叫做 RyuJIT - BCL: Base Class Library, .NET 基础类库
- FCL: Framework Class Library, 框架类库
包括:BCL
.NET Core 中被 CoreFX 代替
语言
- VB.NET
- C#
- F#
- C++/CLI
- PowerShell
没有前途的语言:
- J#
- JScript.NET
工具
- Visual Studio
- NuGet
- MSBuild
相关知识点
数据库
- Open DataBase Connectivity, ODBC
屏蔽不同 DBMS 的差异。 - OLE DB
COM 接口,进一步屏蔽所有数据源的差异 - ActiveX Data Objects, ADO
封装 ODBC 和 OLE DB 为 OO 中的对象 - Universal Data Access, UDA, 统一数据访问
微软的数据访问 API,概念而已,其核心是 MDAC - Microsoft Data Access Components (MDAC)
技术组合,ODBC + OLE DB + ADO
ADO.NET
.NET 中的一套数据访问技术,和 ADO 功能类似,但没有继承关系。
- ADO.NET Entity Framework: 基于 ADO.NET 的 ORM
- ADO.NET Data Services
支持的数据源
- SQL Server
- Oracle
- OLE DB
- ODBC
LINQ
Language Integrated Query
语言集成查询
似乎就是常见的 ORM 中的查询语法。
参考资料与拓展阅读
- Microsoft Docs, 使用 Win32 API 的桌面 Windows 应用入门
- InfoQ, 新的.NET 编译器——RyuJIT 项目
- 知乎, CLR 相比 JVM有哪些先进之处? - RednaxelaFX的回答
- 维基百科, ActiveX
- 维基百科, 对象链接与嵌入 OLE
- 维基百科, 动态数据交换 DDE
- 维基百科, Active Server Pages
- 维基百科, .NET
- 维基百科, .NET框架
- 维基百科, Microsoft Data Access Components