我相信ServiceStack是一个非常出色的框架,可以很好地消除通常与Web服务相关的管道,它说有一个缺点,或许我只需要澄清。
在处理大型项目时,例如使用多个产品时,逻辑分离似乎很重要。我理解如何分离安全问题等,但从纯粹的维护问题,团队关注和消费问题来看,似乎我必须遗漏一些东西。
看起来像是:
api.domain.com/productA
api.domain.com/productB
api.domain.com/productC
是逻辑上的分离,如果您只是使用默认文档,假设您在每个产品下有150个程序(更不用说产品D,E,F和任何产品之外的一般服务),事情可能会变得有点笨拙
所以问题是:处理和设置像这样的大型项目的最佳方法是什么。每个人都有自己的appHost与该项目/产品的端点?还有另一种我没想到的方法吗?
答案 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组件无依赖性。
根据您的不同产品之间是否存在清晰的分离,另一个值得考虑的选择是将它们分成不同的服务,并在概念上通过使用反向代理或{{3}将它们显示在相同的URL结构下这将允许您将不同的顶级路径映射到不同的独立ServiceStack实例,例如: