看看这段代码:
class TaskController < ApplicationController
active_scaffold :tasks
protected
def before_update_save(record)
record.updated_by = current_user
end
end
我们常常要讨论一段逻辑放在哪里,页面和controller之间一般好说,问题在于业务层和controller之间。而这个例子很典型,current_user这样的信息不可能在业务层得到,因为这是状态信息,而controller可以提供这些。
在RIA的冲击下,controller的功能不再包含大量用户UI的交互逻辑,因此它的价值也就凸现了出来──会话,这才是controller真正擅长的地方。从这个意义上说,我们从前搞不清楚的业务逻辑层/服务层/表现层的架构体系,现在可以用更加容易理解的架构进行代替了:业务逻辑层/会话层/表现层
这里,唯一不变的仅仅是业务逻辑层,其它两个都要说明:
会话层就是controller,在一个无状态的架构中,最终将用户状态与后端业务联系的就是这个会话层──它的职责也仅此而已。
表现层一般对应我们常说的html/js/css等,它是RIA的,它自己有MVC结构,由于都在浏览器上,因此具备很好的用户响应能力。
换个角度看,有了会话层和表现层,这个系统架构再加上tcp/ip协议,看看像不像osi七层?
也许开放系统体系结构(OSI)的7层协议本来就是网络架构和应用架构衔接的结果
分享到:
相关推荐
连接的数据库为员工信息管理系统,采用Contrller,Service,Dao三层结构,controller层为servlet,下层均有一个接口和一个实现类。Bean的基本属性为String类型:NO,NAME,SEX,AGE。采用JSP显示在浏览器上,完成了登陆...
根据所提供的文件信息,以下为《2011.11.Anurag.A study on PID controller design for system with time delay.pdf》文档中相关的知识点分析: 1. PID控制器设计的研究背景:PID控制器广泛应用于工业领域,因其...
DirectX是微软开发的一组应用程序接口(APIs),主要用于创建高性能的游戏和图形密集型应用程序。在《DirectX高级动画制作》这本书中,作者深入探讨了如何利用DirectX的强大功能来实现复杂的动画效果。...
在Spring AOP(面向切面编程)中,我们经常利用它来实现横切关注点,如日志记录、事务管理等。"springaop拦截controller日志"这个主题旨在讲解如何使用Spring AOP来拦截Controller层的方法调用,并在方法执行前后...
k8s.gcr.io/cloud-controller-manager:v1.15.3镜像tar包,使用 docker load --input cloud-controller-manager_v1.15.3.tar进行导入
USB\VID_6547&PID;_0232&REV;_0001 USb 转串口驱动,XP 可用
前端UI界面由Vue.js编写, 前端通过axios发送请求(url), 并由axios发送至Contrller类, Controller类调用Mapper接口的方法, 操作数据库并把返回的数据传到前端。 UI介绍 一共有八个页面, 分别对应学生, 课程, 选课, ...
遥控器嗨,这是一个仍在开发中的简单应用程序(到目前为止)。 任何建议或请求请求将受到欢迎! 鼠标行为使用设备的触摸屏控制PC的光标。... 3.0 Update to Android Studio- 2.21 Fix VariableDeclarationId Warning- ...
pelian_contrller.txt priority_encoder_highest.txt priority_encoder_ls.vhd pseudorandom.vhd ram_16x8.txt ram_LS.vhd random_generator.txt reg12.vhd reginf.vhd register_374.txt selsigen.vhd shift_...
4. 控制器 Action 和 Contrller 必须赋值。 5. 赋值方式:以默认的方式来赋值,或者通过 URL 赋值,会覆盖默认值。 6. 当 URL 可以匹配多条路由规则的时候,匹配第一个。 URL 路由参数的约束 1. 使用正则表达式...