B/S 与 C/S相结合

 

C/S结合

执行数据库操作的缺陷

以某(具体业务不方便说)业务为例,我们有复杂的查询业务需要处理,如果我们使用C++开发查询模块,我们将面临痛苦的数据库操作 和 报表数据组织的过程,但是如果我们采用C#(由于我比较熟悉C#所以用C#举例)来处理这种复杂的数据库查询和报表数据的展示那事情就是另一番景象了,首先基于C#的第三方ORM组件网上我们可以搜到很多(我比较喜欢的是Subsonic,因为其开源可以看到源代码),其次微软也为我们提供了一些解决方案可以选择,如Linq to sql 和 比较新的 ADO.NET Entity Data Model 它们都能为我们提供很好的数据库操作接口而且功能很强大的Linq的支持使我们可以对查询语句进行调试,对于使用过sql的人来说Linq是很容易上手的。在报表数据展示上面C++在开发效率上也不是很高而且实现一个简单的报表也是一个比较困难的事情,但是使用C#就不一样了,我们有很多报表控件可以选择,在没有特殊要求的情况下微软提供的报表控件基本可以满足我们大部分的需求,不仅如此在我们采用C#等高级语言的时候我们的开发效率也会得到显著的提高,最明显的一个特点就是在我们采用C#开发应用程序的时候我可以仅仅拖动几个控件点击几次鼠标设置下控件的属性编写少量的代码甚至可以不编写代码就能把数据库中的数据展示到页面上并且分页显示,这是采用C++开发应用程序很难几乎不可能做到的事情。

与优势

1 传统C/S架构原理

2 传统B/S 架构原理

3  B/SC/S相结合架构原理

1、       1 传统C/S架构原理 所示,在传统的C/S架构够中我们采用的技术方案是由客户端想服务器发起数据请求然后服务器端响应客户端的请求并把数据发送给发起请求的客户端,客户端接收到服务器发来的数据后进行组织并展示给用户
2.      2 传统B/S 架构原理 所示,在传统的B/S架构中浏览器充当客户端向服务器发出请求,其过程与C/S架构的请求响应模式类似只是在B/S架构中客户端(浏览器)请求的是一个具体的页面,至于服务器返回的页面上具体显示什么内容如何去显示客户端是不进行干预的一切都由服务器决定,客户端(浏览器)只是一个数据展示的平台;
3.      3 新架构原理图 所示,此种架构是将C/S B/S 架构相结合而产生的一种新的系统架构模型,因此在此架构中客户端即可以接收到应用服务器主动发过来的命令和数据,也可以向Web服务器主动请求数据页面并在客户端的对话框中显示(注意:不是在浏览器中显示)。此架构的特点是拥有两个服务器,一个是应用服务器,此服务器主要用于向客户端主动发布实时消息;另一个服务器是Web服务器,此服务器主要用于提供Web服务,我们可以把系统中对实时性要求不高的模块(如:查询)利用高级语言高效率的开发成独立的Web系统并由客户端向Web服务器发送消息请求相应的数据页并在客户端显示;因此,使用此架构的系统的某些功能可以通过客户端访问使用也可以通过浏览器访问相应的页面使用;
4.      基于C/S架构的软件其响应速度是毋庸置疑的,而且服务器可以主动的向与其建立连接的所有客户端发送消息,无论客户端是否发出消息请求,服务器都可以主动向客户端广播消息,这是C/S架构的优点。有些时候我们就需要使用C/S的这种特性,比如在监控软件中我们需要的就是服务器主动的将监控数据发送给客户端而不是由客户端请求后服务器再响应,无疑前者的实时性会更高一些而且服务器的压力也会更小;
5.      基于B/S架构的软件与C/S架构的软件最大的区别是响应速度上 没法与后者同日而语,不仅如此B/S架构的软件服务器是被动响应的也就是说服务器要接收到客户端发来的Http请求服务器才会进行响应。基于B/S架构的应用我们可以采用很多高级语言开发实现,我们可以使用这些高级语言的特性快速高效率的开发,所以这种架构十分适合开发一些实时性要求不高的应用或模块;
6.      在我们的监控软件中为了高效率的执行和好的实时性我们采用C++开发了一系列基于C/S架构的软件,但是在我们的软件中是不是所有的功能都需要高快速的响应呢?显然不是,如对历史数据的查询功能模块。那我们是否可以将这个查询模块采用B/S架构来实现呢?答案是可以的,因此我们可以采用开发效率较高的高级语言来实现查询模块,最理想的当然还是做成B/S的并将其单独发布到Web服务器,因为B/S架构的软件在维护成本上教C/S的要低些,而且我们也可以使用浏览器可以轻松的使用这些查询功能,不仅如此我们可以利用 3 新架构原理图 所表述的原理在客户端软件中集成浏览器的功能(VC里为我们提供了现成的控件)这样我们在基于C/S的软件中就可以向Web服务器发出请求获取获取查询页面和数据,这样对于客户来说他们使用软件一样功能都没有少而且保证了软件的质量并且提供了多种数据查询的方式(客户端软件直接查询和浏览器查询),但是对于开发人员来说开发效率会随着高级语言的导入而得到提升,因为在这些高级语言中包含了大量的数据控件和数据库控件,这些控件的功能如果采用C++实现将会耗费相当长的时间。

   综上,我们可以看出采用B/S C/S架构相结合的方式我们可以利用C/S架构的优势实时性和高执行效率,又能利用B/S架构的优势维护成本低可以使用高级语言的丰富的数据控件并缩短整体的软件开发周期并提高研发人员的工作效率。

    

1.3      新框架实现的步骤

1、  VC(由于VC是我们的主要IDE所以以此为例)创建一个对话框,对这个对话框的唯一的要求就是能够向服务器发送http 请求并能正确的解析返回的html代码并展示在客户端;

2、  利用任何一款你熟悉的能够开发Web应用的语言(如:C#Java PHP 等)开发一个基于B/S架构的Web应用程序;

3、  将第2步开发的Web应用程序发布到Web服务器;

4、  启动第1步创建的对话框,并在对话框启动的时候自动向第3步发布第2步创建的Web应用程序的服务器请求该Web应用程序的一个数据页面;

5、  页面成功显示,开发结束,如果请求页面失败请检查URL是否正确。

     

 

1、  部署Web服务器,用于响应客户端或浏览器的HTTP请求;

2、  部署应用服务器,用于主动向客户端发送需要广播的实时数据或更新;

3、  如果客户仅仅使用一些B/S架构实现的功能,客户可以选择不安装客户端软件,因为通过浏览器就可以满足此类客户的需求。客户可以安装独立的客户端软件,在客户端软件中客户可以仅仅通过客户端软件就可以使用系统的全部功能,包括基于B/S架构实现的功能。

4、  具体系统的架构可以参考图 3 B/SC/S相结合架构原理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值