Совместное использование сущностей между модулями App Engine
Я перехожу из Eclipse в Android Studio, и приложение для Android подключено к AppEngine. Я разделил сторону сервера на два модуля (модуль по умолчанию для конечных точек и запросов, обращенных к пользователю) и модуль "admin" для бэкэнда. Теперь оба эти модуля должны использовать сущности. (внутренний модуль обычно отвечает за сохранение этих сущностей в БД, тогда как модуль по умолчанию для внешнего интерфейса - это тот, кто возвращает данные обратно в Android с использованием этих сущностей).
Как лучше всего разделить эти классы сущностей между этими двумя модулями в Android Studio? (также убедитесь, что эти классы улучшены и т.д.). Я не хочу иметь дублирующиеся классы, как в модуле по умолчанию, так и в админке. Может быть, есть общий модуль "Java", общий для двух (но не уверен, что расширение класса будет работать). Или модуль администратора НЕ должен использовать сущности и вместо этого использовать другие способы сохранения?
Цените ваши мысли.
1 ответ
Хотя могут быть причины не делиться кодом, лично я предпочитаю DRY.
Я решил проблему в духе DRY с помощью бэкэнда Python, поместив файл определения моделей в каталог приложения app/models.yaml
и sym-linking его в каждый из подкаталогов модулей app/module_blah/models.yaml
Таким образом, все модули видят одинаковые определения моделей. Во время развертывания символические ссылки автоматически заменяются фактическим содержимым файла, на который делается символическая ссылка. Из обновления appcfg.py:
Команда следует по символическим ссылкам и рекурсивно загружает все файлы на сервер. Временные файлы или файлы управления исходным кодом, такие как foo~, .svn/*, пропускаются.
Может потребоваться осторожность для развертывания всех модулей одновременно.
Я использовал ту же технику, чтобы также делить целые библиотеки с общим кодом между модулями, используя символические ссылки app/lib/libX
подкаталоги в желаемое app/module_blah/lib/libX
по мере необходимости.
Не уверен, что этот метод можно использовать в Java, хотя.