ServiceStack 过程逻辑分离

ServiceStack Logical Separation of Procedures

我相信 ServiceStack 是一个出色的框架,可以很好地消除通常与 Web 服务一起使用的管道,这表示有一个不足之处,也许我只需要澄清一下。

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

好像是这样的:

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

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

所以问题是:处理和设置这样的大型项目的最佳方法是什么。是否每个人都有自己的 appHost 和一个 project/product 的端点?还有其他我没有想到的方法吗?

Modularizing ServiceStack 上的 wiki 文档展示了如何配置您的服务实现以分布在多个依赖项中,例如:

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实例

另一个值得考虑的选项取决于您的不同产品之间是否存在清晰的分离,即通过使用反向代理或 rewrite rules in IIS 这会让你有不同的顶级路径映射到不同的独立 ServiceStack 实例,例如: