Должен ли я запускать 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.