Должен ли я запускать RavenDB в качестве службы Windows или через IIS?

Я играю с идеей использования RavenDB в качестве хранилища данных для приложения, которое, скорее всего, будет иметь пользовательский интерфейс HTML, пользовательский интерфейс WebService и серверные утилиты, которые будут обращаться к данным. Одной из причин использования RavenDB является горизонтальное масштабирование, которое он предлагает посредством репликации и очертания. Однако кажется, что существует несколько соображений, связанных с запуском Raven в качестве службы Windows или ее запуском через IIS.

  • Безопасность. Является ли служба Raven более безопасной или будет использовать IIS, позволяя мне больше гибкости для ограничения по IP-адресу,.NET Membership и т.д.
  • Кэширование. Кажется, что IIS - лучший выбор для этой функции.
  • Архитектура. Поскольку мне не хотелось бы, чтобы какая-либо третья сторона обращалась к хранилищу данных, действительно ли имело бы смысл разоблачить Raven через IIS. Кроме того, существует бизнес-уровень между Raven и различными пользовательскими интерфейсами и утилитами, поэтому включение IIS кажется излишним и может привести к ненужной сложности.
  • Производительность. Конвейер IIS, вероятно, имеет больше накладных расходов по каждому запросу, чем служба Windows
  • Масштабирование. Использование IIS, вероятно, более сложно масштабировать на нескольких серверах, а не просто устанавливать службу Raven с небольшим пакетным файлом

EDITED

Я могу понять, используя конфигурацию Raven Embedded, если все, что у вас есть, - это один веб-клиент, но когда у вас несколько разных клиентов, API Raven должен быть открыт независимо, чтобы один клиент не блокировал файлы данных.

Ответы

Ответ 1

Jedatu, Обычно мы размещаем RavenDB внутри IIS, это упрощает некоторые вещи, в частности, управление сервером проще, когда IIS заботится обо всех активациях и т.д. Мы не видели каких-либо значимых отличий, и IIS имеет более приятные варианты для мелкозернистого управления.

Ответ 2

Безопасность. Является ли служба Raven более безопасной или будет использовать IIS, позволяя мне более гибко ограничивать IP-адрес,.NET Membership и т.д.

Использование отдельного процесса более безопасно.

Кэширование. Кажется, что IIS - лучший выбор для этой функции.

Кэширование БД (кэширование документов сущностей) - это не то же самое, что кеширование IIS (которое кэширует созданные страницы или части страниц)

Архитектура. Поскольку я не хотел бы, чтобы какая-либо третья сторона обращалась к хранилищу данных, действительно ли имело бы смысл разоблачить Raven через IIS. Кроме того, будет существовать бизнес-уровень между Raven и различными пользовательскими интерфейсами и утилитами, поэтому включение IIS кажется ненужным и может ввести ненужную сложность.

Любой доступ к папке "Данные" может открыть ее с помощью ворона. Неважно, где он находится, если вы не защищаете его, используя функции безопасности Windows.

Производительность. У IIS, вероятно, больше накладных расходов, чем на службу Windows

Вы имеете в виду холодный старт? Использование встроенного Raven удаляет HTTP-запросы между клиентом и сервером.

Масштабирование. Использование IIS, вероятно, более сложно масштабировать на нескольких серверах, а не просто устанавливать службу Raven с небольшим пакетным файлом

Для нескольких серверов требуется отдельный экземпляр Raven, с которым могут взаимодействовать все IIS: es.