Если это проект, который призван привести к кодексу качества продукции, я настоятельно рекомендую вам не реализовать свою собственную инфраструктуру.
Во-первых, очевидно, что вы действительно недостаточно знаете о том, что требует ваше приложение от фреймворка или различных технологий, которые вы можете использовать для реализации такой структуры. Не стоит недооценивать недостаток знаний и риски, связанные с проведением проекта, когда вы не знаете, что делаете, когда начинаете.
Во-вторых, ваша мотивация для реализации вашей собственной структуры неверна. Если вы обнаружите, что существующая структура слишком большая и сложная для ваших нужд, либо выберите более простую структуру, либо просто изучите подмножество, которое вам нужно выполнить, и игнорируйте остальные.
В-третьих, это много работы по проектированию и строительству даже полупристойного каркаса. Вероятно, вам стоит потратить время на создание своего приложения. Конечно, это весело, но ваш босс, вероятно, больше заинтересован в результатах.
В-четвертых, не стоит недооценивать внутренние преимущества использования рамки, которую используют многие другие люди; например сообщество, чтобы задавать вопросы (например, на SO), сообщество для улучшения структуры, трудоустраиваемых людей с рамками их резюме.
Наконец, реализуя свою собственную инфраструктуру, вы, скорее всего, создаете много дополнительных будущих работ по техническому обслуживанию команды/компании. Вы ошибаетесь, и ваши коллеги будут проклинать вас в коридорах в течение следующих 10 лет. Даже если вы получаете право на 100% прав, кто-то из вашей организации все равно должен поддерживать его на всю жизнь приложений, зависящих от него.
Я не знаю, почему кто-то проголосовал за это. Это реальный вопрос. Он спрашивает о компромиссах между различными механизмами связи Java и изучил некоторые альтернативы. Кажется верным мне. –
Недостаточно информации, чтобы дать осмысленный совет. Являются ли эти приложения в одной JVM, одной машине, разных машинах в локальной сети и т. Д.? Являются ли приложения транзакционными? Нужно ли им сотрудничать в транзакциях? Какие примитивы обмена поддерживают фреймворк: RPC, асинхронный обмен сообщениями, потоки данных? Какие примитивы синхронизации? –
Я думаю, что примеры, которые я дал, говорят сами за себя; трубы, события ... это всего лишь два примера связи. Например, позволяет предположить, что у меня есть один основной класс и объект-менеджер. требуется двухсторонняя связь: основной класс представляет буфер для объекта-менеджера для обработки и продолжает выполняться, когда процесс завершается в менеджере, результат отправляется в основной класс. я могу использовать каналы для отправки и получения данных или может уведомить зарегистрированных слушателей с прикрепленным результатом объекта события, или я могу выставить ожидающий буфер из очереди ожидания, обработать его и сохранить в очереди результатов. –