Я собираюсь погрузиться в проект, ориентированный на правила (с использованием правил ILOG для .NET - теперь IBM). И я прочитал несколько разных точек зрения относительно того, как настроить обработку правил и как взаимодействовать с механизмом правил.
Две основные мысли, которые я увидел, - это централизация механизма правил (в его собственной ферме серверов) и программирование против фермы через API веб-службы (или, в случае ILOG, через WCF). Другая сторона - запустить экземпляр механизма правил на каждом из серверов приложений и взаимодействовать с ним локально, при этом каждый экземпляр имеет свою собственную копию правил.
Достоинством централизации является простота развертывания правил в централизованном месте. Правила масштабируются по мере необходимости, а не масштабируются каждый раз, когда вы расширяете конфигурацию сервера приложений. Это сокращает отходы с точки зрения приобретенных лицензий. Обратной стороной этой настройки являются дополнительные служебные вызовы, задержка в сети и т. Д.
Положительные / отрицательные стороны локального запуска механизма правил прямо противоположны положительным и отрицательным сторонам централизованной конфигурации. Никаких медленных сервисных вызовов (быстрых вызовов API), никаких проблем с сетью, каждый сервер приложений полагается только на себя. Управление развертыванием правил становится более сложным. Каждый раз, когда вы добавляете узел в облако своего приложения, вам потребуется больше лицензий для механизмов правил.
Читая официальные документы, я вижу, что Amazon использует механизм правил для каждой конфигурации сервера приложений. Похоже, что они медленно развертывают правила и признают, что задержка в публикации правил «приемлема», даже если бизнес-логика не синхронизирована в течение заданного периода времени.
Вопрос: Исходя из вашего опыта, как лучше всего начать интеграцию правил в веб-приложение на основе .net для магазина, который еще не провел много времени в мире, основанном на правилах?