2013-12-24 7 views
1

У меня немного сложный поток управления с кучей операторов if, излагающих шаги для того, когда определенные поля в форме должны быть выделены (с разными цветами), поля также автоматически заполняются на основе определенных параметров; помимо того, что разные поля должны отображаться на разных входах.Как повторно использовать бизнес-логику как на интерфейсе, так и на внешнем сервере?

У меня также есть необходимость использовать эту же логику для бэкэнда для создания отчетов и т. Д.

Я попытался извлечь логику в файл свойств, а затем сервер и внутренний интерфейс прочитали этот файл и при необходимости осуществили логику.

Однако после точки это стало слишком громоздким, и я закончил писать код в моем файле Недвижимость Болгария Недвижимость:

rules = [{field: 'xyz', 
      conditions: [{value: 50, 
         highlight_fields: {color: 'red', fields: [...]}}, 
         show_fields: .... 
         custom_rule: .... 
         {value_between: [90,100], 
         highlight_fields...}]} 
    ... 

Вы можете изображения это становится довольно большой, с каждым типом value_XYZ требования. Я также должен добавить это правило в считыватель файлов свойств (с обеих сторон), который побеждает цель инкапсуляции логики в отдельный файл свойств.

Есть ли разумный метод, когда я могу достичь чистой инкапсуляции бизнес-логики, которая может использоваться в разных технологиях?

Я мог бы обрабатывать все на стороне сервера, имея передние вызовы ajax, вызывающие бэкэнд-систему, чтобы получить правильные правила подсветки, но это может быть не слишком быстро по кабелю.

+0

Вы можете создать небольшую библиотеку в javascript и создать на сервере всю специальную логику (js). Генерация логики устранит необходимость скопировать ее по всему месту. – Bart

ответ

1

Конечно, вы не хотите использовать эти проверки с обеих сторон, поскольку это нарушает принцип DRY и увеличивает сложность приложения.

Но использование подхода с файлами свойств также является накладным. Кто-то, кто попытается понять эту логику, будет расстроен.

Хранение этой логики на задней стороне не выглядит плохим решением. В современных сетях такая общая задача, как проверка на стороне сервера через AJAX, не должна быть проблемой. Поэтому стоит сделать простое доказательство концепции, чтобы убедиться, что этот подход удовлетворит вас.

Если задержка настолько важна для вас, вы можете взглянуть на web sockets Технология. Более низкая латентность является одним из ее преимуществ против AJAX.