分享

BS和CS到底有多大差异?

 nxhujiee 2019-08-27

什么情况下用BS,什么情况下用CS??

一、先说应用场景,然后实际推演和比较。就能清楚掌握了。

比如:目前有个CS结构的.Net程序是用wpf技术写的,那3D效果非常棒,而转成BS结构写呢,是否也能达到这种完美的视觉效果,以及良好的交互和性能?
CS结构转成web的BS结构。重点有3点我所担心:
1 浏览器资源回收的慢,导致性能不好
2 无状态,比如F5刷新。共享的变量等难以保持。
3 CS结构用.Net的WPF实现的界面会很酷炫,有3D效果。但是转成java web开发,这种效果,能实现吗?
是否有成熟的开源框架和资源?


二、再说C/S和B/S的区别。
C/S是Client-Server;B/S是Browser-Server
CS是胖客户端;BS是瘦客户端。
CS是长连接,客户端和服务端双向通信;BS是无状态短连接,是「查询」式的通讯。只有客户端向服务器查询时,服务器才能向客户端发送信息,
服务器不能主动地向客户端发送信息。当然也可以通过websocket实现长通信。简而言之,C/S 是双向通讯,B/S 是一问一答。
应用实例:webqq 是BS结构, qq 是CS结构。


看本质:
C = Client, S = Server。C/S 架构即“客户端-服务器” 架构。这里的“客户端”可以是有 GUI (图形用户界面)的定制软件,也可以是浏览器,甚至可以是通过 SSH 访问服务器的命令行脚本。只要是客户端通过访问服务器调取计算或者存储资源的,统统都是 C/S 架构。
所谓的 Browser-Server 架构其实是 C/S 架构的一种特殊的实现形式,而不是其对立面。 


CS 结构三层沟通都在一台电脑,一个数据的流动几乎没有限制,所以最好自己脑中要清晰划分三层。这样写出来的程序除了维护更好之外,还能让一个初学者写少很多重复的代码。总之,就是切记不要写那种所有逻辑堆在 Swing 类里面的糟糕程序就好了。写 CS 可以熟悉线程和 Socket 编程,也是不错的训练。我学 Java 时写过微博的客户端,用来练手还顺带体验一下 SDK 编程,也有成就感。
BS 的话,时刻记住那时个网站。不求甚解的话 Model - Java类,Controller - 继承处理 HTTP 请求的类,View - JSP。这样就错不了了。B/S架构因为可以承载十万百万的用户在线,并且不用将用户分隔在不同区不同服务。


cs转成bs 有啥差异和区别?比较双向通信、性能、界面效果等
CS需要安装客户端,升级、出问题的处理,非常麻烦,但其在本地运算和处理文件等效率高,BS不需要安装客户端,通过浏览器访问操作,没有逐个客户端安装调试,处理个性化问题的麻烦,但是交互效果就会差一些,本地运算和处理能力也不好
大部分主流程功能应该可以达到,但是交互肯定是CS比较好,毕竟在本地运行,依托操作系统。
第一个问题,不用太担心,浏览器这块你需要关心的就只有适配问题了,多版本多类型浏览器的匹配,如需要,得做好

第二个问题,可以通过缓存等办法解决,刷新按钮上挂上缓存服务,把数据放缓存里,如果用户非得F5或者CRT+R,那神仙也没办法了。
可以把状态信息通过保存在redis,服务器端通过会话id查询上下文信息,客户端每次请求的时候带上会话id

第三个问题,确实会有一些差异,现在HTML5的技术大力发展,效果会比以前好很多,360度旋转,多角度展示倒是可以做,但是效果跟CS比,我觉得还是CS能实现 效果更丰富多彩,如果BS一定想做到那种效果,可以考虑用flash做,flash的话基本就什么都可以了,只是页面首次加载要花些时间
三、最后说下CS程序转BS的注意事项。

通信协议不一样,框架体系不一样。业务逻辑不能变。把以前的通信协议搞清楚,注意下有没有上下文依赖。
bs结构把通信协议都交给http来解决,不用关心通信和tcp封包解包的问题。好的bs结构就应该是无状态的,这样便于扩展。
比如,你可以把状态信息通过保存在redis,服务器端通过会话id查询上下文信息,客户端每次请求的时候带上会话id。
通常这个会话id就是token 这样任何一个服务器都可以处理这个请求,通过token获取上下文。

客户端的问题前端比较专业,现在的js也很nx,有高手的话都不是问题。html5 的新技术应用上 再加上JS,完全能实现酷炫的效果。
  
bs结构的问题大部分都是服务器性能的问题。浏览器问题都是尽可能去适应。
浏览器比较慢就看看用的框架是不是很臃肿,页面是不是很大,加载了很多无用的资源,网络请求时间是否足够快

Net开发,C#写的有些类就能公用。用java写就得全改。而且那些酷炫的3d效果,不知是否有开源的。。。。??
语言都不是问题。bs主要是服务器端的语言,客户端都一样。长期来看我更倾向于java,免费,开源的系统和方案很多。.Net的主要问题是收费,用了它,就得买Windows操作系统,相应的数据库和开发工具,它的配套的开源较少,总体上不够开放。
用.Net的企业,除了微软,国内没什么NB的企业,也决定了很难有什么NB的.Net开发人员。                                     

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多