不存在谁比谁更加专业。两种方式都一样。
比较:
(1)数据作为参数
(2)数据作为属性               (1)                                   (2)
-------------------------------------------------------------------------
适用场合:   网络带宽小,过度使用会               网络带宽可以忽略或组件的     
             造成瓶颈。                           客户与组件在同台机器上。特点:       最小化网络占用。                     函数调用时不需要填写参数及
             适用于事务型组件(MTS ,             记住参数顺序。    
             COM+)。                             不适用于事务型组件 。
             
             函数调用比较烦,客户需要             
             填写参数(如果表很大,参             加大网络负载(特别是组件与
             数是够得填了)及记住参数             客户在不同机器上),每个属性
             顺序。                               的每次存取都要占用网络资源。
             
             
另如果要编写 MTS/COM+ 组件,不能用(2),因为每次调用SetComplete后,组件的资源(属性、成员变量等)都会被回收,也就是说它们的值都变成无用的了。

解决方案 »

  1.   

    多谢指教,欢迎各位高手继续踊跃发表高见。
    可不可以举一个简单的例子,好让我深入理解。
    zhq2000,您在特点中所提的事务型组件为什么在(2)不适用呢?最后一句什么意思?详细一点好吗?
    函数调用方面,您所讲的意思是否:如果我有一个表(假如有10个字段),就应该采取(2)方法,而不应该采取(1)方法呢?
    谢谢谢谢,我会不断加分的。
      

  2.   

    如果真的只有这两个参数的话, 二种方法并没什么区别. Don Box曾在MSJ上提到过这个问题: C++程序员所喜欢的encaplation及在DCOM中引起的性能问题.- DCOM 的每个调用大约需6个round-trip, HTTP request 是2个round-trip. 所以,如果参数很多而又每次都需要重设一遍的话, 第二种方法可能会有略微性能影响.(1), (2)都是可用的. 只是不要在(2)中将SetComplete()夹在设属性和调AddRecord()之间就可以了.