关于.Net Application Server对象访问方式的设计(2.上)
不会先谈论部署的方式以及用户得作些什么,我之所以先说明这个问题,是因为部署的问题致关重要,但是我想把这个问题靠后一些谈论,并不是我偷懒,因为很多人一开始会对下列问题感兴趣:被用户(开发人员)已经部署好的对象是如何被外界(确切地说是被客户端程序)访问的,服务器如何确保访问的安全、高效、可拓展等等这些的问题。下面我看一下设计中涉及的问题,然后解决对应的问题:
问题 |
解决方案 |
1 直接访问对象不太好,因为会有潜在的安全性问题,因为任何“人”都可以访问对象(这里访问的含义是“调用一个方法”),而且,没有时机去插入一些对象想要的服务,如日志服务,如果有时机的话,我也不想让开发人员把业务逻辑无关的代码和实现业务逻辑的代码放在一起(我想您肯定有过这样的经验),也许会有人建议使用AOP,但是那样的话开发人员开发的类不得不使用一些“声明性编程”的办法,类又与某些框架有关系了,这样移植性不好! |
设计一个“保镖”,“保镖”也是一个对象,它的生命会与业务对象的生命在一定条件下同期化,也就是说只要业务对象活着,“保镖”也会活着,但是也有例外,这个例外下一文章再解释。客户端程序(可能是任何客户端)直接访问“保镖”的客户端代理程序(相当于Remoting的透明代理,它知道如何处理网络协议),而“保镖”的客户端代理程序通过网络访问“保镖”对象,这时“保镖”会验证访问者的身份,一旦通过,服务会被插入(如何插入?具体细节下一文章考虑),并且将调用转发给实际干活的业务对象。这里的设计还很粗糙,但是可看到基本的下列好处: “保镖”本身是一个符合Remoting规范的远程对象,也就是说它必须是可以串行化的,或者必须从MashalRefObject继承,它本身带有很多.Net框架中的东西,客户程序通过其透明代理与其通信(客户程序不会知道服务器提供的结构,它会认为它访问的就是业务对象本身),“保镖”会与实际的业务对象进行通信,这个业务对象不必是一个Remoting远程对象,只要和“保镖”在一个地方就成,这样开发人员就不必按照Remoting规范设计具体的业务对象了,业务类的设计完全与Remoting无关。这里给“保镖”起个名字-ECO(Enterprise Component Object).顺便说一句,这个ECO是部署业务组件时由服务器生成的,不需要开发人员考虑它的细节。 |
对于上面这样的设计您可能会有如下问题,不过这些问题我在下一文章中给与答案: 1)ECO或者业务对象对象的生命周期如何管理,在它们的一生中发生了什么? 如:客户端如何创建与ECO的连接,在客户程序不在访问服务时,如何处置对象?如果与服务的交互是一个Session的一部分,服务体系结构如何令服务对象记录客户状态?(要利用Remoting基础设施了) 2)ECO的结构以及原理? 3)服务如何被插入的?对象需要什么服务?这些服务可以配置吗? |
可能还会有很多问题,一定会有问题,请大家提一些意见或者需要解决的问题。
转载于:https://www.cnblogs.com/LeoLinux/archive/2007/05/04/735930.html
关于.Net Application Server对象访问方式的设计(2.上)相关推荐
- JVM篇--详解对象创建过程-对象结构-对象访问方式
hello,hello,刚学过的东西瞬间忘记,是我年龄大了还是年龄大了,可我明明才20出头啊(凑不要脸),其实25了,偏题了....今天整理一下关于JVM对象篇的结构,会记录对象创建过程,还有对象的内 ...
- 关于虚拟机中对象访问定位的两种方式的一些思考
前言 本文是在周志明老师经典作品<深入理解Java虚拟机>第二章第三节的基础上对句柄和直接指针两种对象访问方式的深入思考,有不准确的地方希望读者不吝赐教. JVM中访问对象的两种方式 1. ...
- JVM(4)——对象访问
一.对象创建过程 在Java语言中,对象是如何访问的呢?对象访问在Java语言中无处不在,是最普通的程序行为,但即使是最简单的访问,也会涉及Java虚拟机栈.Java堆区.方法区. 对于下面这行代码, ...
- 对象实例化指针_JVM第三课:一文讲透对象的内存布局和访问方式
对象的内存布局和访问定位 对象的实例化 对象的创建方式 new Class的newInstance方法 Class> aClass = Class.forName("com.mu.Co ...
- 以对象的方式来访问xml数据表(二)
为什么要以对象的方式来访问xml数据表? 还记得,自己是在一次完成师兄布置的任务时接触到了xml,那时候需要用xml来作为数据文件,保存一个简单的图书管理系统的数据.于是就知道了,可以用xml文件来保 ...
- 使用Java程序通过http post访问Application server
Created by Jerry Wang, last modified on Aug 20, 2014 source code如下: import java.io.FileNotFoundExcep ...
- Python与数据库[2] - 关系对象映射/ORM[4] - sqlalchemy 的显式 ORM 访问方式
sqlalchemy 的显式 ORM 访问方式 对于sqlalchemy,可以利用一种显式的ORM方式进行访问,这种方式无需依赖声明层,而是显式地进行操作.还有一种访问方式为声明层 ORM 访问方式. ...
- IBM WebSphere Application Server 诊断和调优(07年写的,原JavaEye精华帖)
这是[url=http://zwchen.iteye.com/blog/646063]上篇文章[/url]的续篇,也是07年初发表于JavaEye,被评为精华帖,浏览近四万次,也被各大IT媒体转载(g ...
- 简介 NetWeaver Application Server 的三层架构
NetWeaver Application Server 是三层架构: Presentation layer .Application layer .Database layer . 上图来自于 he ...
最新文章
- JAVA图形界面(GUI)之布局管理器
- json-server模拟后台接口
- Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架...
- java01基础简介
- OpenGL 入门第一课 视窗以及三角形
- PHP 8.0 源码编译安装 JIT 尝鲜
- Android设备间通信(wifi连接)
- 苹果手机显示iphone已停用连接itunes_iTunes备份道理我都懂,但我依然不想备份的?...
- java流水号自增长_Java自增流水号生成
- 数据组织与存储(五)
- 车载SOA测试利器——Parasoft SOA自动化测试方案
- UI设计是什么,就业前景怎么样?
- 阿里云-云存储OSS
- 动力电池编码追溯系统_如何保持动力以继续学习编码
- 《代码整洁之道》—第1章1.4节思想流派
- @OnLifecycleEvent 遭废弃,推荐使用 DefaultLifecycleObserver 替代
- Sublime3 设置Python快捷键
- java实验指导_《JAVA程序设计》实验指导书(完整).pdf
- 央视影音 服务器暂时无法连接服务器,cbox不能播放怎么办 cbox故障解决方法【步骤】...
- 用java判断一个数是否为质数