简单Web应用框架设计

简单Web应用框架设计

对于web应用,我们可以简单将其抽象归纳为如图中所示几个部分:客户端(Client)、请求处理(Router)、业务处理(Controller)、外部调用(eAPI)、视图引擎(View)、服务引擎(Service)、数据持久(DAO)和数据库文件系统。晓宇码匠1.请求处理Router

请求处理主要是对客户端全部请求的统一入口,和硬件路由器的功用相似。请求处理主要对客户端请求进行过滤、定位控制器、权限校验等作用。

2.业务处理Controller

业务处理主要是结合具体的业务对用户的请求进行处理,其实这也是我们常说的控制器;控制层负责处理逻辑控制。

3.视图引擎View

视图引擎主要调用模板对业务数据进行渲染,输出html界面文件。

4.服务引擎Service

服务类似于业务处理,从整个应用层面来看,服务属于一类稳定的、安全的、全局的业务应用,处于业务和数据的中间。在有的应用中,直接将服务层合并到了业务处理中,但是我还是倾向于将服务剥离出来;服务层负责处理业务。

5.数据持久DAO

数据持久主要用于和数据库文件系统交互,也就是我们经常说的CURD操作。通常调用数据库或文件系统提供的CURD驱动接口(DataDriver)实现;dao层是单精度方法,负责实现功能,不处理业务。

6.数据库、文件系统

数据库、文件系统主要用于提供数据的CURD具体实现,如:MySQL、NTFS文件系统,并为三方应用提供数据驱动接口DataDriver。

我的ssm的分层方式
晓宇码匠

  • com.xiaoyu.shop.bean:实体类
  • com.xiaoyu.shop.controller:控制类(负责业务逻辑)
  • com.xiaoyu.shop.dao:接口类
  • com.xiaoyu.shop.instrument:工具类
  • com.xiaoyu.shop.service:服务类(功能的具体实现,供控制类使用)
  • com.xiaoyu.shop.test:测试类
  • com.xiaoyu.shop.util:其他类(外部调用或者拦截器)
  • resources:静态资源
  • webapp:视图层
    以上也是基于MVC架构来实现的

MVC的优点
1.低耦合性
  视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.高重用性和可适用性
   随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何 WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是 一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这 些表示所需要的命令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
3.较低的生命周期成本
  MVC使开发和维护用户接口的技术含量降低。
4.快速的部署
  使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
5.可维护性
  分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
6.有利于软件工程化管理
  由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。

普及

交互式系统:

  • PAC模式定义表示-抽象-控制(Presentation-Abstraction-Control,PAC)体系结构模式以合作agent的层次形式定义了交互软件 系统的一种结构。
    • 介绍
        PAC模型以树状层次结构构建交互式应用层次。PAC agent共分三层:顶层PAC agent,底层PAC agent和中层PAC agent。但要注意的是,PAC并不是每个字母对应一层。后面,出现“agent”的地方与“PAC agent”同义。
        顶层agent负责系统的核心功功能。比如说建立在一个数据仓库上的应用程序,顶层agent就相当于访问数据仓库的接口。
        中层agent则是负责沟通底层和顶层agent。注意中层agent并不一定直接就和底层agent通信。因为中层agent中也可以分层次,高级别的中层agent管理低级别的中层agent,这个就有点像树里面的非叶子节点。
        底层agent表达了独立的语义概念。比如,负责显示功能的agent,柱状图、饼图等各种视图都可以通过一个agent来控制。底层agent负责直接跟用户打交道,也就是除了显示数据还可以接收输入。
        
        个人认为说agent分为三层还不如说agent分为三类。虽然,这样表述系统层次结构不太明显,但是起码不会和层次模型混淆。
  • MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller) 
    (控制器Controller)- 负责转发请求,对请求进行处理。
    (视图View) – 界面设计人员进行图形界面设计。
    (模型Model) – 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106705.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • qq不能接收图片如何解决_qq文件未上传至服务器

    qq不能接收图片如何解决_qq文件未上传至服务器原因一:一般是网速比较慢,电信联通教育他们内部传图片大家都能收到,教育网给联通发就一般收不到了,清理下你的QQ图片文件夹,里面堆积的图片太多了原因二:由于网络问题,查看手机移动数据流量或者wifi连接是否正常。QQ版本问题,将QQ版本升级到最新版本重新尝试发送图片。查看对方是否删除了自己以及屏蔽了消息,这样是无法正常发送图片如果你不能确定是否是因为QQ图片文件夹的关系导致自己不能发送图片,那么小…

  • 分布式锁的使用场景_分布式锁的三种实现的对比

    分布式锁的使用场景_分布式锁的三种实现的对比前言对于锁大家肯定不会陌生,比如synchronized关键字和ReentrantLock可重入锁,一般我们用其在多线程环境中控制对资源的并发访问。但是随着业务的发展,分布式的概念逐渐出现在我们系统中,我们在开发的过程中经常需要进行多个系统之间的交互,于是上面的加锁方法就会失去作用。于是在分布式锁就自然而然的诞生了,接下来我们来聊一聊分布式锁实现的几种方式。分布式锁的使用场景 效率性:使用分布式锁可以避免不同节点重复相同的工作。 正确性:分布式锁可以避免破坏正确性的发生,如

  • 文件读写api函数是什么_c语言文件的读和写

    文件读写api函数是什么_c语言文件的读和写文件操作API函数详解在VC中,大多数情况对文件的操作都使用系统提供的API函数,但有的函数我们不是很熟悉,以下提供一些文件操作API函数介绍:一般文件操作APICreateFile打开文件要对文件进行读写等操作,首先必须获得文件句柄,通过该函数可以获得文件句柄,该函数是通向文件世界的大门。ReadFile从文件中读取字节信息。在打开文件获得了文件句柄之后,则

    2022年10月26日
  • 简述控制反转ioc_什么是IoC控制反转

    简述控制反转ioc_什么是IoC控制反转静态类的使用是一个有争议的话题,有人甚至提倡不要在类的名称上使用作用域限定符。关于静态特性争论的焦点在于一个被称为IoC控制反转的设计原则。IoC这个设计原则试图在面向对象编程中去掉所有相互依赖的现象。这个原则对于复杂的系统来说是很重要的。它使得对象具有更好的多态性和封装性。相互依赖的现象越少,就越容易单独测试某个组件。静态类与IoC之间的问题在于静态访问特性,这个特性从本质上来说,定义了两个类之…

  • generic host process for win32_weblogic kernel.default

    generic host process for win32_weblogic kernel.default classWin32_NetworkAdapterConfiguration:CIM_Setting{booleanArpAlwaysSourceRoute;booleanArpUseEtherSNAP;stringCaption;stringDatabasePath;booleanDeadGWDetectEnabl

  • centos7重启apache、nginx、mysql、php-fpm命令

    centos7重启apache、nginx、mysql、php-fpm命令

    2021年10月19日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号