2016-05-27 2 views
1

У нас есть веб-приложение, в котором веб-страницы построены динамически. В динамическом смысле весь пользовательский интерфейс хранится как JSON в фоновом режиме, а интерфейсный интерфейс соответственно рисует интерфейс. Существуют случаи, когда сбор данных происходит в нескольких формах. Порядок отображения форм зависит от данных, введенных в предыдущих формах.Запуск бизнес-логики с использованием языка сценариев

например. Предположим, пользователь просматривает form1 и не может быть бизнес-логики, как если age > 25 показать form2 еще form3

Это простой пример, но он мог бы получить гораздо сложнее. И логика отличается от клиентов. Эта бизнес-логика также может быть разработана сторонними разработчиками.

javascript является одним из вариантов для хранения этой бизнес-логики. Но приложение создается в Java7 и развертывается в Google App Engine. Производительность и безопасность являются важными критериями для решения этого подхода. Ниже приведены подходы, которые мы рассмотрели, как сейчас:

  • имеют отдельную NodeJS приложение и сделать вызов API для выполнения бизнес-логики
  • Run JavaScript в JavaScript Script Engine, который является частью JDK 7

Не могли бы вы предложить, какие наилучшие подходы к выполнению javascript в приложении Java?

ответ

0

Rhino - это реализация JavaScript с открытым исходным кодом, полностью написанная на Java. Он обычно встроен в Java-приложения для предоставления сценариев конечным пользователям. Вот ссылка - http://www.mozilla.org/rhino/

0

Учитывая глобальный характер Javascript и тот факт, что конкретная логика, о которой вы говорите, я склонен соглашаться с Алексом о JS. Тем не менее, есть жалобы на работу Rhino, поэтому я бы не рекомендовал это сразу. Если производительность не окажется ужасной для вашего варианта использования, я бы рекомендовал использовать встроенный модуль для начала. Затем, когда вы знаете больше о своем прецеденте и конкретном профиле производительности, при необходимости вы можете перейти к лучшему решению.

Вот некоторые дополнительные мысли, которые помогут вам сформулировать вопрос:

  1. Вы должны запустить любой интерпретатор сценариев открытой для 3 сторон с няней нитью. (т. е. убить их после определенного количества потребляемых ресурсов - это не то, что должны делать няни, но, увы ...). Любой полный язык сценариев может выполнять простой «while (true): wait()»

  2. Если сложность логики не массивна (т. Е. Вы сказали один или два примера if-then в вашем примере, это можно обрабатывать на любом языке) язык не является функцией безопасности или производительности, но один из удобств и знакомство с теми, кто его использует, то есть JavaScript должен быть легким. Если ваша команда настройки знает python, тогда идите и используйте встроенный jython и т. Д.

  3. Я бы не стал разворачивать отдельные службы для простой настройки. Опять же, если сложность не массивная, предпочтительным является встроенный движок.Скручивание отдельного сервера NodeJS для запуска двухстрочных скриптов - довольно большая трата накладных расходов, сложность и обслуживание devops (подумайте о том, чтобы каждый раз запускать экземпляр dev для запуска if-then) - это не так сложно, но это может послужить причиной двухдневного 24-часового отладочного марафона в течение 2 лет, когда вы забудете об этом или когда нанимаете младшего разработчика, который не знает об этом и занимается мясниками ...

Смежные вопросы