Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有用于Web服务间通信的良好框架/模式/etc?_C#_Web Services_Rest - Fatal编程技术网

C# 是否有用于Web服务间通信的良好框架/模式/etc?

C# 是否有用于Web服务间通信的良好框架/模式/etc?,c#,web-services,rest,C#,Web Services,Rest,我有一堆C#.NET/OpenRasta web服务,我正在不断地添加这些服务 当一个新服务被添加时,通常情况下它是被添加的,因为它是已经在使用我的另一个web服务的应用程序所需要的。。。有时,新服务和现有服务之间存在明显的协同效应,这意味着我们可能需要调用其中一个,然后根据返回的结果调用另一个 这些服务存在于一个C#Visual studio项目中(不管是好是坏,这不是我的决定) 我正在寻找的是一个现有的API/库或一个模式或一个软件(或是一个说“你知道……OpenRasta可以开箱即用”的人

我有一堆C#.NET/OpenRasta web服务,我正在不断地添加这些服务

当一个新服务被添加时,通常情况下它是被添加的,因为它是已经在使用我的另一个web服务的应用程序所需要的。。。有时,新服务和现有服务之间存在明显的协同效应,这意味着我们可能需要调用其中一个,然后根据返回的结果调用另一个

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

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

例如:假设我的一个服务是用户状态/数据存储,另一个是地理数据。 一个应用程序可以从用户服务中撤回一个用户,然后使用地理数据服务查找他的IP,但这需要应用程序进行两次服务调用

或者:假设我有一个库存数据服务,向我提供产品的详细信息,还有一个仓库库存级别的服务,向我提供当前库存和重新订购的数量,等等。 但是如果我想要股票描述和我们目前的股票数量,我必须从应用程序中打两个电话

如果我能得到某种框架,在那里我可以调用(比如…)

我的用户json对象返回时,其ip地址被一个名为“country”的字段替换,该字段通过将ip地址作为参数传递给/geo/country/fromIp服务方法来解析。 或者我可以打电话给股票服务公司,比如:

GET 
http://www.bar.com/product 
{"desc": "/product?id=92236262", "stock":"/stock?id=92236262"}
然后返回一个json对象,它看起来像{“desc”:“棕色皮鞋,尺寸9 1/2”,“stock”:“7”}

我真的希望能够做到这一点,而无需将一种服务的知识硬编码到另一种服务中;因此,当添加新服务时,任何现有服务都可以使用它进行查找等


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

OData的人正试图实现您所描述的URI组合。我认为他们实际上还没有实现

我认为这不是一个好主意,也没有必要,但这只是我的意见。如果您想要合成资源,那么在您的体系结构中创建一个层,明确地公开那些合成的资源。通过URI这样做是对耦合和性能问题的公开邀请

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