我应该将RavenDB作为Windows服务还是通过IIS运行?

jed*_*atu 15 architecture ravendb

我正在使用RavenDB作为应用程序的数据存储的想法,该应用程序很可能具有HTML UI,WebService UI和将访问数据的服务器实用程序.使用RavenDB的一个原因是它通过复制和分片提供的水平扩展.但是,似乎有几个关于将Raven作为Windows服务运行或通过IIS运行的考虑因素.

  • 安全性 - Raven服务更安全或使用IIS允许我更灵活地通过IP地址,.NET成员资格等进行限制.
  • 缓存 - 似乎IIS是此功能的更好选择
  • 架构 - 由于我不希望任何第三方访问数据存储,因此通过IIS公开Raven真的很有意义.此外,Raven与各种UI和实用程序之间会有一个业务层,因此涉及IIS似乎是不必要的,可能会引入不必要的复杂性.
  • 性能 - IIS管道可能比Windows服务在每个请求上有更多的开销
  • 扩展 - 使用IIS可能更难以跨多个服务器扩展,而不是仅使用小批量文件安装Raven服务

EDITED

我可以理解使用Raven的嵌入式配置,如果您拥有的只是一个Web客户端,但是当您拥有多个不同的客户端时,Raven的API需要独立公开以防止单个客户端锁定数据文件.

Aye*_*ien 16

Jedatu,我们通常在IIS中托管RavenDB,它使一些事情变得更容易,特别是当IIS处理所有激活等时,服务器的管理更容易.我们没有看到任何有意义的性能差异,并且IIS有更好的细粒度管理的选择.


jga*_*fin 5

安全性 - Raven服务更安全或使用IIS允许我更灵活地通过IP地址,.NET成员资格等进行限制.

使用单独的流程更安全.

缓存 - 似乎IIS是此功能的更好选择

数据库缓存(缓存实体文档)与IIS缓存(缓存生成的页面或部分页面)不同

架构 - 由于我不希望任何第三方访问数据存储,因此通过IIS公开Raven真的很有意义.此外,Raven与各种UI和实用程序之间会有一个业务层,因此涉及IIS似乎是不必要的,可能会引入不必要的复杂性.

访问Data文件夹的任何人都可以使用raven打开它.除非您使用Windows安全功能保护它,否则无论它位于何处.

性能 - IIS可能比Windows服务有更多的开销

你是指冷启动?使用嵌入式Raven会删除客户端和服务器之间的HTTP请求.

扩展 - 使用IIS可能更难以跨多个服务器扩展,而不是仅使用小批量文件安装Raven服务

多个服务器需要一个单独的Raven实例,所有IIS都可以与之通信.

  • 这是链接:https://groups.google.com/forum/#!topic/ravendb/CWRruV82aHQ (2认同)