display: inline-block
добавляет дополнительный запас вашему элементу.
Я бы порекомендовал это:
#element {
display: table; /* IE8+ and all other modern browsers */
}
Бонус: Теперь вы также можете легко отцентрировать этот модный новый #element
, просто добавив margin: 0 auto
.
Мы используем ILOG для DotNet и имеем развернутый пилотный проект.
Вот краткое описание нашей незрелой архитектуры правил:
ILOG.Rules.dll
и новые -up RuleEngines через настраиваемый класс объединения. RuleEngines объединяются в пулы, потому что связывать RuleSet с RuleEngine дорого. Мы рассматриваем RuleExecutionServer как платформу хостинга, а также RuleTeamServerForSharePoint как хост для источника правил. В конце концов, у нас будут правила, развернутые в производственной среде вне процесса выпуска кода.
Основным препятствием во всех наших усилиях по разработке правил являются наборы навыков моделирования и разработки правил.
По моему опыту работы с механизмами правил мы применили довольно базовый набор практик для управления взаимодействием с механизмом правил. Прежде всего, это всегда были коммерческие механизмы правил (iLog, Corticon), а не с открытым исходным кодом (Drools), поэтому локальное развертывание на каждом из серверов приложений никогда не было жизнеспособным вариантом из-за затрат на лицензирование. Следовательно, мы всегда использовали централизованную модель, хотя и в двух основных вариантах:
Мне никогда не нравился аргумент централизации. Это означает, что все связано с механизмом правил, который становится свалкой для всех правил в системе. Довольно скоро вы не сможете ничего изменить из-за страха перед неизвестным: «Что мы сломаем?»
Я предпочитаю следовать идее Amazon об услугах как об отдельных автономных компонентах. Я интерпретирую это как то, что сервисы владеют своими данными и своими правилами .
Это дает дополнительное преимущество разделения пространства правил. По мере роста набора правил становится все труднее поддерживать; лучше поддерживать их в управляемом размере.
Если части набора правил являются общими, я бы предпочел управляемый данными подход DI, когда служба может иметь свой собственный экземпляр механизма правил и загружать общие правила из база данных при запуске. Это может оказаться невозможным, если ваша лицензия iLog делает несколько экземпляров слишком дорогими. Это будет тот случай, когда продукт, который должен помочь, на самом деле может диктовать архитектурный выбор, который принесет горе. Это был бы хороший аргумент в пользу менее дорогой альтернативы (например, JBoss Rules в Java-land).
А как насчет подхода дерева решений, управляемого данными? Действительно ли необходим механизм правил Rete, или решение о «корпоративном инструменте» влияет на ваш выбор?
Я бы попытался настроить механизм правил так, чтобы он был как можно более изолирован от остальной части предприятия. Если бы я мог, он бы не обращался к базам данных или службам. Лучше возложить ответственность на объекты, требующие решения. Позвольте им позвонить в необходимые веб-сервисы и базы данных для сбора необходимых данных, передать его механизму правил, и пусть он сделает свое дело. Сцепление - ваш враг: попробуйте спроектировать свою систему так, чтобы его минимизировать. Изолирование механизмов правил - хороший способ сделать это.
Мне нечего сказать по вопросу «какой сервер», но я бы настоятельно рекомендовал вам разработать службы принятия решений - вызываемые службы, которые используют правила для принятия решений, но не изменяют состояние бизнеса. Разрешение вызывающему приложению / службе / процессу решать, какие изменения данных вносить в результате вызова службы принятия решений, а вызывающий компонент фактически инициирует действие (я), предложенное службой принятия решений, упрощает многократное использование службы принятия решений. снова (по каналам, процессам и т. д.). Чем чище и менее привязан к остальной инфраструктуре служба принятия решений, тем более многоразовой и управляемой она будет. В этом отношении стоит прочитать обсуждение здесь, на ebizQ .