什么情况下用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开发人员。 |
|