Inter-Webservice通信是否有任何良好的框架/模式/等?

时间:2011-03-22 13:56:49

标签: c# web-services rest

我有一堆C#.NET / OpenRasta网络服务,我不断添加。

当添加新服务时,通常会添加它,因为已经使用了我的另一个Web服务的应用程序需要它...有时候,情况之间存在明显的协同作用。一个新服务和一个现有服务,这意味着我们可能想要调用一个服务,然后在返回的结果上调用另一个服务。

这些服务存在于一个C#Visual studio项目中(无论好坏,这不是我的决定)。

我正在寻找的是一个现有的API /库或一个模式或软件(或者说某个人说“你知道...... OpenRasta可以开箱即用”)我可以使用在返回结果之前,允许我的服务以非常松散和动态的方式相互交互。

例如:假设我的一项服务是用户状态/数据存储,另一项是地理数据。 应用程序可以从用户服务中撤回用户,然后使用地理数据服务查看其IP,但这将需要来自应用程序的2个服务调用。

或者说:假设我有一个库存数据服务,它为我提供了有关产品的详细信息,以及为我提供当前库存和重新订购金额的仓库库存水平服务等。 但如果我想要股票描述和我们现有的库存量,我将不得不从应用程序进行两次调用。

如果我可以获得某种我可以调用的框架(类似的东西),那会更好。

http://www.foo.com/user?id=8890823123&ip=county:geo|country|fromIp

并且我的用户json对象将返回,它的ip地址被称为“country”的字段替换,该字段通过将ip地址作为参数传递给/ geo / country / fromIp服务方法来解决。 或者,如果我可以调用股票服务,如:

GET 
http://www.bar.com/product 
{"desc": "/product?id=92236262", "stock":"/stock?id=92236262"}

然后找回一个看起来像{“desc”的json对象:“棕色皮鞋,尺码9 1/2”,“股票”:“7”}

我真的希望能够在不将一项服务的知识硬编码到另一项服务的情况下做到这一点;因此,当添加新服务时,任何现有服务都可以使用它来进行查找等。

这是我需要自己编写代码还是已经存在这样的东西?

1 个答案:

答案 0 :(得分:0)

OData的人正试图做你正在描述的那种URI组合。我认为它们实际上还没有实现。

我认为这不是一个好主意,也不是必要的,但这只是我的意见。如果要组合资源,请在体系结构中创建一个显式公开这些组合资源的层。通过URI执行此操作是对耦合和性能问题的公开邀请。