WinForm、wpf、silverlight三者关系

 最近在学C#.NET,基本语法学习的差很少了,接下来准备学习图形界面设计部分。可是我目前对于.NET的WinForm、wpf、silverlight这三者的关系弄的不是很清楚,通常书中不多介绍wpf和silverlight,网上搜了一下关于WinForm和wpf的区别,有的说WinForm是wpf的子集,有的说WinForm和wpf是共存关系,弄的很乱。想请教一下您这三者之间到底有什么样的关系呢?编程

  ===========================浏览器

  如下是我对这三者间关系的理解,若是不对,请业界朋友指正。编程语言

  在Windows中,诸如窗体绘制等功能由GDI实现,放在操做系统内核中。Windows Forms在底层使用的是GDI+。GDI+是GDI的“面向对象包装”,使用C++实现。.NET Windows Forms应用程序中使用的GDI+实际上是在C++实现的非托管代码之上又包了一层,从而让咱们能使用C#这样的托管编程语言调用GDI+功能绘图。性能

  WPF底层使用的是DirectX,就是一般用来开发游戏的那个DirectX。WPF与Windows Forms这二者并无什么关系。按照微软的意图,WPF是用来取代Windows Form的,因此最新的Visual Studio就使用了WPF开发界面,这是一个很明确的信号。学习

  固然,出于兼容目的,Windows Forms与WPF将长期并存,能够把它们当作是两套独立的界面技术。动画

  Silverlight在API层能够当作是WPF的子集,但事实上除了这点以外,Silverlight与WPF并无任何联系。由于Silverlight应用程序不依赖于.NET Framework,只要用户计算机(或手机)安装有Silverlight运行环境(好比用户经过互联网给浏览器添加了Silverlight插件),就能够跑Silverlight应用程序,并不要求用户安装庞大的.NET Framework。Silverlight运行时环境在API层面也能够当作是标准.NET Framework的功能子集,但它彻底是从新写过的,独立于标准的.NET Framework,虽然为了方便应用程序开发,微软努力保持二者在API层面的一致性,但并不排除Silverlight运行时环境往后会拥有全新的为.NET标准环境所不具有的功能。操作系统

  Windows Forms\WPF\Silverlight这三者实际上是独立发展的三个技术领域,只不过微软出于方便开发的目的,有意让Silverlight与WPF在应用层面开发体验(甚至包括大部分应用层代码)高度一致罢了。.net

  从开发角度来看,Windows Forms已有多年的历史,高度成熟,拥有大量的第三方控件等各类资源,若是开发“标准”与“通用”界面类型的Windows应用程序,使用它能够得到较高的开发效率和不错的运行性能。插件

  WPF的长处在于它能够开发很是“个性化”的Windows应用程序,你能够不受任何限制地实现你所能“梦想”到的各类用户界面,并且在动画等多媒体方面,WPF优于Windows Forms,另外,WPF的数据绑定机制也比Windows Forms要强大和灵活。WPF的短处在于它对计算机硬件的要求较高,对于硬件配置较低的计算机,其运行性能不如Windows Forms版本。就目前来看,WPF的最佳平台是Windows 7。设计

  Windows Forms和WPF主要用于开发桌面应用程序,Silverlight主要战场是互联网,一般用它来开发RIA的互联网应用程序,或者是跑在手机等智能移动设备上的应用程序。能够这样说,会WPF,不费太多力气,就能够转去开发Silverlight应用程序,二者实在是太类似了,特别是界面层代码,因为都使用XAML,这使咱们能够比较容易地为某一应用程序同时开发“桌面版”、“手机版”和“浏览器版”三种版本,而这三种版本其用户界面均可以拥有一致的外观和用户使用体验。

  本文来自bitfan博客,转载请标明出处:http://blog.csdn.net/bitfan/archive/2011/01/11/6128391.aspx