关于CS(Client-Server)模式和BS(Browser-Server)模式的水很深,盆地自己也认为对此了解不够透彻,但作为手机客户端设计,如果不对CS、BS做一定程度的了解,是很容易出现一些方向性的错误、走一些弯路抑或在实现性价比上付出过多代价。
 
    本文偏向于基础知识,产品人员很多情况下不仅仅要了解表现、交互,还需要一定程度上了解可实现性、实现代价、实现形式、实现限制等。
 
二、CS模式产品
 
    CS(Client-Server)模式:顾名思义为客户端-服务器的意思,对比的话类似我们pc上面除浏览器外和服务器有交互的软件,例如qq、杀毒软件等等都是CS模式;如果和服务器没有交互,则可以认为是一个纯客户端。客户端和服务器交互的方式可以通过自定义协议、公共协议(ftp、http)等各种方式进行。
 
    在手机上面的客户端例如Gmail客户端、搜狗输入法、来电通都属于CS模式的产品.
 
    CS模式最大的好处就是可以相对灵活实现各种预期的功能和特效,所受的限制为系统提供的底层功能或开发工具的限制。
 
    CS模式最大的缺点就是大部分功能新增、界面调整、逻辑变更需要更新客户端来实现。当然,通过良好的设计可以一定程度上实现不更新客户端来实现新功能、逻辑变更等,但相对来说在不升级客户端的情况下对架构设计要求较高。
 
三、BS模式产品    
 
 
    BS(Browser-Server)模式:顾名思义为浏览器-服务器的意思,对比的话类似我们PC上面浏览器使用的产品即为BS模式产品,例如google doc、各类网站等。
 
    浏览器就盆地看来可以认为是Client的一种,只不过实现了和Browser有关的协议(http等)和标记集(wml、html等)。
 
    在手机上纯粹的BS产品可以认为是我们常见的手机访问的网站。在手机客户端中常用的浏览器(UCweb、opera mini、opera mobile、qq浏览器等)属于这些产品的承载体。
 
    为了增加功能,一般会自行开发浏览器,例如ucweb、qq浏览器中除浏览功能外,还默认内置了网站导航、历史浏览记录、各类频道等,即属于浏览器非协议实现和表现外的新增功能。
 
    BS模式产品最大的好处就是可以灵活实现逻辑变更、内容动态变更、界面布局调整等。
 
    BS模式产品的不足是受限于实现的浏览器标记集和浏览器能力,许多特殊效果无法通过浏览器实现。虽然可以一定程度上通过自定义开发来实现功能新增,但此种方法却丧失了BS的灵活性,而偏向于CS模式的客户端。
 
    目前绝大部分的手机客户端浏览器基本上停留在支持html、wml的阶段,受限于手机性能和pc表现差异等方面,基本上不支持或仅少量支持css和JavaScript。
 
四、CS模式和BS模式结合产品 
 
     综合考虑灵活性、实现效果等,不少手机客户端产品会选择CS模式和BS模式结合的产品,至于其中CS和BS所占的比重则更多根据所需要实现的功能、表现形式等来决定。
 
    例如手机QQ中,涉及到IM部分均为CS模式(这一块难以通过BS模式支持的协议来表现),而其他的频道例如资讯、音乐、书城、股票等则通过BS方式来表现。 手机msn也和手机qq类似,在IM功能实现上采用CS,而资讯类采用BS方式。手机QQ音乐中除音乐门户是BS模式外,其他都是CS模式实现。
 
五、一些注意要点
 
    受限于BS模式的承载协议和支持标签集(目前和PC上的实现还有较大差距),如果不支持或难以支持的方式则主要考虑CS模式实现,而在可以实现的情况下是否实现也需要根据实际情况来。
 
     1. 如果希望有较绚丽的效果,基本上可以不用考虑BS。
 
     2. BS模式的产品中,左右软键选项菜单的内容基本是固定的,除了部分情况下会变化外,大部分情况下都表现的一致,这类似于浏览器中菜单的内容基本上不会根据浏览网站不同而变化是一致的。
 
     3. 想实现通过选项菜单来控制主界面中元素的功能(例如通过选项菜单选中主界面中某个元素), 最好考虑CS模式。
 
     4. 无法在承载协议上支持的例如音乐播放、视频播放等,则要采用CS模式。
 
     5.希望动态加载数据,CS模式和BS模式都可以支持
 
     6.如果希望动态排版变化,则最好采用BS模式
 
     7.如果要在BS模式调用非标准本地能力,则需要自定义标记集
 
六、适配
 
     如果采用CS模式,则基本上不同分辨率、不同系统的客户端基本都需要进行适配,即提供不同安装包,每次变更适配工作量巨大。同时不同分辨率的适配基本上都需要相应的UI配合设计和切图等。
 
    如果采用BS模式,则在标准的浏览器标记集支持范围内,则只需要更改服务器以及根据ua不同展示不同页面。如果为自开发浏览器核心,则由于系统、平台、开发语言等不同,进行不同的适配,但由于业务逻辑和功能基本上在服务器实现,适配工作也大大减少。浏览器本身可以开发自适应的功能,在界面不包含绚丽效果的情况下,很多情况可以实现自适应。
 
   根据业界某历史相对较旧的客户端开发公司介绍,其公司采用的为BS加自定义标记的模式,BS模式中如果需要调用不支持能力的时候,则通过自定义标记集支持,针对同一个标记集在不同平台中根据实际情况做不同解析,通过此种方式降低后台适配工作的工作量,以及保障客户端支持的功能。
 
七、小结
 
    本文较为零散,很难起到循序渐进了解的效果,受限于盆地个人了解深度和表达能力的限制,估计本文对有一定手机客户端设计经验的人可能会有帮助,如果实际经验没有涉及到相关方面的话,此文帮助程度恐有限。

cs模式与bs模式的更多相关文章

  1. C/S模式和BS模式是什么?

    C/S是Client/Server,即客户端/服务器:B/S是Browser/Server,即浏览器/服务器的意思. C/S   (Client/Server)结构,即大家熟知的客户机和服务器结构.它 ...

  2. 炉石传说 C# 开发笔记(BS模式Demo)

    原来这个项目,一直想做成CS模式的,BS模式对于炉石这样的游戏来说比较困难. 暴雪到现在也只出了 Windows 和 iPad版本的炉石,最大的问题还是在于如何在小屏幕下,实现最佳的客户体验. Win ...

  3. BS模式的模型结构详解

    编号:1004时间:2016年4月12日16:59:17功能:BS模式的模型结构详解 URL:http://blog.csdn.net/icerock2000/article/details/4000 ...

  4. 硬盘和显卡的访问与控制(一)——《x86汇编语言:从实模式到保护模式》读书笔记01

    本文是<x86汇编语言:从实模式到保护模式>(电子工业出版社)的读书实验笔记. 这篇文章我们先不分析代码,而是说一下在Bochs环境下如何看到实验结果. 需要的源码文件 第一个文件是加载程 ...

  5. WCF学习之旅—请求与答复模式和单向模式(十九)

    一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务端有了答 ...

  6. ASM:《X86汇编语言-从实模式到保护模式》第16章:Intel处理器的分页机制和动态页面分配

    第16章讲的是分页机制和动态页面分配的问题,说实话这个一开始接触是会把人绕晕的,但是这个的确太重要了,有了分页机制内存管理就变得很简单,而且能直接实现平坦模式. ★PART1:Intel X86基础分 ...

  7. 【OS】实模式和保护模式区别及寻址方式

    实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别 ...

  8. ASM:《X86汇编语言-从实模式到保护模式》第11章:进入保护模式

    ★PART1:进入保护模式 1. 全局描述符表(Global Descriptor Table,GDT)        32位保护模式下,如果要使用一个段,必须先登记,登记的信息包括段的起始地址,段的 ...

  9. ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构

    ★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...

随机推荐

  1. VS2013相关资料

    visual studio 主页 http://msdn.microsoft.com/en-us/vstudio/aa718325.aspx vs2013 download http://www.mi ...

  2. Test for open live write

    this is test document. this is test document. this is test document. this is test document. this is ...

  3. Hadoop 学习笔记 (十) hadoop2.2.0 生产环境部署 HDFS HA Federation 含Yarn部署

    其他的配置跟HDFS-HA部署方式完全一样.但JournalNOde的配置不一样>hadoop-cluster1中的nn1和nn2和hadoop-cluster2中的nn3和nn4可以公用同样的 ...

  4. Contest 20141027 总结

    这次考试主要问题出在第一题,由于考试期间没有看清题意,少看了一句 “a=A/1e9" 导致在考试结束最后5分钟发现时修改过于匆忙,改出问题了.另外,这道题同时告诉我long double 在 ...

  5. Codeforces Round #204 (Div. 2): A

    超级大水题: 只要用到一个小学用过的结论就可:能被9整除的数它的各位数相加能被9整除: 代码: #include<iostream> #define maxn 1005 using nam ...

  6. Java Servlet的request使用的编码引发的思考 以及解决方法

    如果我们用浏览器填写了中文,而在服务器Servlet上没有进行编码设置,那么将会出现乱码. 出现乱码的原因是:浏览器发送的文字是以UTF-8编码发送的,然后调用request.getParameter ...

  7. net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案

    我使用的net.sf.json是json-lib-2.4-jdk15.jar,把json对象转换为普通java实体对象时候有个问题,josn对象转换为java对象之后,json串里面的那几个小数点的值 ...

  8. Xstream之常用方式与常用注解

    示例代码 Blog teamBlog = new Blog(new Author("Guilherme Silveira")); teamBlog.add(new Entry(&q ...

  9. Volatile总结

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...

  10. 重构第三天:提升方法&下移方法

    如果两个子类拥有相同的方法,把它们移动到超类中来 Warning! 但是从子类到父类移动方法的时候要注意, 不要过度采用这种方法,否则会出现继承滥用的情况.如果一个父类A有多个方法,假设m1, m2方 ...