多个服务的多个程序集

时间:2012-11-07 17:47:38

标签: c# asp.net servicestack

我不确定如何组织我的项目。我有一个多服务的解决方案。例如。 ShoppingCart,UrlShortener。然而,AppHostBase只能采用一个程序集。如果将接口程序集与ServiceModel程序集分离,我也对分离关注点以及将来的用例感兴趣。我的域模型是否需要了解接口(可能是客户端要求?),那么至少命名空间不会被不必要的DTO等淹没。

所以现在我看到它是这样的,每个都是单独的组件/项目:

MyApp.RestServices.ShoppingCartService.Interface
MyApp.RestServices.ShoppingCartService.ServiceModel
MyApp.RestServices.UrlShorteningService.Interface
MyApp.RestServices.UrlShorteningService.ServiceModel

我很困惑,在注册AppHost时,您只能配置一个程序集。

public AppHost() : base("MyApp's REST services", 
    typeof(MyApp.RestServices.ShoppingCartService.Interface).Assembly) {}

在我的情况下,我想要不同服务的单独程序集,例如。短网址服务,购物车服务。我不想把它们全部放在一个项目中。

public AppHost() : base("MyApp's REST services", 
    new[]{
          typeof(MyApp.RestServices.ShoppingCartService.Interface).Assembly,
          typeof(MyApp.RestServices.Interface.ShoppingCartService).Assembly}
) {}

我真的很新,所以有很多我可以错过,但我希望在我继续学习的过程中长期保持正确。

1 个答案:

答案 0 :(得分:4)

ServiceStack接受AppHostBase constructor中的params Assembly[],即:

protected AppHostBase(
    string serviceName, params Assembly[] assembliesWithServices) {...}

这意味着您可以通过以下方式告诉ServiceStack扫描多个程序集:

public AppHost() : base("MyApp's REST services", 
      typeof(MyApp.RestServices.ShoppingCartService.Interface).Assembly,
      typeof(MyApp.RestServices.Interface.ShoppingCartService).Assembly) {...}