ServiceStack逻辑上的程序分离

时间:2015-02-10 16:24:24

标签: web-services rest servicestack

我相信ServiceStack是一个非常出色的框架,可以很好地消除通常与Web服务相关的管道,它说有一个缺点,或许我只需要澄清。

在处理大型项目时,例如使用多个产品时,逻辑分离似乎很重要。我理解如何分离安全问题等,但从纯粹的维护问题,团队关注和消费问题来看,似乎我必须遗漏一些东西。

看起来像是:

api.domain.com/productA
api.domain.com/productB
api.domain.com/productC

是逻辑上的分离,如果您只是使用默认文档,假设您在每个产品下有150个程序(更不用说产品D,E,F和任何产品之外的一般服务),事情可能会变得有点笨拙

所以问题是:处理和设置像这样的大型项目的最佳方法是什么。每个人都有自己的appHost与该项目/产品的端点?还有另一种我没想到的方法吗?

1 个答案:

答案 0 :(得分:2)

Modularizing ServiceStack上的wiki文档显示了如何配置Service实现以跨多个依赖关系,例如:

public class AppHost : AppHostBase
{
    //Tell which assemblies to scan for services
    public AppHost() : base("My Product Services", 
       typeof(ServicesFromProductA).Assembly,
       typeof(ServicesFromProductB).Assembly
       /*, etc */) {}

    public override void Configure(Container container) {}
}

您的DTO也可以分布在多个dll中,但仍然建议您保持DTO组件无依赖性。

反向代理/ Url重写到不同的ServiceStack实例

根据您的不同产品之间是否存在清晰的分离,另一个值得考虑的选择是将它们分成不同的服务,并在概念上通过使用反向代理或{{3}将它们显示在相同的URL结构下这将允许您将不同的顶级路径映射到不同的独立ServiceStack实例,例如: