现在越来越觉得两者有相似之处了。SOA目前在我看来就是提供粗粒度无状态的接口,这种接口基本上和基于过程的RPC是一样的。可能我对SOA的理解是错误的,但是我总可以说我理解的SOA是错误的,错误成了基于过程的RPC吧。下面来对比一下用户界面和SOA:
参数
用户界面:某些控件中用户填的内容
SOA:传过去的对象
调用
用户界面:用户触发一个事件
SOA:调用一个接口
返回值
用户界面:返回到前面的控件中或者在别的控件中显示
SOA:用by ref传递的对象的值的修改,或者返回一个返回值
即便是对于MDI这样的用户界面,操作也是共享的。而且更能说明其无状态的模型。因为提供操作功能的界面是公共的,所以子窗口更像是SOA中客户端保存的状态,在每次调用的时候传递给服务器。
——————————
一觉起来,接着说
把控件上用户填写的内容想象成客户端的对象,不需要我们处理的功能(比如控件自己带的ctrl+c)想象成客户端的代码。把用户触发事件想象成对Service的调用,把我们代码中表示控件内容的对象想象成服务器端相应的参数对象,我们事件处理的函数就是Service了。
联想到Web Service中服务器总是先写,客户端的存根总是根据WSDL文件生成。而写界面也是类似的,总是先有功能,然后再有界面。但是往往我们写界面的时候是需要用gui设计器,先画界面。那么是不是可以反过来,先写代码,然后gui设计器根据我们指定的一些对象作映射和设计,这是不是会更符合一个程序的产生过程呢?这样是不是减轻gui工作量的途径呢?
参数
用户界面:某些控件中用户填的内容
SOA:传过去的对象
调用
用户界面:用户触发一个事件
SOA:调用一个接口
返回值
用户界面:返回到前面的控件中或者在别的控件中显示
SOA:用by ref传递的对象的值的修改,或者返回一个返回值
即便是对于MDI这样的用户界面,操作也是共享的。而且更能说明其无状态的模型。因为提供操作功能的界面是公共的,所以子窗口更像是SOA中客户端保存的状态,在每次调用的时候传递给服务器。
——————————
一觉起来,接着说
把控件上用户填写的内容想象成客户端的对象,不需要我们处理的功能(比如控件自己带的ctrl+c)想象成客户端的代码。把用户触发事件想象成对Service的调用,把我们代码中表示控件内容的对象想象成服务器端相应的参数对象,我们事件处理的函数就是Service了。
联想到Web Service中服务器总是先写,客户端的存根总是根据WSDL文件生成。而写界面也是类似的,总是先有功能,然后再有界面。但是往往我们写界面的时候是需要用gui设计器,先画界面。那么是不是可以反过来,先写代码,然后gui设计器根据我们指定的一些对象作映射和设计,这是不是会更符合一个程序的产生过程呢?这样是不是减轻gui工作量的途径呢?