转自:http://www.cnblogs.com/xalion/archive/2012/01/14/2322514.html

随着各种应用系统越来复杂,用户终端类型越来越多,传统的C/S 系统面临着越来越多的问题和挑战,我们先看一下C/S 结构的

架构图:

客户端系统一般通过数据库的客户端与数据库连接,然后通过SQL 语句访问数据库服务器,数据库根据客户端的请求返回数据,在简单的系统里面

这种方式基本上没有什么问题,而且开发起来比较简单。但是这种结构面临这下面一些问题:

1.一般商务逻辑都建立在客户端,当出现不同的语言开发一个系统时,每种语言都必须写同样的商务逻辑,造成了重复开发,浪费人力物力;

同时由于商务逻辑建立客户端,每次逻辑的变化,都需要升级客户端,当客户端的数量超过上千台时,这种更新的代价会非常高。

2. 一般C/S 的客户端与数据库的建立连接后,都是一直保持着,也就是说是有状态的,这样当客户端非常多时,即就是不做数据库操作,服务器为了

保持这些连接,压力也会非常大,甚至会消耗完系统资源而当机。

3.由于C/S 系统是直接连接后台数据库服务器的,因此对于后台服务器来说,客户端基本上都是信任的,这样就具有非常大的安全漏洞,尤其是当客户端

面向大众,攻击者在客户端可以伪造访问服务器的SQL 命令,造成数据库信息的泄漏和丢失。

4. 当后台数据库服务器变化时,例如由MS SQLSERVER 换成 ORACLE时,客户端必须进行非常大的改造。

5. 对于一些最新的设备,例如Android,IOS, WMP 设备,根本就无法安装数据库客户端,无法使用这种方式开发;

基于以上几个问题,当系统变得也来越复杂时,我们不得不使用多层开发来解决这些问题,我们先看看多层开发的架构图:

最直观的差别就是在客户端和数据库之间多了中间层,也就是说客户端是通过中间层来访问数据库服务器。

这种方式可以有效的解决上面遇到的问题:

1.将商务逻辑建立在中间层,对客户端提供一个统一调用的接口,可以是webservice、RESTful,RPC 等方式,

目前各种语言及系统都基本上支持这些接口。这样如果商务逻辑发生变化后,只需要更新中间层,客户端不需要

任何变化。更方便的是,对于一些变化非常频繁的业务,我们可以在中间层用脚本来描述商务逻辑,这样就可以随时

更新商务逻辑,保证了最大的可用性。

2.中间层一般采用数据库池,与数据库建立一定的连接数,当大量的客户端连接时,可以有效的保护数据库服务器,

同时为了提高服务器速度和效率,可以与客户端采用无状态连接,例如http 服务器就是无状态连接的最好的例子。

3.由于客户端访问数据库是通过中间层的,一次基本上不需要在客户端使用SQL 语句,中间层与数据库在安全区域,防止了

伪造 SQL 语句破坏数据库数据。

4.当后台数据库反生变化时,只需要更新中间层,客户端不受影响。

5.各种新的设备及系统都支持webservice、RESTful,RPC 等方式。

6. 由于采用了中间层,可以非常方便的在中间层实现负载平衡、失效恢复、性能统计等功能。大大提高了系统的可扩展性和可靠性。

综上所述,多层架构可以解决很多C/S 架构的问题,有很多优点,但是也有一些缺点,例如,开发起来困难,数据传输效率在有的情况下比较低,

安装、调试起来复杂等,但是瑕不掩瑜,同时现在各种开发工具和框架都对多层开发都又非常强的支持,我们一定可以利用多层开发技术

开发出优秀的系统的。

转载于:https://www.cnblogs.com/Handll/archive/2012/01/31/2333810.html

为什么要使用多层开发?相关推荐

  1. 使用delphi 开发多层应用(十六)使用XMLRPC 实现basic4android 远程调用RTC服务

        RealThinClient (以下简称RTC) 也是一款delphi 多层开发的框架,由于其底层通讯协议是自己封装SOCK 库,抛弃了 大家诟病的indy,因此表现的非常稳定,效率也非常高, ...

  2. 第1章 ASP.NET 3.5与开发工具

    从本章开始,读者将能够系统的学习ASP.NET 3.5技术,相对于ASP.NET 2.0而言,在3.5版本的ASP.NET中并没有太多的变化,而更多的变化则在于C#编程语言中.而作为微软主推的编程语言 ...

  3. 为什么全栈开发对物联网至关重要?

    物联网设备和系统的开发本身是一个覆盖面极广的领域,跨越了多层开发.现在物联网(IoT)正在从根本上改变我们的日常工作,我们每天都要与家电.电子设备乃至交通工具交互.我们的家里和商店中拥有大量的物联网设 ...

  4. .NET开发工程师方向

    学历 年限 薪资 掌握技术 本科+ 3+ 12-20k 3. 熟悉.NET多层开发和分布式计算体系结构开发,精通C#编程,熟悉.NetFramework框架.MVC.ASP.Net.ADO.NET.J ...

  5. 三层开发我的一家之言

    近期不断的三层实践我对DCOM.SOAP等等都产生了"敬而远之"的想法.DCOM和WINDOWS权限的集成使得部署起来仍然不是很完美:Borland的midas的实现俺琢磨起来还比 ...

  6. 所谓的三层开发就是将系统的整个业务应用划分为表示层——业务逻辑层——数据访问层,这样有利于系统的开发、维护、部署和扩展。...

    1.什么是三层架构 所谓的三层开发就是将系统的整个业务应用划分为表示层--业务逻辑层--数据访问层,这样有利于系统的开发.维护.部署和扩展. 分层是为了实现"高内聚.低耦合".采用 ...

  7. Visual Studio 2017【使用ASP.NET开发Web项目】第一课——初识ASP.NET,创建第一个ASP.NET程序

    知识点:理解 ASP.NET 的概念和优势. 会创建 ASP.NET Web Form 程序. 理解 ASP.NET Web Form 程序的执行阶段. 会使用代码内嵌和代码后置两种方式进行编码. 1 ...

  8. 创业型公司诚聘软件开发人员

    .NET 软件工程师 职位描述:     负责系统后台的程序开发 岗位要求:     1.计算机等相关专业本科以上学历,两年以上工作经验:     2.精通ASP.NET.C#语言,深入理解.net架 ...

  9. GridView的DataKeyNames属性 转载的

    偶今天用到这个了,转载  "事在人为"楼主的,原文地址: http://www.cnblogs.com/andhm/archive/2010/05/07/1730024.html ...

  10. 解析三层架构(1)---为什么要分层?

    随着分层设计的进行,对分层逐渐有了更深的了解.准备利用几篇文章,深度的分析一下分层设计. 我这里的题目之所以叫三层架构,不一定代表着系统就是三层.古语中三为多.这里的三层也可能是 四层,五层 或者更多 ...

最新文章

  1. 计算机网络测试两个主机连通性,计算机网络试卷A
  2. HashMap的负载因子为什么默认是0.75
  3. Ethernet/IP 学习笔记五
  4. ftp协议分析(一)
  5. zabbix server is not running the information displayed may not be current
  6. 爷青结,Microsoft 放弃 Windows 95 时代的图标
  7. win11快捷键怎么使用 Windows11快捷键的使用方法
  8. java中间件_uncode-mq 基于netty的轻量级java消息中间件
  9. 2021年全国研究生数学建模指导
  10. java调用lingo实例_LINGO使用教程(一)
  11. 第三方支付,微信支付及支付宝的一些入门了解
  12. 彩虹自助下单平台对接爱代挂插件程序
  13. 【渝粤题库】陕西师范大学191201 刑法专论 作业
  14. 长假之后,Scrum团队应该修改Sprint的结束时间吗?
  15. 刷榜中ASO优化中下载量与评论之间的对应比
  16. 智能车寻线算法之北科寻线可能用的方法
  17. 嵌入式 Linux 的基础知识介绍
  18. Python日常小技巧(持续更新中)
  19. 本体技术视点 | 数据的去中心化协作和可信流动(一)
  20. 两个向量组线性相关是不是也能说成两个向量组等价 向量组等价 线性相关 向量组等价和矩阵等价的区别

热门文章

  1. Cisco公司的CAR流量控制策略
  2. MySQL复制 自动监控脚本
  3. Android 原生开发、H5、React-Native Flutter 使用利弊和场景技术分享
  4. 为什么我推荐你立刻使用Java 8 Stream?性能逆天了
  5. 用户空间和内核空间是什么?
  6. MySQL 高性能表设计规范
  7. 深入理解JDBC的超时设置
  8. mysql update 几万 非常慢_MySQL慢日志这样分析才够味
  9. bzoj 3872 [ Poi 2014 ] Ant colony —— 二分
  10. PythonCookbook读书笔记