.NET Framework
维基百科,自由的百科全书
.NET Framework | |
开发者: | 微软公司 |
最后发行: | 版本2.0.50727.42/2005年10月27日 |
下载大小: | 22960 千字节(英语,x86) |
运行于: | Windows 98及更高版本 |
类别: | 系统平台 |
License: | Proprietary software |
由微软创制的 .NET Framework 是一个集中于快速应用程序开发(RAD)、-{zh-cn:平台无关性;zh-tw:平台独立性}-和网络透明化的软件开发平台 。.NET 是微软战略上为下一个十年对服务器和桌面软件工程的第一步。据微软所说,.NET 包含许多为促进国际互联网和内部网应用的迅捷开发而设计的技术。
.NET Framework 是微软公司继 WindowsDNA 以来的新的开发平台。.NET Framework 是以一种类似于 Java 系统的虚拟机方式运行和管理的编程平台,通过-{zh-cn:通用语言运行时;zh-tw:通用語言執行層}- (Common Language Runtime)为基础,支持多种语言(C#、VB.NET、C++、Python 等)的开发。
.NET 为编程接口(API)带来了新功能和开发工具。这些革新允许程序设计员去同时开发Windows应用软件和网络应用软件以及组件和服务(web services)。.NET 提供了新的一个 reflective 并且是面向对象的编程接口。 .NET 设计成充分得普通以致许多不同高级语言能被汇集。
.NET 平台是与 Sun 公司的 Java 编程语言 和 Java 2 Platform, 企业版 技术相竞争的一个产品,并且它们有很多概念是互通的。
为使用而特定地开发的开发环境与 .NET 平台有联系。其典型例子是 Visual Studio .NET,一个微软的-{zh-cn:集成开发环境;zh-tw:整合開發環境}-。
目录 |
[编辑] 定义
对于 .NET 的定义目前存在很大的争议。
微软定义该平台为一个“用于构架,配置,运行网络服务及其他应用程序的开发环境。该平台包括三个主要部分:-{zh-cn:公共语言运行时;zh-tw:通用語言執行層}-,框架类和 ASP.NET。”
有些人则认为它只不过是一个“用 .NET 构架编程”的普通市场产品。
[编辑] 历史
某些在 .NET 中使用的技术最初是作为微软的 Java 版本被开发的。当微软决定在 1998年中止他们对 Sun 的 Java 技术的使用时,已出现的产品 Microsoft J++(Java)被转换成了原初的 .NET 计划。来自 .NET 中的代码-{zh-cn:公共语言运行时;zh-tw:共同语言运行期}-(CLR)据说是来源于在 1996年3月12日 被微软收购的 Colusa Software 的 OmniVM。.NET 软件开发平台发行于 2002年。
[编辑] 版本
[编辑] .NET Framework 1.0
完整版本号 - 1.0.3705
这是最初的 .NET 构架,发行于 2002年。它可以以一个独立的可重新分发的包的形式或在一个软件开发工具包集中被获得。它也是第一个微软 Visual Studio .NET 的发行版的一部分(也被称作 Visual Studio .NET 2002)。
[编辑] .NET Framework 1.1
完整版本号 - 1.1.4322
这是首个主要的.NET 框架升级版本,发行于2003年。它可以以一个独立的可重新分发的包的形式或在一个软件开发工具包集中被获得。它也是第二个微软Visual Studio .NET 版本的一部分(也被称作Visual Studio .NET 2003)。它也是首个被 Windows operating system - Windows Server 2003 所内置的 .NET 框架版本。
[编辑] 自 1.0 版本以来的改进
- 内建了对 mobile ASP.NET 控件的支持。这在 1.0 版本是以附加功能方式实现的,现在已经集成到框架的内部。
- 安全方面的变更 - 使得 Windows 窗体代码以可靠的行为执行,从而可以在 Internet 环境内安全运行,并且加入了 ASP.NET 应用程序的代码安全访问功能。
- 内建了对 ODBC 和 Oracle 数据库的支持。这在 1.0 版本是以附加功能方式实现的,现在已经集成到框架的内部。
- .NET Compact Framework - 这是一个用于智能设备(例如 PocketPC 或者 SmartPhone)的 .NET 框架的子集。
- 對IPv6 的支持。
- 大量的 API 变更。如需要详细的变更列表,请查阅 GotDotNet: API Changes between versions of the .NET Framework。
[编辑] .NET Framework 2.0
完整版本号 - 2.0.50727.42 发行于2005年10月27日。
- The 2.0 Redistributable Package 免費下載 Microsoft。
- The 2.0 Software Development Kit 免費下載 Microsoft。
- 這些元件都包含在 Visual Studio 2005 和 SQL Server 2005 裡面。測試版免費下載 http://msdn.microsoft.com/getthebetas/ 通过 MSDN 宇宙版可以免费下载 RTM 版本。
[编辑] 自 1.1 版本以来的改进
- 大量的 API 变更。需要查看一个详细的清单的话,请查阅 GotDotNet: API Changes between versions of the .NET Framework。
- 一个新的 API 让需要管理一个 .NET 运行库实例的非 .NET 的应用程序可以做到这点。这个新的 API 对 .NET 运行库的各种功能,包括:多线程,内存分配,代码载入等 (详细说明) 提供了很好的控制。它最初是为 Microsoft SQL Server 能够有效率的使用 .NET 运行库而设计的,因为 Microsoft SQL Server 拥有它自己的日程管理器和内存管理器。
[编辑] .NET Framework 3.0
曾用名WinFX,将随Windows Vista一同发布。依然使用.NET Framework 2.0版本的CLR(公共语言运行时),并加入了适应未来软件发展方向的4个框架:
- WPF(Windows Presentation Foundation): 提供更佳的用户体验, 用来开发Windows Forms程序以及浏览器应用程序(参见WPF/E).
- WCF(Windows Communication Foundation): 提供SOA(面向服务的软件构架)支持的安全的网络服务(Web Service)框架.
- WF(Workflow Foundation).
- InfoCard.
[编辑] Enterprise infrastructure
.NET presents a platform-independent target for software development, with many built-in features including Internet integration and features intended to enhance security. It relies fully on software componentry and the component-oriented programming paradigm. In this respect it largely replaces the former Component Object Model (COM).
The two primary components of .NET are the Common Language Infrastructure (CLI) and the Common Language Runtime (CLR). The CLI is a set of specifications for a runtime environment, including a common type system, base class library, and a machine-independent intermediate code known as the Common Intermediate Language (CIL). The CLR provides a platform for running code that conforms to the CLI; before CIL can be executed, the CLR must translate it (typically via just-in-time compilation) into native machine code.
All CIL is self-describing through .NET metadata. The CLR checks on metadata to ensure that the correct method is called. Metadata is usually generated by language compilers but developers can create their own metadata through custom attributes.
If a language implementation generates CIL, it can be hosted using the CLR and can then interact with data produced by any other .NET language. CLR is also designed to be operating system independent.
Code is housed in .NET assemblies, which for the Windows implementation means a Portable Executable (PE) DLL or EXE file. Assemblies are the .NET unit of deployment, versioning and security. The assembly can be made up of one or more files, but one of these must contain the manifest, which has the metadata for the assembly. The complete name of an assembly contains its PE file name, version number, culture and public key token; it must contain the PE name, but the others are optional. The public key token is a 64 bit hash of the public key of a public-private key pair, and is used to ensure the uniqueness of the assembly name. An assembly that has a public key token is said to have a strong name. This naming scheme means that assemblies can be uniquely identified by the CLR, and when combined with the Global Assembly Cache, allows multiple versions of the same library to exist on the same machine without danger of the wrong version being loaded.
.NET has its own security mechanism, with two general features: code access security, and validation and verification. Code access security is based on evidence that is associated with a specific assembly. Typically the evidence is the source of the assembly (whether it is installed on the local machine, or has been downloaded from the intranet or Internet). Code access security uses evidence to determine the permissions granted to the code. Other code can demand that calling code is granted a specified permission. The demand causes the CLR to perform a call stack walk: every assembly of each method in the call stack is check for the required permission and if any assembly is not granted the permission then a security exception is thrown.
When an assembly is loaded the CLR performs various tests. Two such tests are validation and verification. During validation the CLR checks that the assembly contains valid metadata and CIL, and it checks that the internal tables are correct. Verification is not so exact. The verification mechanism checks to see if the code does any thing that is 'unsafe'. The algorithm used is quite conservative and hence sometimes code that is 'safe' is not verified. Unsafe code will only be executed if the assembly has the 'skip verification' permission, which generally means code that is installed on the local machine.
With .NET you can interact with different Web services using SOAP.
[编辑] Standardization and Licensing
西元2000年八月,微軟、惠普和英特爾共同制定 CLI 和 C# 程式語言的標準規格。西元2001年十二月,以上兩者通過並成為 ECMA 標準規格。(ECMA 335 and ECMA 334). ISO followed in April, 2003 (ISO/IEC 23271 and ISO/IEC 23270).
This is a calculated risk, but it may encourage standards-compliant implementations, to provide an ongoing bridge for non-Windows software to be converted to Microsoft .NET. One group promoting this as a standard is the International .NET Association (INETA).
While Microsoft and their partners hold patents for CLI and C#, ECMA and ISO requires that all patents essential to implementation be made available under "reasonable and non-discriminatory (RAND) terms." The companies have agreed, instead, to make the patents available under "royalty-free and otherwise RAND terms."
[编辑] .NET vs. Java EE
公共语言基础(CLI),公共中间语言(CIL)以及 C# 与 Sun 的 Java 虚拟机和 Java 之间有不少的相似之处,因此它们无疑是强烈的竞争者。它们两者都使用它们各自的中间码(在微软,它们叫做公共中间语言(CIL),而在 Sun,它们叫字节码)。CIL 被设计来实时编译, 而 Java 的字节码在最初的时候则是设计成用于解释运行,而非实时编译。.NET 现在只在 Windows 上被完美地支持,而 Java 则可在很多平台上被完好支持。然而,现在一些正在开发中的实现版本例如 Mono 或者 Shared source CLI 可以用于在类 Unix 操作系统例如 Linux,FreeBSD 和 Mac OS X上运行 .NET 应用程序。Sun 的一个产品,J2EE 提供与微软的一些捆绑于 Windows 中的技术例如 COM+(先前的 MTS)和 MSMQ 等效的功能。
Java和.NET可經由IKVM, 一個在.NET平台上實作的Java虛擬機作更多的溝通。
Java有其專門的遠端程序呼叫技術 RMI (Remote Method Invocation), RMI的另一版本 RMI-IIOP更可相容CORBA。
[编辑] .NET vs. COM
前一版 軟體元件 技術由 Microsoft 所提出的 COM,該技術被用來建立高度可調整(large-scale)的軟體系統上,使用 COM+ 或 MTS 對於傳統分散式元件有強化的作用。當 .NET 將 COM-objects 封裝成 .Net 元件以及將.Net元件封裝成 COM-objects 後,Microsoft 分別將他命名為 Runtime Callable Wrapper (RCW) 和 COM Callable Wrapper (CCW)。很明顯的,Microsoft 最終將以 .NET 全面取代 COM 成為軟體元件的架構。Microsoft 希望開發者能夠在 Win32 平台上使用 .Net 取代 COM,而已經存在的服務則透過抽象介面來使用(如:目前交易的 .Net 元件仍然使用 COM+)。
[编辑] .Net Remoting & XML WebServices
.NET remoting 屬於行程(process)內溝通的抽象方法。 Microsoft® .NET Remoting 提供一個豐富可擴充的框架給存在兩個不同 AppDomain 中的 Object,使得在不同行程(Process)和不同機器中能夠進行無縫地溝通。.NET Remoting 提供一種強大但簡單的可程式化模型並且在執行階段支援資料交換。
XML Web services 將基礎的功能區塊佈署到網路的不同電腦上。開放標準的通訊協定以及人和應用程式可以透過 Web Services 整合應用程式的環境來合作。應用程式可以從不同的來源使用多個XML Web Services 來建構應用程式而不需要知道他們在哪裡以及如何來運作。
[编辑] .NET 的語言
CLI被設計成支援任何物件導向的程式語言,分享共同物件模型與大型共同類別庫。.NET支援超過40種程式語言。這些編譯器大都是免費的(廠商賣的是IDEs)。
大部分的語言都做了重大改變以搭配.NET Framework。廠商通常利用這個機會來同時改變語言的其他特性。
[编辑] 微软开发的.NET平台编程语言
- Visual C#,一个以 C++ 和 Java 语法为基础开发的一个全新的面向对象编程语言,是.NET开发的首选语言。
- Visual Basic .NET,一个加强了面向对象支持的,支持多线程的 Visual Basic 版本。
- C++/CLI,一个C++ 的 .NET 平台版本变种。
- JScript .NET,一个编译版本的 Microsoft JScript 语言。
- J#,一个对应于 Java 和 J++(微软自己开发的 Java 变种)的 .NET 平台版本。
[编辑] 第三方使用 .NET 的编程語言
- Ada,参阅 A#。
- APL
- Boo,基于 Python。
- COBOL
- Component Pascal,基于部件的 Pascal,比起 Pascal 来更接近于 Oberon。
- Delphi 8 and Delphi 2005
- Eiffel
- F#,ML语言家族的一员。
- Forth
- FORTRAN
- IKVM,Java。
- IronPython,基于 Python。
- Lexico,基于西班牙语的面向对象编程语言。
- Lisp
- Mercury
- Mondrian 为了便于脚本部件编程而开发的功能型语言。
- Nemerle 函数式/指令式混合语言。
- Oberon
- Perl
- Python
- PHP
- RPG
- Ruby
- Smalltalk
[编辑] ASP.NET & ADO.NET
[编辑] 可供选择的实现版本
微软的 .NET Framework 是 .NET 技术的旗舰级实现版本,在此之外还有一些其它实现版本。
- 微软的 Shared Source Common Language Infrastructure 是微软的 .NET Framework 的一个源码共享的实现版本。它可运行于 Windows XP,FreeBSD,和 Mac OS X 10.2。
- Mono 是一个开源的 .NET 运行时和开发库实现版本。Mono 现正由 Ximian(Novell, Inc. 的一部分)和开源软件开发社区负责开发。它正迅速发展成熟,现已经包含了对 ASP.NET 和 ADO.NET 的支持,同时也正在加强对 Windows Forms 库的支持。它提供了一个 C# 编译器,而一个 VB.NET 编译器现在也已经处于 pre-beta 阶段。Mono 项目还包含了一些新的库和技术的开发:
- Gtk#: 一个 GTK+ GUI 工具包的 .NET 封装。
- XSP: 一个用 C# 编写的支持运行 ASP.NET 应用程序的网页服务器软件。
- MonoDevelop: SharpDevelop的一个移植版本, 是一个符合GPL 标准的面向 Gtk# 和 Mono 的 .NET 集成开发环境。
- Novell.Directory.Ldap 类库: Lightweight Directory Access Protocol (LDAP) for .NET 的一个免费的实现版本。
- SerialPortNet: A serial port library for .Net & Mono implementing .NET 2.0 specifications.
- DotGNU Portable.NET 不及 Mono 成熟,这得归咎于 Portable.NET 并不是在最初的时候就使用了微软的开发框架。
[编辑] 外部链结
- 微软公司 .NET Framework 的主页。
- 中国著名的 .NET 开发 Blog 站点博客堂。
- 中国专注于 .NET 技术的 Blog 站点博客园。
- 北京 .NET 用户协会 INETA
- 青岛微软开发者俱乐部 INETA
- 微软 MSDN 关于 .NET Framework 的*入门概述
- 微软公司的官方 .NET 资源
软件家族: | MS-DOS | 操作系统Windows | 办公系统Office套件 | Web浏览器IE | 集成开发环境Visual Studio | 多媒体播放器Windows Media PLayer | MS SQL数据库服务器 | Exchange Server |
操作系统: | Windows 1.0 | Windows 2.0 | Windows 3.x | Windows 95 | Windows 98 | Windows Me | Windows XP | Windows Vista | Windows NT | Windows 2000 | Windows Server 2003 | Windows Server "Longhorn" | Windows Vienna | Windows Mobile | Pocket PC | Windows CE | Windows Neptune |
Office: | Word | Excel | PowerPoint | Outlook Express | Access | FrontPage | Visio |
网络服务: | MSN | MSNBC | Hotmail | MSN Messenger | Windows Messenger | Microsoft Outlook |
Windows Live: | Windows Live ID | .NET Messenger Service | Windows Live Messenger | Microsoft Office Live | FolderShare |
技術: | .NET | ASP | ASP.NET | DirectX | VBScript | Visual Basic .NET | C# | WMV | WMA | 信賴運算 |
人物: | 比尔·盖茨 | 史蒂夫·巴爾默 | 保罗·艾伦 | 傑·阿拉德 |
遊戲: | Xbox | Xbox 360 | -{zh-cn:帝国时代;zh-tw:世紀帝國}- | 微軟模擬列車 | 微軟模擬飛行 |