我正在使用RavenDB作为应用程序的数据存储的想法,该应用程序很可能具有HTML UI,WebService UI和将访问数据的服务器实用程序。使用RavenDB的一个原因是它通过复制和分片提供的水平扩展。但是,将Raven作为Windows服务运行或通过IIS运行它似乎有几个注意事项。
EDITED
我可以理解使用Raven的嵌入式配置,如果您拥有的只是一个Web客户端,但是当您拥有多个不同的客户端时,需要独立公开Raven的API以防止单个客户端锁定数据文件。
答案 0 :(得分:16)
Jedatu, 我们通常在IIS中托管RavenDB,它使一些事情变得更容易,特别是当IIS负责所有激活等时,服务器的管理更容易。 我们没有看到任何有意义的性能差异,IIS有更好的选择进行细粒度管理。
答案 1 :(得分:5)
安全性 - Raven服务更安全,或者使用IIS是否允许我更灵活地通过IP地址,.NET成员资格等进行限制。
使用单独的流程更安全。
缓存 - 似乎IIS是此功能的更好选择
数据库缓存(缓存实体文档)与IIS缓存(缓存生成的页面或部分页面)不同
架构 - 由于我不希望任何第三方访问数据存储,因此通过IIS公开Raven真的很有意义。此外,Raven与各种UI和实用程序之间会有一个业务层,因此涉及IIS似乎是不必要的,可能会带来不必要的复杂性。
访问Data文件夹的任何人都可以使用raven打开它。除非您使用Windows安全功能保护它,否则无论它位于何处。
性能 - IIS可能比Windows服务具有更多开销
你是指冷启动吗?使用嵌入式Raven会删除客户端和服务器之间的HTTP请求。
扩展 - 使用IIS可能更难以跨多个服务器扩展,而不是仅使用小批量文件安装Raven服务
多个服务器需要一个单独的Raven实例,所有IIS都可以与之通信。