目录 |
一,.NET Framework概述
.NET Framework(.NET框架,读音:dot net)是一种主要运行于Microsoft Windows上的软件框架。它包括一个巨大的库,提供多种编程语言(C#、VB.NET、C++、Python等)的互操作(可使用其他语言编写的代码)。.net程序运行于一种名为CLR(公共语言运行时,Common Language Runtime)的软件环境,即一种应用虚拟机,提供了诸如安全性、内存管理,异常处理等重要服务。这个类库和CLR共同组成了.NET Framework。
Sun公司的Java 编程语言和Java平台,企业版技术是.NET平台的竞争对手之一,它们有很多概念也是互通的。
C# Vb.net Sharpdevelop .net开发框架 Mono开发
Silverlight平台 Silverlight Platform: Silverlight(Wpf/e)
二,版本历史
1998年底,因为Windows DNA平台下的COM(Component Object Model)只提供二进制层面的统一,而无法描述类型信息和工具支持信息。微软以COM为基础,并且利用更灵活的运算方式将所有组件结合在一起,借鉴Java而提出用“元数据”来克服该缺点,并放入到组件当中成为CLR(Common Language Runtime,公共语言运行时,新一代COM虚拟机)。而在该虚拟机CLR上运行的类型系统和指令集等语言规范就是CLI(Common Language Infrastructure,公共语言基础设施)。同时,微软开发了CLI的一个实现,这就是大名鼎鼎的.NET了。
MS在1990年代开始开发.NET框架,开发名为NGWS(Next Generation Windows Services)。于2000年末发布了.NET 1.0 beta版。
.NET Framework 3.0由Windows Server 2008和Windows Vista自带,3.5由Windows 7自带,都可安装于Windows XP和Windows Server 2003。
.NET Framework还包括移动版和嵌入系统版。一个精简的.NET Compact Framework可用于Windows CE(安装Windows Mobile的智能手机)操作系统。.NET Micro Framework用于资源严重有限的小型设备。
| 版本 | 完整版本号 | 发布日期 | 对应Visual Studio | 对应Windows | 说明 |
|---|---|---|---|---|---|
| 1.0 | 1.0.3705.0 | 2002-02-13 | Visual Studio .NET(2002) | Windows XP Tablet and Media Center Editions | 最初的 .NET 构架,它可以以一个独立的可重新分发的包的形式或在一个软件开发工具包集中被获得。是VS.NET的发行版的一部分 |
| 1.1 | 1.1.4322.573 | 2003-04-24 | Visual Studio .NET 2003 | Windows Server 2003 | 首个被Windows Server 2003所内置的.NET框架版本,改进了安全性和大量API,内建对mobile ASP.NET、ODBC和Oracle数据库、IPv6的支持,发布.NET Compact Framework |
| 2.0 | 2.0.50727.42 | 2005-11-07 | Visual Studio 2005 | Windows Server 2003 R2 | 组件都包含在 VS2005和SQLServer2005里面,大量变更的新的 API 让需要管理.NET 运行库实例的非 .NET 的应用程序可以做到这点。推高SQLServer在.NET下的效率 |
| 3.0 | 3.0.4506.30 | 2006-11-06 | Windows Vista, Windows Server 2008 | 曾用名WinFX,依然使用.NET Framework 2.0版本的公共语言运行库(CLR),并加入了适应未来软件开发方向的4个框架:WPF/E.WCF,WF。Windows CardSpace | |
| 3.5 | 3.5.21022.8 | 2007-11-19 | Visual Studio 2008 | Windows 7, Windows Server 2008 R2 | 自动包含.NET 2.0 SP1和3.0 SP1,增强了安全性修复,新增少量类库,提供新编译器,支持语言整合查询LINQ,扩展方法属性,表达式目录树 |
| 4.0 | 4.0.30319.1 | 2010-04-12 | Visual Studio 2010 | Windows 7(Recommended) | 主要增加了并行支持 |
| 4.5 | 4.5.40805 | 2012-02-29 (consumer preview) | Visual Studio 11 | Windows 8, Windows Server 8 |
2001年12月CLI和C#通过并成为ECMA标准,使用者可免费使用这两项专利。但Windows Forms、ADO.NET及ASP.NET目前还不包括在内。 2007年10月起,.NET Micro Framework源代码逐渐开放。开发人员可以访问.NET Micro Framework的Base Class Libraries和CLR代码,不过TCP/IP栈和Cyptography库都不在开源之列。WCF(Windows Communication Foundation),WF(Windows Workflow Foundation),LINQ(Language Integrated Query )也将开放用于调试整合。
.NET_Framework_3.0包含:
* Windows Presentation Foundation(WPF):提供更佳的用户体验,用来开发Windows Forms程序以及浏览器应用程序(参见WPF/E). * Windows Communication Foundation(WCF):提供SOA(面向服务的软件构架)支持的安全的网络服务(Web Service)框架。 * Windows Workflow Foundation(WF): 提供一个设计与发展工作流程导向(Workflow-oriented)应用程序基础支持的应用程序接口。 * Windows CardSpace:提供一个SSO的解决方案,每个使用者都有各自的 CardSpace。
Silverlight和Shared Source Common Language Infrastructure,Mono,DotGNUPortable.NET等部分实现跨操作系统功能。
微软的Shared Source Common Language Infrastructure是.NET Framework 的一个源码共享的实现版本。可运行于Windows XP,FreeBSD,和Mac OS X10.2。
Mono是一个开源的 .NET 运行时和开发库实现版本,可以运行于Windows,Linux,FreeBSD,Unix,Mac OS X和Solaris。Mono 项目支持ASP.NET, ADO.NET和Windows Forms库,支持C#和VB.net编译,还包含了一些新的库和技术的开发:Gtk,xSP,MonoDevelop,Novell.Directory.Ldap 类库,SerialPortNet,Streaming SIMD Extensions (SSE)
Microsoft's .NET Micro Framework主要用于资源严重不足的小型设备,包括.NET CLR的精简版,支持C#,部分支持VB.net(albeit破解),.NET BCL的子集(70个类420个方法),一个松散地基于WPF的GUI框架,和一些针对嵌入式设备的库。
Portable.NET (part of DotGNU) 提供CLI的实现,部分BCL,一个C#编译器,跨多CPU和多操作系统。Microsoft's Shared Source Common Language Infrastructure是一个收费的CLR实现,但它自从2006年 win xp sp2版后就没再更新,所以不支持.net fromwork 2.0的所有功能。CrossNet是一个CLI的实现,BCL的部分实现,开源免费,但似乎自2007年后就不再活跃。
三,设计特点和不足
1,设计特点
1,互操作性:新旧应用之间可以互相访问。System.Runtime.InteropServices和System.EnterpriseServices命名空间提供对COM组件的访问,P/Invoke功能可以访问其它.net环境外的应用。
2,CLR虚拟机
3,语言独立性:CTS(Common Type System)定义了.net下所有数据类型和开发结构、以及CLI(定义了.net编程语言之间的互操作),让程序设计人员能够利用C#等中间语言来编写程序,这类中间语言和其他编程语言的函数库、使用方式、类及名称都相同。因此,设计人员可以专注于程序算法上的设计,而避免奔波于不同语言的学习。以往的程序设计人员,要么利用Visual C++的MFC(Microsoft Foundation Classes),要么通过Visual Basic APIs(Application Programming Interfaces)来开发项目,没有统一的标准,没有共同的开发结构。为了满足不同项目的开发需求,程序设计人员得不断地学习各种语言的开发结构,而不能专注于程序本身上的设计。.NET Framework的出现则改变了这种混乱的局面,程序员通过整合自己的代码和.NET Framework以及其他类库来生产软件。.NET Framework致力成为Windows平台开发新软件的主流,为此MS提供了超级流行的IDE即Visual Studio.
4,基类库:
5,简化部署:
6,安全性增强:高效能的网页组件体系简化了编程工作,具有更好的安全性。
7,可移植性:虽然目前.net还只能主要用于WINDOWS环境,但它的设计目标是与操作系统无关的。.NET Framework通过建立一个可以跨不同编程语言的APIs(Application Programming Interfaces),从而能够在不同编程语言间进行连接、错误处理及编程调试(Debug)工作。通过该平台,程序设计人员可以将开发好的编程,顺利移植到不同的平台上进行运行,还可以转化成为网络服务等。这些革新使得程序设计员可以同时进行Windows应用软件和网络应用软件以及组件和服务(web服务)的开发。
2,不足与非议
1,托管环境下运行的应用会比直接访问系统资源的类似应用更占系统资源。
2,未混淆的托管CIL二进制代码比原生二进制码更容易逆向工程。对交易安全和版权控制不利,所以VS 2002起MS就提供了一个代码混淆工具Dotfuscator Community Edition。
3,新版.net框架未被系统自带时就需要先安装,.NET 3.0有54 MB,.NET 3.5有197 MB,.NET 3.5 SP1有250 MB(如果是通过网络安装则XP下安装包为50M,VISTA下30M左右)。.NET 4.0较小为54M(不带旧版包)
4,.NET Framework目前不支持Streaming SIMD Extensions (SSE),而Mono支持。
5,虽然构成.NET的标准是天生跨平台的,但完全版的.NET目前只在WINDOWS上得到支持.其它子集如XNA for Windows, Xbox 360 和 Windows Phone 7, Silverlight for Windows and Mac OS X. 还有base class library (BCL)并未完全开放存在版权争议,而且部分BCL具有些WINDOWS特有的功能与行为,所以第三方出品的CLR, base class libraries实现和编译器. 之间存在兼容性问题.
四,.NET Framework架构
1,CLI(Common Language Infrastructure)与CLR
CLI(Common Language Infrastructure)的目标是给应用开发和执行(异常处理,垃圾回收,安全性,互操作性)提供一个与语言无关的中间平台。CLI的实现就是CLR(Common Language Runtime)
CIL代码位于.NET assemblies(程序集). 按规范程序集以PE(Portable Executable)格式保存,在WINDOWS里面通常为DLL和EXE文件。程序集可包含一个或多个文件,但至少有一个包含程序集元数据的manifest,程序集的全名不同于磁盘上的文件名,而是由它的简文本名,版本号,语言文化,公钥等。如果两个程序集的全名除了版本号不同以外全部相同,则它们被视为同个程序集。程序集作者使用私钥来做强命名。公钥则定义了程序集的签署的公钥。只有密钥对的制作者(一般就是开发者)可以把拥有相同强命名的程序集签署为旧版本。强命名必须在Global Assembly Cache里添加程序集。
CLR的主要功能是完成管理内存、线程执行、代码执行、代码安全验证、编译,以及其他系统服务。CLR的体系结构如图1-16所示。 CLR中一个非常重要的组成部分是通用语言系统CLS。通过CLS,不同的编程语言的数据类型被转换为标准数据类型。 CLR可以提高开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。
CLI运作图
.NET的初级组成是CLI和CLR。CLI是一套运作环境说明,包括一般系统、基础类库和与机器无关的中间代码,全称为通用中间语言(CIL)。CLR则是确认操作密码符合CLI的平台。在CIL执行前,CLR必须将指令及时编译转换成原始机械码。
所有CIL都可经由.NET自我表述。CLR检查元数据以确保正确的方法被调用。元数据通常是由语言编译器生成的,但开发人员也可以通过使用客户属性创建他们自己的元数据。
如果一种语言实现生成了CLI,它也可以通过使用CLR被调用,这样它就可以与任何其它.NET语言生成的数据相交互。CLR也被设计为操作系统无关性。
当一个汇编体被加载时,CLR执行各种各样的测试。其中的两个测试是确认与核查。在确认的时候,CLR检查汇编体是否包含有效的元数据和CIL,并且检查内部表的正确性。核查则不那么精确。核查机制检查代码是否会执行一些“不安全”的操作。核查所使用的算法非常保守,导致有时一些“安全”的代码也通不过核查。不安全的代码只有在汇编体拥有“跳过核查”许可的情况下才会被执行,通常这意味着代码是安装在本机上的。
通过.NET,你可以用SOAP和不同的web服务进行交互
2,.NET Framework类库
.NET Framework基本类库提供用户界面,数据访问,数据库连接,加密,WEB开发,算法,网络通信等功能。用于建立Web服务器程序或Windows桌面应用程序等。
BCL(Base Class Library)和部分FCL(Framework Class Library)对所有.net编程语言提供服务。BCL封装了诸如文件读写,图形渲染,数据库互动,XML处理等通用函数。
类库通过命名空间的分层来组织分类,大多内置APIs都是System.*或Microsoft.*的一部分。
Base Class Library (BCL)包括一个核心类库的.net小型子集,提供CLR的基本API服务,mscorlib.dll中的类和System.dll、System.core.dll中的部分类,就是BCL的一部分。BCL在.net及其它实现(.NET Compact Framework, Microsoft Silverlight,Mono)中都提供服务。
BCL中的命名空间包括: System System. CodeDom System. Collections System. Diagnostics System. Globalization System. IO System. Resources System. Text System. Text.RegularExpressions
Framework Class Library(FCL)是BCL的扩展集,包括.net的全部类集。如Windows Forms, ADO.NET, ASP.NET, Language Integrated Query, Windows Presentation Foundation, Windows Communication Foundation等. FCL比C++标准库要大得多,和Java标准库差不多规模。
.NET Framework类库有两大类别;
CLR(Common Language Runtime,公用语言运行库);
ASP.NET。
如图是基于.NET Framework开发的托管代码的常见应用形式:
有的程序没有自己定义的类,也不使用.NET Framework提供的类库的类,所以直接和CLR打交道,再在操作系统支持下运行。
有的程序没有自己定义的类,使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。
有的程序有自己定义的类,但不使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。
有的程序有自己定义的类,使用.NET Framework提供的类库的类,然后和CLR打交道,再在操作系统支持下运行。
提示:.NET的托管代码都必须使用CLR,至于类库则不一定。但实践中很少有不使用类库的程序。
3,.NET平台编程语言
CLI被设计成支持任何对象导向的程序语言,分享共同对象模型与大型共同类别库。.NET支持超过40种程序语言。这些编译器大都是免费的(厂商卖的是IDE)。大部分的语言都做了重大改变以搭配.NET Framework。厂商通常利用这个机会来同时改变语言的其它特性。
A,微软开发的.NET平台编程语言,
- C# ,C#,一个以C++和Java语法为基础开发的一个全新的对象导向语言,是.NET开发的首选语言。
- Vb.net,Visual Basic .NET,一个加强了对象导向支持的,支持多线程的Visual Basic版本。
- C++/CLI,一个C++的 .NET 平台版本变种。
- JScript .NET,一个编译版本的 MicrosoftJScript语言。
- J#,一个对应于Java和 J++(微软自己开发的Java变种)的 .NET 平台版本,但是有由于知识产权,目前微软公司已经停止其开发应用。
- F#,ML语言家族的一员。
B,第三方使用 .NET 的编程语言,Ada,APL,Boo(基于Python),COBOL,Component Pascal(基于部件的 Pascal,比起Pascal来更接近于Oberon),Delphi 8 and Delphi 2005,Eiffel,Forth,FORTRAN,IKVM,Java。,IronPython(基于Python),Lexico(基于西班牙语的面向对象编程语言),Lisp,Mercury(Mondrian为了便于脚本部件编程而开发的功能型语言),Nemerle函数式/指令式混合语言,Oberon,Perl,Python,PHP,RPG,Ruby,Smalltalk,Tcl
4,安全性
.NET安全机制主要包括两个功能:
CAS(Code Access Security)基于和程序集相关的证书,一般证书就是程序集的源码,CAS根据证书来决定对代码的权限。
validation和verification:每个堆栈里的每个方法的每个程序集都必须确认是否有所需权限,如果未经授权则抛出安全性异常。
5,内存管理
CLR自动管理内存分配与释放,让开发者省心不少。从managed heap(托管堆,一个CLR管理的内存池)中分配内存给.NET 类型(对象)的实例,只要存在对该对象的引用,不论是直接引用或通过对象的图形引用,就表示该对象在使用中。当不存在任何对该对象的引用时,该对象就被视为垃圾对象,可以回收。.NET有一个GC(Garbage Collector)垃圾回收器定期于独立线程中运行,会自动列出不再使用的垃圾对象并回收对应内存。
.NET的GC是一个非确定的,紧凑的,标记和扫描型的垃圾回收器。GC只在指定数目内存被使用了或系统内存负荷较重时运行。每个.NET应用都有许多root,即托管堆里该托管对象的指针。包括静态对象、局部变量、当前范围的方法参数的引用和与CPU注册相关的对象。当GC运行时,它暂停该应用程序,不断列举出每个ROOT的引用对象中的可以访问到的对象,标记为可访问。它使用.net元数据和反射去发掘和遍历一个封装对象中的对象,然后它使用反射列举出堆(不断初始和分配)中的所有对象,所有未对标记为可访问的对象就是垃圾。这就是标记阶段。因为垃圾对象占用的内存不会再有使用,所以被视为空闲内存。这就在不断初始化的对象之间留下了内存碎片。使用中的对象就会被自动压实使内存地址再次连续。因为移动而变得无效的对象引用也会被GC自动更新反射到新的正确地址。当GC运行完毕,该应用程序又会继续运行。
.NET是一代一代地使用GC。所有对象都被赋予一个Generation代。最新创建的对象属于Generation 0,生存了一个GC周期的对象被标记为Generation 1,以此类推。高代对象的回收频率要低于低代对象。这可增加回收效率。因为较老对象通常拥有较长的生命周期,这样就减少了GC运行时的工作量。
.NET教程
1,dotnet测试
Watin——Web Application Testing in .Net
ASPUnit看起来WatiN版本更高,功能更多
2,dotnet优化
优化:ASP.net程序的性能优化的手段:对于性能调优,几乎所有专家的建议都是:如果没有确切的性能测量,就不要进行性能调优。没有基准性能测试的调优基本上除了让系统的代码变的乱七八糟之外不会有其他好处,你费尽心思把一个算法从0.1秒提高到0.01秒得到的效果往往会被一个糟糕的select语句彻底淹没。
1.数据库优化,包括表结构优化、索引优化、SQL语句优化、存储过程优化
对于OA/业务管理系统类型应用来说,数据库优化往往是关键点,原因有几点:
1).对数据库的CRUD是最这些系统最常见的操作。
2).对数据库系统的操作往往会引起磁盘I/O(因为数据库文件和日志都是保存在磁盘的)
3).应用对数据库系统的操作往往是跨进程的甚至跨机器的。(磁盘I/O+网络I/O,CPU再快内存再多都鞭长莫及了吧)
所以这些对数据库的操作往往是整个系统的性能瓶颈。
那么,知道了这个大方向,如何知道到底是那些SQL或者存储过程慢呢?这个就需要结合数据库的Profiler
对于SQL Server可以看看这篇文章 http://www.microsoft.com/china/msdn/library/data/sqlserver/Profiler.mspx?mfr=true
对于Oracle可以看看这篇文章 http://www.javaeye.com/post/117389
2.优化ViewState:ViewState体积比较大,对于internet应用来说,会有一定的影响。
3.使用缓存:这个我的看法和MSN Group里面的几个朋友不是很一致。MSN Group里面有个朋友认为缓存可以是一组静态变量,或者是一个缓存控制器控制的一些变量。我个人认为,这样的缓存在单服务器环境下也许有不错的性能,在多服务器环境下,这样的缓存反而会成为性能瓶颈,因为应用程序或者缓存控制器需要小心的保证多个进程的缓存内容一致。这个过程使得程序的可伸缩性大大降低。考虑一下100台服务器的Web Farm,一个进程中的缓存修改,需要通知并且确认剩下99个服务器都正确的更改了,这是一件多么可怕的事情。 对于这块,memcache是一个比较不错的解决方案,着名的wiki产品mediawiki就使用了它来做缓存服务器。memcache也有.net的client api。
4.生成静态页面(主要针对交互性不是很强的信息发布系统前端)
5.使用前置的IIS/Apache来处理对静态页面、图片、js文件的请求:网上很多介绍了,尤其是java那边,apache搭配tomcat有很多介绍。自己google一下apache iis 整合,有不少文章讲的。主要思路就是,把apache当作proxy来转发用户的请求和iis的响应。这个主要用于降低IIS的负担。将图片、静态页面、js等的转给前端的apache之后,对静态内容的缓存也更容易配置些。
6.优化算法:这个优化最复杂,和业务逻辑、数据结构联系密切,没法统一说明。效果也许最不明显。
3,.net 设计模式
NBear视频 - 4.1 基于NBear.IoC的企业级系统构架_发布时间_9_21
Mediar.framework ----对象mapping
.NET设计模式(18):迭代器模式(Iterator Pattern)
Distributed Application in .Net
4,部署.net
先安装IIS再安装.NET,因为.NET会自动配制IIS,安装时顺序确实不对
重新安装.NET:在命令行敲入cmd,然后敲入
如果是.net 3.5则为:
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regiis -i -enable
开始安装 ASP.NET (2.0.50727)。
......................
ASP.NET (2.0.50727)安装完毕。
如果是.net 4.0则为: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -i 开始安装 ASP.NET <4.0.30319>。 ...................... ASP.NET <4.0.30319>安装完毕
HRESULT 80070842 错误解决办法:
安装程序检测到操作过程中出现了一些错误。有关详细信息,请查看安装程序日志文件 C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\1\ASPNETSetup_00003.log
查看了一下日志,发现了这个错误: 2007-03-16 16:02:17 Failure Determining if we are running on a domain controller: IsDomainController failed with HRESULT 80070842: '没有启动服务器服务。 ' 在“服务”里启动Server服务,重新运行命令,通过!
“管理工具一服务”中,Server服务消失了,请问如何能找回Server服务? 依次打开“控制面板→网络连接”,而后右键单击“本地连接”,在弹出菜单中选择“属性”,再在弹出窗口的“常规”标签页中点击“安装”按钮,在弹出对话框中选择“服务→添加”,在弹出窗口的列表中选择“Microsoft网络的文件和打印机共享”即可。
5,dotnet反汇编
DLL反汇编两种方法:(1)使用ildasm和ilasm两个自带的工具,加上IL(2)使用.NET Reflector插件FileDisassembler还原代码,重新编译。
首先说一下第一种方法,使用ildasm打开项目上发过来的dll,在file下有dump菜单(如果是中文版就是文件下的转储菜单),弹出新窗口确定即可,生成后缀为.il的文件。下面就需要懂一点il语言,以前一直认为学习这个il语言没什么用,今天只能现学一把,因为问题比较小,4、5行就搞定了。保存之后,使用ilasm重新编译这个il文件。使用命令如ilasm.exe GSP_WorkflowEngine.il /dll /output=GSP_WorkflowEngine.dll,就OK了。不过在写il的时候还是碰到了很多问题,一直编译出错,还是il没有写好,看来学习il还是很多好处的。
第二种就是使用.NET Reflector插件FileDisassembler,先把这个插件下好挂上,菜单中就会出现FileDisassembler这个菜单项,打开要反编译的dll,就可以生成出源码,即使用了混淆器,要修改的问题也很容易找到,毕竟我们对自己的代码还是很熟悉的。重新建解决方案,添加需要引用的 dll,重新编译就OK了。
写在最后,这两种方法本质上原理是一致的,我个人觉得,如果对il掌握的非常好的话,第一种方法是非常爽的,即使是在项目现场,对一些小问题修改都是相当轻易的。由此还想到.net的安全性,对于非强命名的dll来说,这种il级别的修改都是有效的,但对于软件的保护是相当不利的,我们是很容易从il中找到验证正版的代码信息,直接去掉,重新编译就破解了;对于入侵者来说,也是很容易修改系统上.net程序的运行方式的。
对《防止对 Visual Basic .NET 或 C# 代码进行反相工程》的思考
.Net Remoting & XML WebServices
.NET remoting 属于行程(process)内沟通的抽象方法。 Microsoft? .NET Remoting提供一个丰富可扩充的框架给存在两个不同 AppDomain 中的 Object,使得在不同行程(行程)和不同机器中能够进行无缝地沟通。.NET Remoting 提供一种强大但简单的可程序化模型并且在执行阶段支持数据交换。
XML Web services 将基础的功能区块布署到网络的不同计算机上。开放标准的通讯协议以及人和应用程序可以透过 Web Services 整合应用程序的环境来合作。应用程序可以从不同的来源使用多个XML Web Services 来建构应用程序而不需要知道他们在哪里以及如何来运作。
ASP.NET & ADO.NET
ASP.NET 是内含于 .NET Framework 中,专门用来发展 Web 应用程序的一组类别库集。 主条目:ADO.NET
ADO.NET 是内含于 .NET Framework 中,专门处理与数据来源沟通的数据存取类别库集,被 Windows Forms 与 ASP.NET 应用程序大量使用,可说是 .NET Framework 中唯一的数据存取接口。
其他
.NET vs. Java EE
公共语言基础(CLI),通用中间语言(CIL)以及 C# 与 Sun 的 Java 虚拟机和 Java 之间有不少的相似之处,因此它们无疑是强烈的竞争者。它们两者都使用它们各自的中间码(在微软,它们叫做通用中间语言,而在 Sun,它们叫字节码)。通用中间语言被设计来实时编译(JIT),而 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
不要将网域名称中的.com、.net与这里的COM、.NET混淆在一起。
前一版软件组件技术由 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提供开发软件的独立平台,内建高度安全的网络系统,相当倚重软件组件以及组件导向程序。在这方面它完全取代前者(COM)
参见
EasyCodeEasyCode-.Net代码生成器,不错 ,只是功能有限
Excel的带样式导入导出可以试下Aspose.Cells组件,相当强大,可以带样式导出. 也可以试试NPOI
Converting WinForms => Web Forms using CodeDom Convert Windows Forms application into Asp.net Visual WebGui
京华志 ASP.NET 面试题首页 - 精华志 DBA 性能优化 WP7面试题 舆情监控 ASP.NET笔试题 2012面试题下载 - 京华志 ASP.NET 面试题 winform框架示例.rar 使用C#开发winform程序的界面框架
aspx to dll .net把aspx文件编译成dll VS2008 VS2010发布网站时如何产生固定命名的 Dll 文件 asp.net发布网站时三个选项的问题 网站发布
在ashx一般处理程序文件中不能使用session和request的问题解决办法| .ashx中的Session如何在其他页面中使用 |
手动部署onceclick应用程序问题之mage.exe和mageui.exe| 通过MageUi.exe修改通过ClickOnce发布过的WPF browser application 配置文件|
Supesoft权限管理系统(FrameWork) 1.0.9 Release|
传智播客.Net精品就业班培训专区 ? 视频教程2010版|
Visual Studio Add-Ins Every Developer Should Download Now|




