[jboss-user] [JBoss Seam] - Re: Service-Oriented Architecture and Seam

norman.richards@jboss.com do-not-reply at jboss.com
Wed Jan 3 16:52:15 EST 2007


Seam will be addressing SOA, WS, etc... more in a later release, in the meantime I'll give you my take on the rest of you message.   You should take that as just my opinion, which doesn't necessarily reflect Gavin's view or any of the other Seam contributors.

I think one of the biggest mistakes we make creating applications is over-architecting and layering or applications when there is absolutely no reason to do so.  One of the revolutionary things about Seam is that it completely breaks down the layering and let's you get to the business of writing an application.  If layering suits you, use it.  But you aren't forced into over-architecture.  That's pretty much the same answer that left you unsatisfied in the docs, but it's worth emphasizing because I really think it's true.  An overwhelming number of people go about about designing what should be a relatively simple application but get caught up in "patterns" inflicted on them by their choice of technologies.  (EJB, Spring, whatever)  I think Seam's greatest contribution right now is simplifying life for the vast majority of application types out there.

Ok, let's talk tiers.  If you have to pin Seam down, I'd say you should shoot for Seam as being middle-tier components.  However, I'd simply say "application" components.  You should write components that accomplish the needs of your application is if you were writing simple Java objects.   Seam let's you, with annotations, bind to front-end GUI behaviour and back-end concerns.  Ideally, you these concerns really shouldn't influence the design of your application, but they can.  Seam is trying to eliminate those ugly places.

For instance, Seam actions don't have to return a String outcome.  You can guide your navigation in other ways.  You don't have to use UI components in your objects, you can do databinding to wrap/link your data to UI objects in the view.  (datamodel is the example seam provides, but it is an extensible framework)  So, on the far end of "layering" Seam tries to let you achieve layering by performing the jobs of all the layers - leaving you with just an application component.  Ideally it's just a POJO.

So - HotelBookAction or HotelBookingService?  Take your pick!  You should be able to write it as a generic HotelBookingService if you want, but most of the Seam examples are not trying to be anything more than what they are - simple web applications.   The naming reflects this.  If you are writing a web application, why do you need a service?  You probably don't.  Seam let's you simplify - your code and your thinking.  Yet, it's trivial to move from a "simple" web app to a complex enterprise app in seam.   It all works the same way.  

I agree that we should have more examples.  We are growing them with every release, but we aren't there yet.  Quite frankly, we don't have the resources to be able to tackle all the possibilities and still have time to get to all the planned features.  It'll only happen with more community involvement.  We've had quite a few wonderful contributions recently, but we obviously need more.  Feel free to join in. :)





View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3997720#3997720

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3997720



More information about the jboss-user mailing list