概述
在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)实力类的过度依赖。在设计阶段,如果传输需要的实体定义不合理,则对系统的灵活性造成严重的影响。造成系统不能很好地扩展。

转:java c/s tomcat 三层架构的更多相关文章

  1. java:(九大内置对象,计算服务器访问次数,filter过滤器,MVC框架,MVC和三层架构的关系)

    1.九大内置对象: <%@ page language="java" import="java.util.*" pageEncoding="UT ...

  2. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  3. Java Web 三层架构详解

    java 三层架构ssh 一个spring2.5+hibernate3.2+struts2.0组合框架,使用spring的 IoC来管理应用的 所有bean,包括struts2的 action,充分发 ...

  4. Java Web(八) MVC和三层架构

    今天终于认识到自己的渺小,想起了一句话,不努力机会来了你也抓不住,不要一直想一步登天,一直沉浸在白日梦的美好之中,一步一个脚印,有多大能力做多大的事情,走程序员的这条路,那么我就想去好公司,一切都以进 ...

  5. Java MVC和三层架构

    一.设计模式 Model 1 和Model 2 Model 1 前面学习了Servlet和Jsp,对这两个有个大概的认识,Servlet就是为了解决静态页面的问题,能够实现动态的页面,使维护,开发更加 ...

  6. Java学习笔记——三层架构

    Layer: UI层: user interface 用户接口层 Biz层:   service business login layer 业务逻辑层 DAO层:   Date Access Obje ...

  7. 【转载】 JAVA三层架构,持久层,业务层,表现层的理解

    JAVA三层架构,持久层,业务层,表现层的理解 转载:http://blog.csdn.net/ljf_study/article/details/64443653 SSH: Struts(表示层)+ ...

  8. MVC设计模式与Java Web经典三层架构

    MVC设计模式 MVC的概念 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  9. Java单体应用 - 架构模式 - 01.三层架构

    原文地址:http://www.work100.net/training/monolithic-architecture-3level.html 更多教程:光束云 - 免费课程 三层架构 序号 文内章 ...

随机推荐

  1. 20145327 《Java程序设计》第八周学习总结

    20145327 <Java程序设计>第八周学习总结 教材学习内容总结 NIO使用频道(channel)来衔接数据节点,在处理数据时,NIO可以让你设定缓冲区(Buffer)容量,在缓冲区 ...

  2. spring MVC Action里面怎么设置UTF-8编码集

    /* 编码转换,确保写数据库的时候不会出现乱码 */ public class CodingConvert{ public CodingConvert(){ // } public String to ...

  3. 解读:Hadoop Archive

    hdfs并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode中占用150byte内存.如果存储大量的小文件,它们会吃掉NameNode节点的大量内存.MR案 ...

  4. Python多版本共存管理工具之pyenv

    目录 Table of Contents 1. 安装pyenv 2. 安装Python 3.0 使用python 参考 Table of Contents 经常遇到这样的情况: 系统自带的Python ...

  5. terminal配置

    阅读目录 前言 使用 tmux 复用控制台窗口 在命令行中快速移动光标 在命令行中快速删除文本 快速查看和搜索历史命令 快速引用和修饰历史命令 录制屏幕并转换为 gif 动画图片 总结 回到顶部 前言 ...

  6. git将本地已经存在的分支和一个指定的远端分支建立映射关系

    Make an existing Git branch track a remote branch? Given a branch foo and a remote upstream: As of G ...

  7. 随笔分类 - java高级特性

    转自:http://www.cnblogs.com/linjiqin/category/282013.html

  8. Dive into Spring framework -- 了解基本原理(二)--设计模式-part2

    Template模式 Template模式顾名思义是提供了一种模板,也就是针对某种业务提供了模范框架.这个在spring中是属于核心模式的,因为其ApplicationContext抽象类就是模板模式 ...

  9. Codeforces Round #241 (Div. 2) B. Art Union 基础dp

    B. Art Union time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  10. 转载:Object的create方法文档

    源地址:https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Global_Objects/Object/create#.E4.B ...