Какой-нибудь совет относительно шестиугольной архитектуры с сериализацией как основной метафорой? - PullRequest
1 голос
/ 27 января 2010

У меня есть возможность переписать ядро ​​внутренне разработанного приложения, которое мой работодатель использует для контроля документов. Мой «основной» список требований выглядит примерно так:

  • Упрощение импорта / экспорта в различные форматы (общий набор файлов + довольно широкие метаданные)
  • Упрощение добавления новых полей (присутствие которых определяется данными, а не глобально) на нескольких уровнях.
  • Ввести несколько новых функций, которые нарушают фундаментальную предпосылку старой системы (в основном, структура метаданных, окружающих документы, претерпевает радикальные изменения)
  • Поддерживать способность строго контролировать отношения между документами и метаданными и соглашения

Я играл с архитектурой, которая использует сериализацию в качестве основного средства связи с миром, и до сих пор я доволен результатами - я могу сериализовать и десериализовать из пользовательского интерфейса, хранилища XML и базу данных с легкостью без изменения основных классов для размещения различных источников и приемников. Я считаю, что это принципиально гексагональная архитектура - она ​​обрабатывает каждую цель сериализации одинаково (как инъекционная зависимость для метода Serialize).

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

1 Ответ

2 голосов
/ 03 февраля 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...