TOC

关于 .NET 以及其他

大学学过 C# + SQLServer,现在早已忘得差不多了,对 .NET 做个记录,存个档。

由于微软市场营销和技术研发脱钩的缘故,一种技术流行之后,它的名字就会都到处用,恨不得包含一切编程技术。所以概念可能会很混乱。

  • Win32API: Windows 操作系统提供的 API
  • DDE: Dynamic Data Exchange
    跨进程通信技术,对应的是 SUN 公司提出的 RPC
  • OLE: Object Linking and Embedding, 对象连接与嵌入
    由 DDE 演化而来,用于实现不同程序之间的相互调用

    Windows 操作系统提供了三种进程间的通信机制:
    1. 剪贴板
    2. DDE
    3. 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
支持的数据源
  1. SQL Server
  2. Oracle
  3. OLE DB
  4. ODBC

LINQ

Language Integrated Query
语言集成查询

似乎就是常见的 ORM 中的查询语法。

参考资料与拓展阅读