我有一堆C#.NET/OpenRasta web服务,我一直在添加这些服务。
当添加一个新的服务时,通常是因为一个已经在使用我的另一个web服务的应用程序需要它。有时候,新的服务和现有的服务之间存在明显的协同作用,这意味着我们可能想先调用一个,然后再调用另一个返回的结果。
这些服务位于单个C# Visual studio项目中(不管是好是坏,这不是我的决定)。
我正在寻找的是一个现有的API/库,或者一个模式或一块软件(或者来自某个人的推送,“你知道……OpenRasta可以做到这一点”),我可以用它来允许我的服务在返回结果之前以一种非常松散和动态的方式彼此交互。
例如:假设我的一个服务是用户状态/数据存储,另一个是地理数据。应用程序可以从用户服务中拉回用户,然后使用地理数据服务查找他的IP,但这将需要来自应用程序的2个服务调用。
或者:假设我有一个库存数据服务,它为我提供有关产品的详细信息,以及一个仓库库存级别服务,它为我提供当前库存和重新订购的金额等。但是,如果我想要库存描述和我们当前的库存数量,我必须从应用程序调用两次。
如果我能得到某种框架,我可以在其中调用(类似)..
http://www.foo.com/user?id=8890823123&ip=county:geo|country|fromIp我的user json对象将返回其ip地址,并将其替换为名为"country“的字段,该字段通过将ip地址作为参数传递给/geo/country/fromIp服务方法来解析。或者我可以给股票服务打个电话,比如:
GET
http://www.bar.com/product
{"desc": "/product?id=92236262", "stock":"/stock?id=92236262"}并返回一个类似{"desc“:”棕色皮鞋,尺码9 1/2","stock":"7"}的json对象。
我真的希望能够做到这一点,而不是将一个服务的知识硬编码到另一个服务中;这样当添加一个新服务时,任何现有的服务都可以使用它进行查找,等等。
这是我需要自己编写代码的东西,还是已经存在这样的东西了?
发布于 2011-03-23 19:27:04
OData人员正在尝试做您所描述的那种URI组合。我认为他们还没有真正的实现。
我认为这不是一个好主意,也不是必要的,但这只是我的观点。如果你想组合资源,那么在你的架构中创建一个层,显式地公开这些组合的资源。通过URI来做这件事是对耦合和性能问题的公开邀请。
https://stackoverflow.com/questions/5392400
复制相似问题