关于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. shell 1变量注意点

    定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样. 删除变量 使用 un ...

  2. Android 开机过程PMS分析

    12-13 12:25:05.595 3253 3253 SystemServer !@Boot: Start PackageManagerService pm/PackageManagerServi ...

  3. LightOj_1284 Lights inside 3D Grid

    题目链接 题意: 给一个X * Y * Z 的立方体, 每个单位立方体内都有一盏灯, 初始状态是灭的, 你每次操作如下: 1)选择一个点(x1, y1, z1)     再选择一个点(x2, y2, ...

  4. German Collegiate Programming Contest 2013:E

    数值计算: 这种积分的计算方法很好,学习一下! 代码: #include <iostream> #include <cmath> using namespace std; ; ...

  5. 【Tools】Chrome 控制台不完全指南

    Chrome的开发者工具已经强大到没朋友的地步了,特别是其功能丰富界面友好的console,使用得当可以有如下功效: 更高「逼格」更快「开发调试」更强「进阶级的Frontender」 Bug无处遁形「 ...

  6. Nodejs异步

    http://cnodejs.org/topic/4f16442ccae1f4aa2700113b http://cnodejs.org/topic/4f16442ccae1f4aa27001123 ...

  7. 【uva11374】Airport Express 最短路

    题意: 在Iokh市中,机场快线是市民从市内去机场的首选交通工具.机场快线分为经济线和商业线两种,线路,速度和价钱都不同.你有一张商业线车票,可以坐一站商业线,而其他时候只能乘坐经济线.假设换乘时间忽 ...

  8. 当一个控件属性不存在的时候,IDE会出错在这里

    procedure TWinControl.ReadState(Reader: TReader); begin DisableAlign; try inherited ReadState(Reader ...

  9. [cocos2d] 调用动画方法

    利用texture atlases生成动画 中讲到如何添加动画,如果想要调用已添加的动画怎么办? 在1.0.1版本以前的cocos2d添加动画的方法为: CCAnimation *anim = [CC ...

  10. 执行计划之CONCATENATION

    CREATE TABLE T_CONCAT (ID NUMBER, NAME VARCHAR2(30), TYPE VARCHAR2(30)); INSERT INTO T_CONCAT SELECT ...