This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I've been asked to provide a framework reccommendation for an application re-write that was completed in-house last year. The app was built as sort of a proof-of-concept (POC) that is aiming to be the "go forward" framework/standard for all future development, which is as follows: 26 individual voice-related platforms to be converted All will have web-service interfaces and DB back-ends Future DBs to be Oracle 10g Multiple internal development teams around the US Remaining platforms require 10 X the throughput/capacity of the POC platform
The POC framework/architecture is Struts 1.1 on Tomcat 5.0 - just real basic MVC. I think this is great because I HATE EJBs and all of the un-necessary complexity that it brings. However, can such a simple model be scaled to the Nth. degree while maintaining its simplistic structure (the war file already contains 871 classes - and this is just the POC)? I tend not to think so. I'm new here and I haven't had to time to code in the environment or roll-out updates to the environment so I'm somewhat in the dark in terms of being able to critique the existing architecture, but I've also never used Spring before so I'm really in a "weird" situation.
Please weigh-in, I just need some new thoughts and some different persectives either way.
I agree, never cared much for EJBs, as far as that goes, you're not going to replace anything EJB related with a MVC framework. MVC should just deal with how you display the end result, and how to get info from the user (forms). I would suggest using Spring and some ORM (like hibernate - integrates great with spring) using SOA approach to replace the EJB. I've seen it done with great success. As far as MVC frameworks, I've used Spring MVC, Struts 1.x and just started messing with Struts2, and of course started out with using just Servlets. I've converted Servlet to Struts 1.x to Spring MVC and I really like Spring MVC a lot. The only down side of spring mvc is that not a lot of people use it. Validation is awesome with the form binding. The downside to it is that when you get down to the impls they provide some of the code is hard to follow when you dig into the source. They also provide a LOT of different options, which is kinda good, but kinda bad. I never like too many options. From what I've done with Struts2, I really like it and it's very different than 1.x. Struts2 has easy integration with spring, just a one line config change. Validation is similar to spring's because it'll bind to the form objects (actions). Struts 1.x, pretty easy to extend and have it do what you want it to do. A lot of people know it. Validation is more of a pain compared to struts 2 and spring mvc. What you really should do is figure out what would be the best for your situation. Is this a learning POC? If so, do you really want to use old technology, or have something newer? How big of a learning curve would it be for the developers to learn a new framework and what's the risk that it may not be used correctly? There are a lot of questions that you can ask that would probably point you in the right direction. I would say good luck to you and your POC. Hope some of my experience has helped in this post.
Joined: Jun 20, 2007
Thanks Nick. The main issue that I'm having is that one of the smaller systems has already been converted, which itself was considered sort-of a POC. This is the system that uses Struts and the basic MVC pattern. So the question is: can this thing scale vertically & horizontally and can you enforce coding standards across multiple development teams to keep the code base from turning into a blotted cornicopia of what MVC should be. With that being said, I guess Spring doesn't really offer much more than Struts/MVC in terms of how the code base is maintained and expanded. But, hands down, Spring would be the best solution for testing and code refactoring.
Joined: Jan 06, 2007
I think that you can maintain larger projects using spring or struts for MVC, that's what is was created for. You may want to put together a best practices type of document because even though it's a framework there are places for minds to wonder and do some crazy things (I'm guilty at times). But I've seen struts on larger and smaller projects both with large and small teams all with success. I guess it would depend on how good the architect is and how familiar with struts or spring (mvc framework) they are. With good source control and architects that know the frameworks, I would see no issues going from a small to large project (obviously larger projects have more risk and points of failure, but I don't see struts or spring causing much, or any, of that).