Как разработать веб-приложение с кучей функциональных модулей

1

Я разрабатываю веб-приложение с использованием Spring Framework и движка Google. Мне интересно, есть ли шаблон дизайна или каркас, с помощью которого я могу разработать функции моего приложения в виде подключаемых модулей. Например, я определил 4 функции приложения:

  1. Вход Oauth
  2. Управление профилем пользователя
  3. Создание группы пользователей
  4. Управление файлами пользователей

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

Теги:
web-applications
design

3 ответа

0
Лучший ответ

Вы можете взглянуть на системы MQ (такие как RabbitMQ, ActiveMQ). Система MQ будет работать как промежуточный слой, который обеспечивает вам слабое сцепление. Связь между модулями будет реализована как отправка сообщений в очередь и прослушивание сообщений.

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

  • 0
    Да, я читал об OSGi раньше, но она кажется сложной библиотекой, а также содержит дополнительный контейнер OSGi. Я собираюсь попробовать MQ все же. Также вы можете дать мне пример шаблона проектирования на основе OSGi или пример весеннего приложения в OSGi
  • 0
    @ saurabhgupta05085 вы можете посмотреть официальную ссылку
0

Вы должны разделить эту функцию на два компонента: API и реализацию. Первый содержит интерфейсы, второй - их реализации. Вы передаете интерфейс контроллеру веб-приложений и внедряете реализацию через Spring или любую другую инфраструктуру Injection Dependency. Например

веб-приложение, UserController, который обрабатывает запросы от клиента и делегирует ваши компоненты

@Component
public class UserController {
    private FileManager fileManager;

    @Autowired
    public UserController(FileManager fileManager) {
        this.fileManager = fileManager;
    }

    @GET("/user/{userId}/file/{fileId}")
    public File getUserFile(long userId, long fileId) {
        fileManager.getUserFile(userId, fileId);
    }
}

file-mgt-api, где вы определяете интерфейсы для отладки веб-приложения от реализации

public interface FileManager {
    File getUserFile(long userId, long fileId);
}

file-mgt-impl, где все сведения о том, как получить запрошенный файл

@Component
public class FileManagerImpl implements FileManager {
    @Override
    public File getUserFile(long userId, long fileId) {
        // get file by id from DB
        // verify that provided user is the file owner
        // do other useful stuff
        // return the file or throw exception if something wrong
    }
}

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

0

По моему опыту, я предлагаю использовать шаблон MVC. Используйте Servlet filtters для входа 1.Oauth. Создавать службы /POJO для реализации и вложения друг друга в соответствии с вашим требованием для 2.User Profile Management 3. Создание группы пользователей 4.User File management

Если вы знаете Spring AOP, используйте. Чтобы вы могли добиться более динамичной интеграции между реализациями точек 2,3 и 4.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню