2011-03-22 47 views
0

我希望数据从点A传输到点B.我在A和B中都有Web服务。哪种设计更好?将数据作为参数传输或作为结果

  1. A.GetData():在宿主,返回数据,将乙称为
  2. B.TakeData(数据PDATA):在乙托管,数据作为参数传递,将被从A
  3. 称为

为什么方法1或2是最好的方法?

回答

1

你想实现拉基于如何将问题/解决方案看起来像在现实世界中的业务问题GetData()TakeData()。非常粗略的例子是while implementing a fire alarm我会推动这个信息给所有的人,即使他们不期待(polling)它在这里TakeData()更适合。如果我想实施GetEmployeeSalary,我很少需要将这些信息传达给所有用户,因为它是我想提供给需要它的人的敏感/机密信息,在验证他们被允许之后也是如此这里GetData()更有意义。

我不知道你正在使用的技术,但应该有机制来实现推或拉模型(至少WCF有这些WS-Eventing)。

推时 - 理想情况下,当现实世界需要使用更新更新多个系统/客户端时。想象一下股票代码webservice,每个客户都对不同的报价感兴趣。在每次更改时向付费客户发送推送通知可能是有意义的,关于每个客户感兴趣的代码,而只允许像GetData()那样为免费客户提供延迟数据。

  • 使用推,当你看到轮询(轮询是资源的浪费)
  • 不想推时,有分布在WebServices的事件处理需求。