1

我有一个由 ServiceStack 后端组成的解决方案,具有常规设置(AppHost、ServiceInterface 和 ServiceModel),以及一个 winforms 应用程序和一个 iOS 应用程序使用服务。

现在我想做一个网络管理员,并正在寻找有关如何构建这个. 正如SS 文档所说,我想让 apphost 项目保持小规模

理想情况下,根级 AppHost 项目应保持轻量级且无需实现。

因此,我希望将网络管理员放在一个单独的项目中,其中包含所有 .cshtml 和内容以及所有内容。

这可能吗?不建议?有任何想法吗?

我能想到的一些替代方案是

  • single-page-app,让少数cshtml文件存在于 AppHost-project 中。这值得学习曲线吗?
  • 让单独的项目调用 Web 服务。考虑到他们生活在同一个网络服务器上,这不是非常无效吗?还是应该将其视为一种优势,因为它使一切都松散耦合?
4

2 回答 2

1

查看有关使用Compiled Razor Views的文档和ServiceStack.Gap GitHub 存储库,了解如何创建利用 Compiled Razor Views 的嵌入式 ServiceStack 解决方案。

于 2015-05-22T15:33:04.360 回答
1

我想为初学者提供一个更完整的答案:

  1. 该网站的项目必须启用剃刀。它必须有ServiceStack.Razor对例如的引用,所以.cshtml才会编译。

  2. 正如@mythz 所指出的,添加ServiceStack.Razor.BuildTask以预编译剃刀文件。这是使它们包含LoadFromAssemblies参数所必需的

  3. 在主 AppHost 中,指定要在其他程序集中找到 Razor 文件,LoadFromAssemblies例如:

        this.Plugins.Add(new RazorFormat { LoadFromAssemblies = { typeof(ActivityServer.Admin.AdminServices).Assembly } });
    
  4. 到目前为止,都是关于 Razor .cshtml 文件的。要包括服务,例如对于更复杂的视图,只需将其添加到 中AppHost() : base(...),或者如果您想要这些服务的前缀,请使用 AppHost.RegisterService。

需要指出的一点是,外部 DLL 中的 Razor 文件没有单独的命名空间,因此外部 DLL 中的“hello.cshtml”会与主 AppHost 中的同名文件发生冲突。通过将所有 cshtml 文件(在外部 dll 中)放在一个子文件夹下,这将有所帮助,因为该文件夹将是 URL 的一部分。

于 2015-05-25T20:52:52.030 回答