码迷,mamicode.com
首页 > 其他好文 > 详细

浅谈客户端架构

时间:2016-05-13 03:09:15      阅读:114      评论:0      收藏:0      [点我收藏+]

标签:


客户端有哪些架构?

MVC(简略)

M层为数据层,两个用途:1保存数据;2发送数据更新信息;

V层为视图层,两个用途:1接受用户从界面上的操作;2根据M层的数据显示相应的界面;

C层为控制层,两个用途:1处理和界面无关的代码逻辑;2接受和处理网络数据;

MVP

很多时候视图层面还是充斥中很多复杂的逻辑,例如UI事件的响应处理,网络响应的回调等等,充斥着各种监听器的回调。我们期望视图V便当更简单、更纯粹,V只负责绘制和刷新其他逻辑都不用管了,也不想和M有直接的联系。从MVC的VC(Activity)中我们分离一层出来叫做Presenter,由它来负责调度UI何时刷新、由它来接受UI的事件响应并传达指令给M。从此V和M是路人,V和数据的距离跟远了.

V:Activity为代表,这时候的Activity更为简单了,只负责UI的绘制和刷新。

P:负责传达指令。向上接收V的事件指令并需要的时候传达给M,向下接收M的指令并通知V刷新UI。

M:只负责出来数据逻辑。

我们把每一层都抽象成一个接口,例如V层,我们定义一个接口为View(不要和AndroidAPI里的View弄混了),让后Activity为这个View的具体实现。每一层对另一层的依赖都是接口依赖,并不关心另一层的具体实现,每一层我们都可以写不同的实现,随时切换,这就意味着,有一天如果有一层不好用了,我们可以轻松的重写另一个实现来替换掉,而不是如履薄冰的修改

 

如何评估架构?

层次可扩展性

也称纵向扩展设计。该设计工作是为了分解复杂的问题域和抽象问题对象,采用分层技术,适当对系统规划多个层次部份,然后最终再整合起来构成一个完整系统整体。

评价的时候可以考虑系统是否需要进行分层?分层方案是否适合?层与层之间的整合方案是否适合且有效?

 

架构可伸缩性

该工作目标是减少系统最小的部署资源配置要求和最大的部署资源配置限制之间的差异性,从而使系统能够方便的在各种环境(如开发环境,测试环境,跨机房集群环境)中进行部署和运行。

评价的时候可以考虑系统最小的部署资源配置要求?系统最大的部署资源配置限制?

 

服务分布设计

也称横向扩展设计(假设架构设计图的垂直维度是分层)。该设计工作主要是通过可扩展的分布式结构,利用多台服务器分担负载,从而解决集中式系统中单服务器的瓶颈问题,同时提高系统的可靠性、可用性和扩展性。

评估的时候可以考虑服务能否进行分布式部署?系统能否有效实施负载均衡的策略?

学习曲线

一个复杂架构的学习成本往往是很高的。由于实施架构是一个长期建设和持续改进的过程,需要程序员进行持续的学习和维护。所以必须考虑到复杂架构的实用性。其实用性不仅仅包括学习成本,还包括实施成本、维护成本、通用性等。

 

 

有哪些框架可以使用?

DevExtreme

DevExtreme 是DevExpress专门针对VisualStudio开发者提供的一款跨平台HTML5/JS移动应用开发框架,这个框架可以帮助你直接在Microsoft Visual Studio集成开发环境,构建iOS,Android和WindowsPhone 8应用程序。DevExtreme包含 PhoneJS 和 ChartJS 两个原生组件,并且提供源代码。

功能特性:

提供原生用户体验-无论是 iOS,Android, Windows Phone 还是 Tizen,开发者无需再编写多余代码或UI自定义,就可以获得原生外观;

触摸优化的组件-每个DevExtreme组件都包含了一个KnockoutJS接口,提供标准的数据绑定功能;

自适应布局系统-DevExtreme内置分别支持各种移动平台的布局,开发者可以在最短的时间内交付和实现这些布局;

优良的性能-对于使用了webkit-based 浏览器的移动设备,DevExtreme利用了专门的Webkit CSS功能,比如下拉刷新功能;

目前,DevExtreme支持

三大IDE平台:VS2010、VS2012、VS2013

五大移动平台:Android 4+、iOS5+、Windows 8、Window Phone8、Tizen

五大桌面浏览器:IE10、Safari 5+、FireFox、Chrome、Opera 12+

四大移动OS集成浏览器:Android4+、iOS 5+、Window Phone 8、Tizen

 

DirectUI

Directui是一套开发理念,其主要的思想就是主窗口有句柄HWND,但是子控件Button List 等等都是无窗口句柄的,使用spy++无法抓取控件的HWND,代表性的开源项目是Duilib :duilib - windowless ui, directui他使用XML作为其窗口布局描述,使用C/C++处理控制逻辑,最成功的项目莫过于QQ的UI了,标准的DirectUI。

使用此框架的软件有酷我音乐盒,华为网盘,百度杀毒等。迅雷的bolt也是DirectUI的代表作品但是开放性比较严格代码没有开源附加迅雷的bolt也是DirectUI的代表作品但是开放性比较严格代码没有开源

 

 

引用

http://blog.sina.com.cn/s/blog_67fdde3f010137q1.html

http://www.liuguangli.win/archives/299

 


浅谈客户端架构

标签:

原文地址:http://blog.csdn.net/u014147875/article/details/51338366

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!