从相同的上游代码调用ServiceStack v3和v4服务

时间:2016-09-28 14:53:57

标签: c# servicestack

我正面临以下情况,并希望就如何最好地进行迭代提出一些建议:

我的团队负责在ServiceStack v3上编写的Web服务。此服务负责汇总来自其他几个v3 Web服务的数据,以便在SPA中使用。

我们遇到的情况是我们受到下游服务实现的限制 - 这个特定服务抽象出数据访问和返回大型结果集的查询偶尔会超时。

我们想重写此服务以添加分页。对我们来说,最好的解决方案是利用ServiceStack v4中的AutoQuery。但是,这需要上游代码能够引用2个版本的ServiceStack软件包(这可能吗?)。我们还可以为现有服务添加分页,但它使用的内部数据框架并不容易改变,我们很有可能破坏。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以在应用程序中加载2个版本的dll。不,不是在开发时(只是运行时),但我很确定这会导致代码执行中的大问题(它无法找到正确的类版本运行时)。

您的问题也在这里得到解答:Using multiple versions of the same DLL

更好的解决方案是使用app域将您的应用程序拆分为v4和v3部分,并在此问题中进行了讨论。

原始问题?

您最初的问题是您是否有旧的v3服务,您希望为性能问题添加分页?

  • 解决方案可能是将其添加到v3部分,但这可能会破坏服务并且必须进行测试?
  • 您可以迁移3到4(我不确定这是否可以解决您的问题)。我发现这仍然非常可行。
  • 使用redis缓存创建自己的包装器服务(adv:原始代码中没有更改)
  • 构建一个缓存机制客户端/中介,这样您就不需要等待长api调用。
  • 迁移到自动查询。 (我没有经验)

路线图

我认为你会对这些选项做一些很好的研究。我认为你的案例没有一个完美的解决方案,只有利弊。

由您决定要承担哪些风险。