应用场景
C#框架
WPF: 界面与业务逻辑隔离,由于客户不同的业务需求,即便是前端变了也不会影响后端实际的业务逻辑。
WInform: 把所有组件对象话,可用直接拖动组件来进行快速开发。
SliverLight: 跨平台,跨浏览器插件,类似Flash。
异同点
输出结果都是客户端程序
界面渲染: winfrom一个组件一个句柄,wpf渲染和winfrom不同,可能是一个窗口一个句柄。
业务逻辑控制: winform是面向事件进行编程,而wpf是mvvm。
快速开发使用winfrom,时间周期长用wpf。
框架的可移植性
wpf和winform只能在Windows上使用,无法跨平台。
应用场景
上位机
个人使用的客户端程序
界面逻辑
界面渲染
WinForm采用GDI绘图方式,每个控件都对应一个句柄,控件和外观是微软预定好的,如果想要美化则会不是很方便。
wpf的的控件内部可以嵌套控件,可以灵活的进行美化组合,例如在Button里嵌套一个图片等的。
业务逻辑控制
WPF的组件可能没有Winform组件多的原因是,winfrom一开始就把各种应用场景的组件定义好了,用的时候直接拖就可以了,而wpf则需要根据应用场景将不同的组件组合起来变为一个单独的组件,从易用性场景来说,Winfrom更简单一些,但是从灵活性来说,wpf可能更灵活。
wpf天生支持自适应,所有在开发的过程中尽量不要将长宽高这些都写死,wpf会根据自动根据窗口大小来调整组件大小的。
wpf采用MVVM设计模式,viewModel作为填充层,对上view提供数据以及业务功能,对象Model实现数据的封装,这样做可以使得view与model进行解耦合。如下图所示,view从viewModel拿到数据或命令绑定到view,viewModel拿到数据或执行了一部分以为功能后将数据更到model中,然后view通过viewModel拿到数据展示到view中。