关于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. ThinkPHP URL模式和URL重写

    现在用的版本是TP3.1.3,这两天总是遇到NotFound的错误,解析路径错误,所以认真研究了一下手册,发现问题出在URL模式上面. URL模式 一般是使用U方法来生成路径,U方法的定义规则如下(方 ...

  2. PHPCMS标签:get标签

    GET标签源自于PHPCMS 2008版,其使用SQL语句直接获取数据的特性,成为大家制作模板的首选. 在V9中这样强大的工具也得到保留下来. GET标签使用方式如下: {pc:get sql=&qu ...

  3. PHPCMS标签:PC标签模板语法规则

    模板语法规则1.变量表示{$name} 被解析成 <?=$name?>,表示显示变量$name的值,其中的“name”由英文字母.数字和下划线组成首字母必须是英文字母或者下划线. 2.常量 ...

  4. 谈谈python中的 lambda

    最近刚开始学习python,然后要加几个python的群去学习学习,但是呢有个群的申请栏要求写一个用lambda求1-100的和.....然后悲剧的就是不会啊....然后就没有然后了... 所以去网上 ...

  5. C语言实现五子棋简单功能

    /******************************************************************** C-4.29-1: 实现五子棋游戏 操作说明:用方向键或者& ...

  6. RPC通信编程

    使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大.最高效的方法之一.它为在分布式计算环境中运行的几乎所有应用程序提供基础. RPC 是什么? RPC 的全称是 Remote Proce ...

  7. mongodb常用命令【转】

    mongodb由 C++编写,其名字来自humongous这个单词的中间部分,从名字可见其野心所在就是海量数据的处理.关于它的一个最简洁描述为:scalable, high-performance, ...

  8. hadoop 2.x 安装包目录结构分析

    bin:Hadoop最基本的管理脚本和使用脚本所在目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用hadoop etc:Hadoop配置文件所在目录,包括core- ...

  9. JQUERY 插件开发——LAZYLOADIMG(预加载和延迟加载图片)

    开发背景 本插件开发是近期写的最后一个插件了,接下来我想把最近研究的redis最为一个系列阐述下.当然Jquery插件开发是我个人爱好,我不会停止,在将来的开发中我会继续完善,当然也会坚持写这个系列的 ...

  10. 用 Webgoat 撬动地球,看安全测试的引路石!

    测试工程师是很多人迈进软件行业的起点.从负责很小的局部到把握整个产品的质量,每个人花费的时间长短不一--从功能到性能.可用性到容错性.从兼容性到扩展性.稳定性到健壮性--方方面面逐渐做广做深. 不过, ...