博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tomcat c/s 三层架构
阅读量:2338 次
发布时间:2019-05-10

本文共 1515 字,大约阅读时间需要 5 分钟。

概述
在c/s结构的发展历程中,产生了两层c/s结构和三层c/s结构之分。在两层c/s结构中,在信息管理系统的管理上主要分为客户端和数据库服务器。缺点有两个:1)开销高昂。在两层c/s结构中,为了维护其通信以及在通信上解决的通信采用的技术复杂。造成费用很高。2)客户端升级复杂。在软件行业发展如此迅速的今天,业务变化复杂。而两层c/s结构的业务处理主要放置在客户端。因此,当业务变化时,需要升级客户端。也就是需要重新安装客户端。由于以上的的缺点,三层c/s结构应运而生。三层主要分为表现、功能、数据。从业应对业务的复杂变化。当业务出现变化时,只需要升级服务器。减少升级客户端应用程序。有以上的介绍可以知道,在采用c/s结构中,我们要考虑的问题是如何尽可能较少客户端和服务器的通信开销以及如何构建一个易扩展和能够应付业务变化的客户端。在往往的c/s结构的开发中,客户端是公认的自己动手开发。但是服务器,大部分人都停留在动手编写服务器的阶段。这样的费用极其高昂。因为重新开发一个服务器不是一天两天的能够完成。在这里,我的观点是采用开源的服务器作为服务器。
应用
前提条件,采用java语言开发。
把三层分为了客户端、业务处理服务器、数据库服务器。在这里主要讨论的是如何构建一个客户端和业务处理服务器。采用tomcat作为服务器。在客户端自己动手编写客户端。
在tomcat中,用servelet作为发布服务的功能。客户端和业务处理服务器之间的相互连接采用http协议连接请求。为了方便操作,在tomcat和客户端的通信中,主要内容通过对象序列化作为信息传输的内容。因此,在设计阶段需要定义好通信过程中的实体类。
下面是个例子:
现在,我们要构建一个短信查询系统。这个系统主要分为了三个部分组成。分别为短信查询服务器、查询服务器、数据库服务器。采用三层c/s结构的方式。短信查询服务器端作为客户端;查询服务器作为业务处理;数据库服务器作为数据处理。在查询服务器中采用tomcat作为服务器。
设计原则是尽可能较少通信量以及通信技术费用。
整个过程如下:
1)短信查询服务器收到 查询短信后,对短信实体进行对象序列化后,通过http协议发送请求给查询服务器。
2)查询服务器接受到请求后,接受信息,并且反对象序列化,获得其短信实体类。进行处理、查询。并且把查询信息生成一个短信对象。并且进行对象序列化返回给短信查询服务器。
3)短信查询服务器接受到短息内容后进行反对象序列化。并且进行发送短信。
整个过程采用的是tomcat作为服务器。构建c/s结构。避开了传统的书写服务器的不足指出。
总结
在整个设想过程中,主要存在以下几个优点:
1)减少开发成本。在开源给我们带来一个好处就是免费。然而,一般情况下往往采用的是两层c/s结构或重新编写服务器构建三层c/s结构。这样的费用过于高昂。采用了tomcat作为服务器,或者其他性能更好的web服务器作为服务器,便能减少开发成本。同时采用http协议的发布和对象序列化较少通信开销。
2)加快开发速度。采用开源web服务器,可以避开了开发服务器的过程,减少了开发时间。同时servelet技术已经发展到成熟阶段。能够很好地加快开发速度。
3)在c/s中提高应对业务的变化能力。采用三层c/s结构,很好地应对了复杂的业务变化以及业务的扩展。
有以下几个缺点:
1)实体类的定义。在整个过程中,由于采用的是对象序列化技术,因此,在客户端和服务器之间需要采用同样的传输实体类。
2)实力类的过度依赖。在设计阶段,如果传输需要的实体定义不合理,则对系统的灵活性造成严重的影响。造成系统不能很好地扩展。

转载地址:http://jngpb.baihongyu.com/

你可能感兴趣的文章
费雪耶兹(Fisher–Yates) 也被称作高纳德( Knuth)随机置乱算法
查看>>
C/C++中变量的存储位置
查看>>
C++中四种强制类型转换区别详解
查看>>
RTTI
查看>>
linux gdb的详细用法 运行与断点
查看>>
删除vector中重复元素
查看>>
和为s的连续正数序列
查看>>
什么是Redis?什么是nosql?NoSQL数据库的四大分类
查看>>
为什么说Redis是单线程的以及Redis为什么这么快!
查看>>
redis的过期健删除策略以及内存淘汰机制
查看>>
redis 双写一致性问题
查看>>
map 如何使用结构体作为自定义键值
查看>>
Mysql几种索引类型的区别及适用情况
查看>>
Redis缓存穿透、缓存雪崩、redis并发问题分析
查看>>
Redis持久化的两种方式
查看>>
判断一个数组,是否可以分成两个数组之和相等的数组
查看>>
背包问题
查看>>
结构体变量之间的比较和赋值原理
查看>>
C++ const修饰函数、函数参数、函数返回值
查看>>
将单链表的每k个节点之间逆序
查看>>