cs与bs模式的优缺点_什么是cs什么是bs

cs与bs模式的优缺点_什么是cs什么是bscs与bs模式关于CS(Client-Server)模式和BS(Browser-Server)模式的水很深,盆地自己也认为对此了解不够透彻,但作为手机客户端设计,如果不对CS、BS做一定程度的了解,是很容易出现一些方向性的错误、走一些弯路抑或在实现性价比上付出过多代价。本文偏向于基础知识,产品人员很多情况下不仅仅要了解表现、交互,还需要一定程度上了解可实现性、实现代价、实现形式、实现限制等…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

cs 与 bs模式
关于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模式中如果需要调用不支持能力的时候,则通过自定义标记集支持,针对同一个标记集在不同平台中根据实际情况做不同解析,通过此种方式降低后台适配工作的工作量,以及保障客户端支持的功能。

七、小结

本文较为零散,很难起到循序渐进了解的效果,受限于盆地个人了解深度和表达能力的限制,估计本文对有一定手机客户端设计经验的人可能会有帮助,如果实际经验没有涉及到相关方面的话,此文帮助程度恐有限。

转自;https://www.cnblogs.com/Free-Thinker/p/3707103.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195709.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 创建自己的个人网站(一)

    创建自己的个人网站(一)在学习过程中,我们想要将自己的作品发布到网上,创建个人网站,以下是个人网站搭建的简单介绍。 (建议建站前,了解常用linux指令)步骤:1.注册域名     2.开通云服务器     3.搭建网站环境     4.发布网站内容     5.域名解析      6.完成ICP备案(本次仅介绍静态网站的搭建,动态网站后续文章详细介绍)1.注册域名  …

    2022年6月23日
    26
  • eclipse在mac安装_Android开发者

    eclipse在mac安装_Android开发者安装Eclipse并搭建Android开发环境分四步:1、下载安装JDK2、下载安装Eclipse3、下载安装AndroidSDK4、下载安装ADT1、下载安装JDK打开浏览器进入到Oracle官网,到JDK下载界面,网址:https://www.oracle.com/technetwork/java/javase/overview/index.html下载所需版本,点击下载好的文…

    2022年9月27日
    0
  • php实现页面跳转的方式_html跳转代码

    php实现页面跳转的方式_html跳转代码在php中要实现跳转有很多方法,最常规的跳转方法就是使用header函数来操作了,当然也可以在php中输入js跳转形式,下面我来给大家介绍一下。PHP跳转代码如下复制代码header(“location:http://www.jquerycn.cn”);?>header函数使用PHP页面跳转一、header()函数header()函数是PHP中进…

    2022年8月13日
    3
  • 一文读懂自监督学习

    一文读懂自监督学习公众号关注“视学算法”设为“星标”,DLCV消息即可送达!来自|知乎作者丨Sherlock来源丨https://zhuanlan.zhihu.c…

    2022年9月14日
    0
  • 反射之动态拼接sql字符串「建议收藏」

    反射之动态拼接sql字符串「建议收藏」反射之动态拼接sql字符串前言自己在学习JDBC连接数据库,不用框架手动实现时,个人觉得反射动态拼接sql的思想很好,当然了大家伙觉得好才是真的好(广州好迪,手动狗头),所以才有了本文对该知识点梳理与总结。分享给大家,下面开始步入文章的正文,亲们不要掉队。正文…

    2025年5月27日
    0
  • java 获取当前时间的三种方法_java获取单层文件夹大小

    java 获取当前时间的三种方法_java获取单层文件夹大小A获取当前时间:Java代码importjava.text.SimpleDateFormat;importjava.util.Date;publicclassGetCurrentTime{/*获得当前时间*/publicstaticStringgetCurrentTime(){DatecurrentTime=newDate();SimpleDateFormatformat…

    2022年9月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号