精华帖 (3) :: 良好帖 (4) :: 新手帖 (1) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-04-13
最后修改:2010-04-13
hatedance 写道 我请问lz,你喜欢哪个?
login(String userId,String password); String xml ="<request><parameter name="userId">foo</parameter><parameter name="password">bar</parameter></request>"; login(String xml); 大家好,我才是lz,‘JE帐号’小盆友被大家误认了 1.使用xml作为数据传输方式是因为银行对外业务接口确定为xml报文形式,也就是客户方的要求,这个是项目签订时所定,另外银行内多套系统间都使用xml报文形式,相当于一种契约,这个我相信大家都能理解,作为项目经理也没有必要在这个需求上引导客户。 2.如果是简单的参数请求我当然喜欢第一个,不过这里是个请求报文的简单例子,其中accountid可以有很多,在函数实现时传入大于5个以上参数时,调用方也很麻烦,因为需要知道参数顺序 <request> <service>accountype</service> <type>0</type> <trandate>20080111</trandate> <data> <items> <item> <accountid>6601060000026</accountid> <accountid>32432432424</accountid> </item> </items> </data> </request> 要是 login(String service, int type, String trandate, String[] accountids); String xml ="<request><service>accountype</service><type>0</type><trandate>20080111</trandate><data><items><item><accountid>6601060000026</accountid><accountid>32432432424</accountid></item></items></data></request>"; login(String xml); 你喜欢那个呢? |
|
返回顶楼 | |
发表时间:2010-04-13
andot 写道 hatedance 写道 我请问lz,你喜欢哪个?
login(String userId,String password); String xml ="<request><parameter name="userId">foo</parameter><parameter name="password">bar</parameter></request>"; login(String xml); 我喜欢 login(String userId,String password); 我想lz从内心里也是喜欢这个,但是为了面子,他可能会选择: String xml ="<request><parameter name="userId">foo</parameter><parameter name="password">bar</parameter></request>"; login(String xml); 而且会为了显示自己有充分的理由,会在后面说出一些完全没有道理的道理来。 楼上的2条解释是我的道理,还有我举这个实例是想讲解如何解构,和设计方法 |
|
返回顶楼 | |
发表时间:2010-04-13
最后修改:2010-04-13
lz的第1条原因说的很对,有时候是硬性要求,这个没办法。但客户可能认为SOAP就是XML,并不知道自己再定义XML就等于XML套XML这个事实。客户对一些概念可能只是大概有个模糊认识,具体应该怎么用他们可能并不清楚,所以提出一些外行的设计要求是在所难免的,在不伤及客户脸面的情况下,引导客户往正确的方向走,对自己对客户都有好处。如果一味的迁就客户,可能最后不但自己工作量大,做出的东西客户也不一定就满意。就好像一个理发师,在给客人理发时是不能完全听凭客人摆布的,否则理出的发型可能惨不忍睹。
不过楼主说的第2条理由的前提是调用只能传递简单类型参数。但如果可以传递复杂类型参数的话,还是以参数传递方式比较清楚,比传递XML清楚的多。也就是说当参数仅为1-3个简单类型参数时,就按照顺序传入即可。当参数为很多简单类型参数时,甚至个数不确定的时候,用对象、数组或集合(或者它们的嵌套组合)作为参数传入效果更好。例如: addUser(User user); 远比: addUser(String name, int age, Sex sex, bool married...); 或者: addUser(String xml); 的好。 简单的说:远程调用接口跟本地调用接口使用相同的设计原则即可。无需将远程调用接口XML化。 |
|
返回顶楼 | |
发表时间:2011-03-04
银行项目进度很紧,通常关注业务的时间远比关注技术实现的时间多很多,所以很多实现是拿来主义。
以前的汇票项目通过一个“中间代理平台”调用核心记账接口,规定使用WS与“中间代理平台”通讯。 另外一个项目使用XML-RPC,没有跨语言需求 还有一个是http+XML,XML是业务数据 |
|
返回顶楼 | |