Beans-сущности — за и против
Один из наиболее распространенных образцов проектирования EJB предполагает введение оболочки сеансового bean, которая, с одной стороны, выставляет для клиента службы а с другой, стараясь выполнить клиентский запрос, обращается к инкапсулированным в bean-сущности бизнес-данным. Здесь налицо классическая объектно-ориентированная модель программирования. Бизнес-данные, традиционно представленные в базе данных в реляционном формате, теперь инкапсулируются в объектно-ориентированном формате (beans-сущности). Определяемые в большом количестве для beans-сущностей методы get и set упрощают доступ к такого рода данным для сеансовых beans. Кроме того, если в beans-сущностях задействуется устойчивость с контейнерным управлением, необходимость в детальной разработке кода доступа к базе данных отпадает. Существует, впрочем, риск значительного снижении производительности. По результатам тестирований, для типичной системы электронной коммерции с 85 % транзакций на чтение и 15 % на обновление архитектура приложений с beans-сущностями достигает лишь половины or уровня пропускной способности, демонстрируемого архитектурой исключительно с сеансовыми beans. Причины снижения производительности перечислены ниже. Рис. 16.6. Статическое связывание клиентов с экземплярами сеансового bean с запоминанием состояния и динамическое связывание с экземплярами сеансового bean без запоминания состояния ♦ В то время как сеансовые beans напрямую обращаются к хранящемуся в базе данных бизнес-объекту, употребление beans-сущностей связано с введением дополнительного уровня косвенности. Автоматическая оптимизация вызовов beans-сущностей (сеансовыми beans) до локального вызова доступна отнюдь не во всех реализациях контейнеров. Если она не осуществляется, дополнительный RMI-вызов оказывается слишком дорогим. ♦ Дорогостоящим может оказаться п управление жизненным циклом beans- сущностей на дополнительном уровне. Активация подразумевает по меньшей мере одну операцию считывания из базы данных/с диска, а пассивация — одну операцию записи в базу данных/на диск. ♦ В транзакции участвует больше beans. Как обычно, решение о том, компенсируют ли преимущества beans-сущностей вероятное снижение пропускной способности системы, остается за архитектором приложения.
|