Java Architecture - Question about Solution Design
This might seem a very stupid question but things are pretty complex for me ever since i start my new jo开发者_开发百科b.
In my earlier carrier as jr. software developer, the applications that i have worked on mainly consisted of Hibernate, Spring and UI (JSF, YUI etc). The app i am working on now is huge, running on BeaWebLogic server.
The design of earlier apps were like 2-3 projects separating the app into DAO, Service and UI layer, deployed at Tomcat and could be run from build in Eclipse. Easy to debug and all that.
However, the current app is being deployed using Python Scripts, the BEAServer is running separately and from Eclipse i have to connect to Remote Java App using some arguments.
My Question is "Why this design adopted here" - I will discuss this thing within the organization as well but i want to discuss it here before.
I think you should ask your question within your organization first (taking advantage of the fact that you're new in the job). After all, your organization should know why they designed the app the way they did.
However, I will hazard a guess (and only a guess, as you are vague on the details): The app you are now looking it is just one step up in complexity and purpose than what you worked on before. If you look closely, I think you will again find DAO, Service and UI layer - however, they will no longer be in the same application. Instead, you'll likely find the UI put into a dedicated client app, while the server implements the Service and DAO layers. One immediate advantage is that the server computer can be dedicated fully to serving the data, while the UI is processed on the users' computers. You may also find that some of your apps clients aren't humans at all, but other computer systems (which logically wouldn't need a UI).
Edit to answer to alee's followup comment:
The short answer is: It depends.
The first thing I'd do in the design of an Enterprise system is to find people with more experience in this kind of thing. But left to my own devices, I'd start with looking at what the system is supposed to do; how many of the 50M users are online at the same time; what kind of UI is required and so on. Based on that information, I would then draw up the initial architecture, and decide which technologies to use.
In all likelihood, I'd use Springs and Hibernate for the innards of the server, as both technologies are powerful, well established, but also because I happen to be somewhat familiar with them. The question EJB-or-not again would depend on the circumstances - note though that it is possible to use EJB facilities just to implement the client/server communication, while the rest of the system is written in more lightweight manner.
精彩评论