• (zt)OO vs. SOA


    Removing the intimacy to create services

    Ram is back from vacation has been blogging on the subject of SOA and OO.

     

    While I agree with option C in Ram’s post, some of his comments took me back to the PDC talk where Don was explaining the difference between a service and an object.  One of his observations that resonated with me was that ‘services help remove the intimacy’ from distributed computing.  For those who didn’t see the talk, here’s my extended and modified analogy from this:

     

    Imagine two entities, A and B.  A wants to borrow $5 from B in good faith.  A plans to return the money to B by the end of the day.

     

    If these two entities were objects, the interaction may look like this: 

     

    A walks up to B, goes into B’s pocket, promptly removes his wallet and the $5.  After he has the money, A leaves.  B is left wondering ‘Hey, what happened?  I was robbed!’  B doesn’t know if and when he’ll see his money again.

     

    In this case, the interaction between A and B in the object world is very intimate.  B can of course use security to prevent A taking the money, but in general there is little to do to remove the intimacy of the interaction.  

     

    To think like a service, you have to remove this intimacy.  One of the easiest ways to do this is to think about how a similar interaction would take place in the real world.  Going up to another person and trying to forcibly remove cash from their wallet in this way is likely to end you up in some trouble.  Instead, the interaction in the real world (and the model that we can adopt for a more service based approach) looks like this:

     

    Again, A wants to borrow $5 from B in good faith. 

     

    A walks up to B and asks ‘Hey, can I borrow $5?  I forgot my ATM card and need to buy lunch’.

     

    B wants some reassurance about A.  B takes a quick look at A.  Assuming no breakthroughs in human cloning, B decides he can trust A as he has had previous interactions, and A still looks and sounds the same.   Despite this, B wants some validation that his money is going to be returned.

     

    ‘When will I get my money back?’ B enquires.

     

    ‘I’ll have it back to you by the end of the day, plus an extra $1 for your trouble’.                                        

     

    B accepts the proposal, opens his wallet and gives A the $5.  The interaction is concluded and A walks away happy.

     

    Although a simple analogy, I’ve found that removing the intimacy and thinking about how the interaction could occur in the real world can really help when defining services – and more importantly the types of interfaces that services expose.  Even if the technology promotes a service orientated approach, it’s this type of shift in thinking that helps define true services as opposed to merely exposing objects.

     

     

    Published Thursday, January 29, 2004 11:48 PM by smguest
    Done is better than perfect.
  • 相关阅读:
    天融信防火墙抓包
    windows2019jihuo
    CentOS多路径软件配置(光纤连接存储)
    listener.ora,tnsnames.ora中一个空格的威力
    excel 金额自动转中文大写
    js的点滴
    写ppt的助手
    珠峰-6-koa-express
    珠峰-6-http和http-server原理
    珠峰-6-node
  • 原文地址:https://www.cnblogs.com/zhaorui/p/931607.html
Copyright © 2020-2023  润新知