1 2 3 4 Previous Next 56 Replies Latest reply on May 9, 2006 6:08 AM by marklittle Go to original post
      • 30. Re: Transformation service interface
        marklittle

         

        OK, I think the flow is starting to become a bit clearer to me now (I hope) :-) I updated the http://milyn.org/images/jbossesb-transsd.jpg with my current understanding. Is this any more accurate Mark?


        That looks like it corresponds well with the text in my previous posting, with the caveats: the interaction with the transformation service should (at least logically) look exactly the same as any other service invocation, i.e., MOMAbstraction->Dispatcher Hierarchy->MOM Implementation.



        Questions from the sequence diagram:
        1. Is the MOMDispatcher sequence between the transformation dispatcher and service required??


        One of the things that's missing from the diagram (and probably only implied in the architecture document) is the interface/stub that sits above the MOMAbstraction. Although clients can talk to services "raw", typically what they'll do is interact via some client stub that may be auto-generated from the WSDL or contract that came from the service registry lookup (similar to the client stubs that RMI produces). So in that case, all services that a client uses may be abstracted above the ESB such that the ultimate user doesn't have to see the ESB at all. And in which case, since the transformation is a service, even the dispatcher may be using it via a stub.

        Does that help? If not, let me try to knock up a diagram later today.

        Also remember that colocation optimisations should come afterwards: if the transformation service is in the same address space as the client, then some of this may be bipassed. But let's concentrate on the architectural details first.


        2. Can the contract definition cope with this or will it require some form of contract definition hierarchy, one for the contract between the transformation dispacther and transformation service nested inside a second contract defintion for the higher level contract between client c and service s? This would seem nuts!


        No, the way I envisioned it the contract definition information that the client got for the first service (S) would have to contain information about the transformation service needed to talk to S. This may be explicit, or it may be implicit (implicit: the format of the vocabulary S talks will be mentioned in the contract and if it's not the same as the one the client talks then the client will need to find out where an appropriate translation service resides). The contract for the transformation service would be looked up in the registry in the same way as any other service. However, there is no reason why this lookup couldn't be done by the registry and returned within the first lookup response, as part of the contract for S. In fact, WS-A provides hooks for that if necessary.


        So, from this, do we still need a "special interface" for transfomation services? I still can't see why we would!!


        We need language level bindings (c.f. Java interfaces) - these may be generated automatically from WSDL (as an example), but ultimately they are the things that the developer will program against. Sure some developers may want to work directly at the ESB API level and we won't prevent that, but it's not necessarily the most natural fit for the majority of users: we need to make the glue between endpoints as simple as possible and many pre-existing services that will want to plug in to the ESB will already have interfaces defined.

        Then we need the message exchange pattern, which is essentially what something like WSDL describes: what's the format of the messages that the service will accept, are they request/response or one way, etc. This is another level of interface.

        • 31. Re: Transformation service interface
          marklittle

          BB features ;-)?

          • 32. Re: Transformation service interface
            arvinder

             

            "mark.little@jboss.com" wrote:
            BB features ;-)?


            Tom's talking old school style .. ;-)

            • 33. Re: Transformation service interface
              marklittle

              Ah! Clear as mud then ;-)

              • 34. Re: Transformation service interface
                marklittle

                The "interface" (to encapsulate both the developer level and runtime level) to the transformation service may be extremely simply (as you already posted). But since everything in the JBossESB architecture is a service, it needs to have an "interface". We shouldn't add exceptions to the rule unless there's a really good reason to.

                As I said, optimisations such as co-location, can be catered for later. I don't think transformation will be alone in being able to use those optimisations, but we need to get the overall design right first.

                But let me know if we need a diagram.

                Plus, this is a very interesting discussion!

                • 35. Re: Transformation service interface
                  tfennelly

                   

                  "arvinder" wrote:
                  "mark.little@jboss.com" wrote:
                  BB features ;-)?


                  Tom's talking old school style .. ;-)


                  Nah, just lazy when it comes to typing :-)

                  Need time to digest the responses you've posted here Mark, but I don't have that right now - the people that pay for the food on the table are calling...

                  One thing that I would say about this transformation specific interface... it sounds to me like a feature we can add in later releases - when we've a better idea. I'm afraid we're going to end up deraming up something here before we've a good understaning - an understanding I feel will only come after building some of this stuff and suing it for real. Wouldn't implemntations of this interface need to sit inside some sort of container that adapts the implementation to the "base/core" service interface? Maybe I still don't quite get it!!

                  • 36. Re: Transformation service interface
                    marklittle

                    Think of the need for a transformation interface in the same way we need an interface for the registry and other services.

                    Anyway, go and put food on your table :-)

                    • 37. Re: Transformation service interface
                      tfennelly

                      BTW, still think a diagram from Mark would be a good idea. I'm a visual sort of creature; reading a load of text makes my head hurt :-(

                      • 38. Re: Transformation service interface
                        marklittle

                        It's on my to-do for today. Let's hold off on any followups here until I've posted the diagram to the wiki (followups mean I have to read them, which means I have to spend time away from the diagram) ;-)

                        • 39. Re: Transformation service interface
                          tfennelly

                           

                          "mark.little@jboss.com" wrote:
                          Think of the need for a transformation interface in the same way we need an interface for the registry and other services.


                          I can see the need! I just find it hard to see a meaningful path to creating this interface at this stage.

                          Gimme a chance to do some work-work here. Don't reply to this for a few hours - I can't resist!!

                          • 40. Re: Transformation service interface
                            tfennelly

                            snap

                            • 41. Re: Transformation service interface
                              marklittle

                              There's a need because every service has to have an interface of one form or another. That interface may be extremely simple, and that's fine. But it has to exist.

                              • 42. Re: Transformation service interface
                                marklittle

                                OK, so slightly later than intended, I've uploaded a couple of diagrams to try to illustrate what I was saying here. The first diagram shows the whole locate/bind/transform/invoke interaction, whereas the second diagram is an expansion of interaction 2 in the first: it shows how the client (or rather the transformation dispatcher) invokes the transformation service.

                                To try to make life easier, I've abstracted a lot of the service-side details into a cloud. Hopefully that won't complicate matters.

                                • 43. Re: Transformation service interface
                                  tfennelly

                                  Lovely Mark, that all makes sense to me and was pretty much what my understanding was.

                                  So, the little green boxes for the interface to the transformation service. To go back to your earlier post:

                                  There's a need because every service has to have an interface of one form or another. That interface may be extremely simple, and that's fine. But it has to exist.


                                  Questions:
                                  1. Are you saying there needs to be a "unique" interface for each service (or service family/type e.g. Transformation, Registry etc)?

                                  2. Could 2 or more types of service not share a common interface signature?

                                  3. Do you expect Client applications external to the ESB to be calling Transformation Service impls?

                                  So, where are am I coming from here? Well, I'm not sure how to confidently dissect a "service(Message[] msgs)" type signature and specialise it for a transformation service. I don't think one can rule out being able to dream up a usecase that might require access to any of the composite parts of the Message type as defined in the requirements doc.

                                  Also, because I was considered a Transformation Service as being internal to the ESB, I was think the service interface could be something like "service(Message[] msgs)" i.e. a generic service interface. We can specialise later, once we've built some of this stuff and have a better feel for what a more specialised service interface might look like - no external dependents.

                                  Of course, you can turn that last argument on its head and say: lets start with what we know we want and start adding to the interface. I'd ordinarily go with that approach only for the fact that I think there are so many transformation usecases out there that you can never rule out requiring access to all parts of the Message.

                                  Am I making sense at all, or am I still missing the point completely??

                                  • 44. Re: Transformation service interface
                                    tfennelly

                                    sorry about the grammatical booboos