从Knockout到Angular的架构演变

2008年第一次在WPF中使用MVVM模式之后,就一直热衷于耦合隔离、模块化与重构、UI和逻辑分离、单元测试以及后面的领域模型。谈及MVVM模式,自己也开发过一套框架,但没有长期更新和维护,所以索性就一直使用Prism和MVVM Light。到2012年的时候,看到HTML5的大行其道和Silverlight的衰落,果断把主要精力投入到ASP.NET MVC和Knockout的开发和研究当中,虽然Knockout比较容易上手且方便使用,但总觉得没有在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

所以现在将架构由Knockout到Angular的调整并使用到新项目的开发,具体如下:

到目前为止,还没有发现Angular有什么大的技术难题或者性能问题,如果有Angular项目经验的朋友,不妨留言讨论,学习共勉!

另外,很多人发邮件问WPF是否会像Silverlight一样消亡,其实这个问题很难回答,尤其在目前这个不光是微软主导的开发环境下(HTML5流行度远甚于XAML,IOS和Android的大行其道与Windows Phone的不温不火,Windows的命运尚不知晓),可能连微软自己也不能很好地解答这个问题,所以一切只能由市场和时间来慢慢决定。

时间: 2024-11-14 02:33:31

从Knockout到Angular的架构演变的相关文章

Angular 1.0演变Angular 2.0的简单优势列举

首先,Angular最核心的4大特性分别是: 1.模块化 2.MVC 3.双向数据绑定 4.指令 Angular 1.0演变Angular 2.0的简单优势列举: 1.性能限制上的优化 说明:随着时间的推移,各种特性被加入进去以适应不同场景下的应用开发,在最初的架构受到了限制,而Angular 2.0很好的解决了这些问题. 2.仿照WEB后端的结构模式来编写前端 说明:支持模块.类.lambda表达式. generator等新的特性 3.支持移动端开发 说明:Angular1.x没有针对移动 应

大型网站应用中MySQL的架构演变史

没有什么东西是一成不变的,包含我们的理想和生活!MySQL作为一个免费的开源的关系型数据库,深受大家喜爱,从最初的无人问津到当下的去IOE,都体现出了MySQL举足轻重的作用.今天我们就从淘宝的发展来阐述MySQL在大型网站下的架构演变史! MySQL的可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种 Scale-up : 纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-

大道唯简----存储架构演变之剖析

随着云计算和大数据的发展,传统的基于主机的存储架构已逐渐向网络化.虚拟化.海量云存储发展,从分散走向集中,存储的性能.效率和扩展性.灵活性被企业普遍关注.从更高层次看,存储不仅需要提供数据的管理.数据复制.快照.镜像.迁移等例行性事物,更要能处理数据的灾难恢复.数据一致性.虚拟化融合.弹性计算与资源扩展等工作,这些都依赖于良好的存储架构来满足. 结合企业的IT建设,我们可以把存储架构的演变归纳为三个阶段. 第一个阶段是存储基本架构的演进过程. 在企业建立初期,用户的数据规模并不大,存储需求也相对

Mysql在大型网站的应用架构演变

原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文链接地址: Mysql在大型网站的应用架构演变 写在最前: 本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段有以下两种Scale-up :  纵向扩展,通过替换为更好的机器和资源来实现伸缩,提升服务能力Scale-out : 横向扩展,  通过加节

Web集群实现共享存储的架构演变及MogileFS

本篇博客从Web集群中亟需解决的大容量存储问题引入,分析了几类常用的共享存储架构,重点解析了分布式存储系统的原理及配置实现: =================================================================== 1 共享存储的架构演变 2 分布式存储系统 2.1 基础知识 2.2 分类 2.3 CAP理论 2.4 协议 3 MogileFS 3.1 特性 3.2 架构 3.3 组成 3.4 服务安装及启动 3.5 配置部署 3.6 配置前端代理N

数字化企业架构演变

-------------------------------------------------------------------------------------------------------------------------------------------- 今天先到这儿,希望对您在企业架构,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章: 数字化IT人才与组织互联网电商购物车架构演变案例互联网业务场景下消息队列架构消息系

从100PV到1亿级PV网站架构演变

如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原则.本文结合我自已14年网站人的经历记录一些架构演变中的体会. 1:积累是必不可少的 架构师不是一天练成的. 1999年,我作了一个个人主页,在学校内的虚拟空间,参加了一次主页大赛,几个DREAMWEAVER的页面,几个TABLE作布局,一个DB连接,几行PHP的代码嵌入在HT

[转]大型网站架构的优化与架构演变(整理)

=============大型网站架构的优化===================== 一个小型的网站,比如个人 网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简 单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬 件到软件.编程语言.数据库.WebServer.防火墙等各个领域都有了很高的要求,已经不是原来简

大型网站架构演变和知识体系

之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的.ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网行业的同学一点初步的概念,文中的不对之处也请各位多给点建议,让本文真正起到抛砖引玉的效果. 架构演变第