标签:log 架构 lsp 经验 res rand source 实现 最好
2008年第一次在WPF中使用MVVM模式之后。就一直热衷于耦合隔离、模块化与重构、UI和逻辑分离、单元測试以及后面的领域模型。谈及MVVM模式,自己也开发过一套框架,但没有长期更新和维护,所以索性就一直使用Prism和MVVM Light。到2012年的时候,看到HTML5的大行其道和Silverlight的衰落,果断把主要精力投入到ASP.NET MVC和Knockout的开发和研究其中,虽然Knockout比較easy上手且方便使用,但总认为没有在WPF和Silverlight中使用MVVM那么酣畅淋漓。
WPF/Silverlight | Web | |
MVVM框架 | · Prism · MVVMLight · Caliburn(Caliburn.Micro) · MVVM Helpers · Cinch · MVVMFoundation | · AngularJS · Knockout (or use Durandal) · Backbone.js · Ember.js · Epitome · Agility.js |
虽然后面尝试过其它框架。比方通过Durandal 实现SPA让我之前对Knockout的种种不便有所改观。但始终还是有所缺憾,直至如今使用Angular,尤其是Angular + TypeScript才发现一切问题都不复存在了。
(之前使用WPF/Silverlight的最大问题事实上是非常难招到合适的人员做美工和设计。由于非常少人会专门投入到Blend和XAML的研究其中,但如今使用Web就会发现资源是那么的丰富,无论是人力资源还是开源社区)
功能 | WPF/Silverlight | AngularJS |
UI | XAML | HTML+CSS |
设计工具 | Design/Blend and Visual Studio | All professional design tools |
控件模板和自己定义控件 | Control Templates or Custom Control | Custom Directives (Element) |
动画 | System.Windows.Media.Animation | CSS3 Animations and/or JavaScript via ngAnimate |
样式和模板 | XAML/Resources | CSS3 and LESS |
样式继承和关联 | Implicit Styles and/or BasedOn | LESS Mixins |
转换和过滤 | IValueConverter | Filters |
绑定Model到UI | ViewModel and DataContext | Controller and Scope |
服务重用 | Prism Service Locator | Custom Services/Service Factory |
事件 | Routed Events | $emit and $broadcast |
模块化 | MEF and/or Prism Module Catalog | Angular Modules |
Services | WCF or WCF RIA Services | RESTful services (accessed via the Angular $http/$resource Services) |
导航与路由 | UriMapper | Routing |
内部组件通信 | Prism Event Aggregator or Messager | Shared Services |
视频 | MediaElement | HTML5 Video Element |
脱离浏览器执行 | Yes | Yes, via Chrome Apps |
封装UI逻辑 | Behaviors | Custom Directives (Attribute) |
UI与逻辑分离 | Control or Data Templates | CSS/LESS |
跨域请求 | Access-Policy | CORS |
单向数据绑定 | BindingMode.One | Ng-Bind |
双向数据绑定 | BindingMode.TwoWay | Ng-Model |
单向数据源绑定 | BindingMode.OneTime | Ng-Model |
开源模板 | Modern UI or MahApps | Bootstrap or Foundation |
浏览器支持 | Need silverlight plugin or XBAP | All supported |
所以如今将架构由Knockout到Angular的调整并使用到新项目的开发,详细例如以下:
到眼下为止,还没有发现Angular有什么大的技术难题或者性能问题。假设有Angular项目经验的朋友,最好还是留言讨论。学习共勉!
另外。非常多人发邮件问WPF是否会像Silverlight一样消亡。事实上这个问题非常难回答,尤其在眼下这个不光是微软主导的开发环境下(HTML5流行度远甚于XAML。IOS和Android的大行其道与Windows Phone的不温不火,Windows的命运尚不知晓)。可能连微软自己也不能非常好地解答这个问题,所以一切仅仅能由市场和时间来慢慢决定。
标签:log 架构 lsp 经验 res rand source 实现 最好
原文地址:http://www.cnblogs.com/yangykaifa/p/6708193.html