Использование Mendix Business Modeler для создания веб-приложений принципиально отличается от разработки веб-приложений с использованием таких технологий, как Java/Spring/JSF. Но я попытаюсь сравнить эти два вопроса для этого вопроса:Кэширование и АОП в Мендиксе: существует ли унифицированный или стандартизованный подход для кеширования на стороне сервера в приложении Mendix?
В приложении Java/Spring я могу интегрировать свое приложение с сторонним продуктом Ehcache для кэширования данных на уровне метода. Например, я могу настроить ehcache для хранения возвращаемого значения для данного метода (с определенным временем жизни). Всякий раз, когда вызывается этот метод, ecache автоматически проверяет, был ли метод ранее вызван с теми же параметрами, и если в кеше хранится возвращаемое значение. Если это так, метод никогда не выполняется, и вместо этого возвращается возвращаемое значение кэшированного метода.
Я хотел бы иметь те же возможности в Mendix, но в этом случае я бы стал кешировать значения возврата Microflow. Кроме того, я не хочу, чтобы меня заставили добавлять действия по всему месту, явно указывая Microflow на проверку кеша. Я хотел бы зарегистрировать мой Microflows для кеширования в одном централизованном месте или просто отметить каждый Microflow для кэширования. Другими словами, этот вопрос в равной степени связан с концепцией аспектно-ориентированного программирования (AOP) в Mendix как о кешировании: есть ли способ получить крючки в вызове Microflow, чтобы я мог применять операции до и после выполнения? По моему мнению, те же причины, по которым АОП имеет место в Java, существуют в Mendix.
Спасибо за ответ. Я не знал, что Mendix уже использовал ehcache в том, как вы описали. Я полностью согласен с тем, что я определенно не хочу кэшировать все или большинство выходных файлов Microflow. Это сделает приложение довольно бессмысленным.Но для некоторых микропотоков, которые не являются побочными и выполняют определенный вид деятельности, я думаю, что мне может понадобиться эта возможность. – emerys
Например, если у меня есть серия микропотоков (и суб-микропотоков), которые создают объект запроса веб-сервиса, отправьте запрос, затем извлеките соответствующие данные из ответа веб-службы, и я знаю, что возвращаемые данные сам по себе является кешируемым, то каков наилучший способ помешать приложению расходовать ненужные ресурсы и совершить поездку туда и обратно? Полагаю, я просто искал способ, чтобы эта проблема могла быть решена в целом, а затем применяться всякий раз, когда она явно запрашивается. – emerys
В Mendix нет универсального механизма, поэтому в таком случае, когда вы можете кэшировать значения, а нагрузка на производительность действительно актуальна, вам придется прибегать к ее созданию самостоятельно. Довольно общее решение может быть создано с использованием действий Java, которые могут вызывать микропотоки и сохранять возвращаемые значения в каком-то хранилище ключей/значений. Кстати, обратите внимание, что последние версии Mendix больше не используют Ehcache. –