我们系统的web层(Spring的Controller) 和 业务层(Manager)是分开部署的,这属不属于分布式?
这样部署有什么好处?
每一个manager,都有一组对应的ejb2接口实现,
如XXXManagerHome,XXXManagerLocal,XXXManagerLocalHome,XXXManagerBean.
在XXXManagerBean中在调用 实际的Manager。
项目部署在weblogic上,在Controller里面XXXManager注入的并不是XXXManagerImpl,而是一个$Proxy,
debug的时候看他的类型ClusterableRemoteRef。
举个例子,配置文件中loginController是这样定义的:
class="com.LoginController">
另外的一个配置文件中:
com/ejb/UserManager
false
false
com.UserManager
这样部署有什么好处?
哦~~了然,这样就属于分布式了,你想想看,如果不这样采用分布式,只有一台服务器,如果當机了怎么办?
分布式你可以这样去理解,其实就是把一件事分给很多个能做这件事的人去做,这里面这些人都要具备有两个特性,一个是他们是不同的人,一个是他们具有处理你分配的这件事的能力。
所以你这个不能算是分布式。他们是把其中的层次分开了,他们把业务层次分开,分开有什么好处呢?如果很简单的一段代码,很单一的一个功能,完全可以不用这么麻烦,你一个实现类就可以搞定了,但是作为一个大型项目,可能是很多人一起开发,就算是一个人开发,你指不定开发到后来突然想起来前面的哪个类要需要修改,对,翻源代码,改之,你是爽了,可是万一改错了呢?如果改了导致了不可恢复的错误,怎么办?
分层的好处是解耦,层与层之间通过接口来调用,而在接口的基础上再写他的实现。这样你写错一个类我们只要再写一个实现类就可以了,而不用改动原来的代码,这个就是开发过程中应该遵循的‘开闭原则’。你的同一层可以很臃肿,但要记住不要轻易地改动原来的代码!
这样可以缓解压力啊,当并发业务量很大的时候,web层只负责分发,而后台manager的处理需要资源多,一旦响应跟不上,可以很容易的通过扩展来提高性能。
你没太明白一楼的话啊,他说的就是你的理解是错误的。
所谓分布式,是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。
简单的说,应用比较多的是多服务器运行,但是客户感觉的还是一个服务,一个服务器挂掉呢没关系,其它的会接上。
你说的那个最多也就叫个模式,其发源是被称作“三层架构模型”的东西。好处是职责分开、降低耦合度。