我们开发了一个独立的应用程序,eclipse rcp作为ui层(前端),ejb和jpa作为后端。现在我想将web应用程序添加到ui层。以下是我们实现的架构。
目前我们正在使用远程方法调用来查找ejb引用(JNDI查找)。。我们应该对架构进行哪些更改以使其模块化?我们应该将BusinessDelegate和服务定位器移动到服务器端workspace.if当客户端可以进行通信时呢?
基本上我的问题归结为,具有不同UI实现的应用程序架构是什么(比如eclipse RCP或web或Android)。
答案 0 :(得分:0)
上面是一个经典的J2EE架构,它是Spring框架出现之前几乎所有旧应用程序中经过试验和测试的设计模式。
如果您正在使用它,那么为了使您的UI成为可拆卸组件,服务器端代码将从Struts Action类开始。它可能/可能不是从Action类层本身开始,但是之后的任何层都应该是Servre端代码的一部分,我的意思是从业务转换器本身开始。
UI层可以是一个Front控制器。您应该能够根据所需的不同实现来更改它。您可以使用Webservices从服务器层划分UI层。我猜你可能不得不对上面的内容进行任何修改,只需添加一个可以解决问题的Web服务层。上面的架构不需要进行重大更改,它可以正常工作
答案 1 :(得分:0)
现在我想将web应用程序添加到ui层... 我们应该对架构进行哪些更改以使其模块化?
我不清楚你的意思是什么" modular"在这种情况下, 但是根据图表,你有一个定义明确的服务层(外观层) 这是满足您要求所需的关键点之一。 使用这种架构,不应该将这种服务层暴露给新型客户端。
我们应该将BusinessDelegate和服务定位器移动到服务器端工作区吗?
没有。这些模式"播放"在客户端,请记住BusienssDelegate and ServiceLocator的目标 是将客户与服务分离。客户端和服务之间的松散耦合 但是,为您的架构增加了额外的优势, 在您需要实现的场景中,这些优点并非绝对必要。 (添加新的Web前端)
基本上我的问题归结为, 什么是具有不同UI实现的应用程序的体系结构(例如eclipse RCP或web或Android)。
使用当前体系结构,您应该能够使用来自java Web组件(ManagedBean)的BD和SL调用服务,就像从当前客户端调用服务一样。 对于Android客户端,可能更合适的方法是通过WebService外观公开当前服务,该外观充当未来WS客户端和当前服务层之间的中介。
总结一下,虽然在不了解整体情况的情况下总是很难谈论建筑,但我认为你是在正确的方向。