Будет ли целесообразно использовать внешние библиотеки для стандартизированных протоколов (MIME) как часть модели предметной области? - PullRequest
0 голосов
/ 16 марта 2020

В настоящее время я разрабатываю приложение, которое анализирует и обрабатывает сообщения MIME, в которых эти сообщения являются центральной частью модели домена. Хотя я уже реализовал необходимую функциональность, на данный момент для анализа этих сообщений кажется ненужным пытаться заново изобрести колесо, если бы мне понадобилось добавить дополнительные функции MIME в будущем. Я мог бы просто использовать доступную библиотеку, такую ​​как MimeKit, которая, вероятно, делает работу намного эффективнее и кажется более надежным способом go с. В то же время я чувствую нерешительность к этой идее по нескольким причинам:

  1. Я довольно плохо знаком с архитектурой программного обеспечения, но из того, что я собрал в Интернете, похоже, что консенсус доменные объекты не должны иметь никаких внешних зависимостей, поскольку они моделируют домен, который определен для бизнеса c. И поэтому, если бизнес-правила меняются, было бы неплохо, если бы ваша модель предметной области зависела от внешней библиотеки. Тем не менее, поскольку MIME является стандартизированным протоколом, это не должно быть проблемой, но это приводит ко второму пункту.

  2. Хотя MIME является стандартизированным протоколом, мне стало известно, что клиенты, от которых мое приложение получает эти сообщения, не всегда полностью соответствуют спецификациям RF C. Мне еще не приходилось сталкиваться с проблемой, касающейся формата сообщений MIME, но, учитывая это, я чувствую, что нет никакой гарантии, что я не столкнусь с проблемами в будущем.

  3. Возможно, мне придется добавить дополнительные пользовательские функции, касающиеся анализа сообщений. Однако это можно решить, добавив эту функциональность поверх импортируемых классов.

Итак, мои вопросы:

Будет ли это в нормальных условиях допустимой альтернативой использованию внешняя библиотека для стандартизированных протоколов как часть модели предметной области? Неправильно навязывать мой домен и прикладной уровень внешним зависимостям.

Как мне go об этой проблеме с учетом моих обстоятельств? Должен ли я создать интерфейс для модели предметной области, чтобы я мог заменить его другой реализацией, если это потребуется в будущем? Это потребовало бы выделения внешних зависимостей в классе и сопоставления всех данных для соответствия контрактам для прикладного уровня, что почти кажется более трудоемким, чем реализация самого протокола. Или я должен сам реализовать его и добавлять новые функции последовательно, чтобы убедиться, что у меня есть полный контроль над моделью домена?

Я был бы очень признателен за ваш вклад.

1 Ответ

0 голосов
/ 20 марта 2020

Весь ваш вопрос сводится к следующему ошибочному мышлению:

Я довольно новичок в архитектуре программного обеспечения, но из того, что я собрал в Интернете, консенсус кажется ...

Почему консенсус принимает ваши решения за вас?

Кто эти люди, составляющие этот "консенсус"?

Откуда вы знаете, что они имеют представление о том, что они собой представляют? говорить о?

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

Хотите писать программное обеспечение, которое решает реальные проблемы? Или вы хотите заблудиться в сорняках идеализма, и ваш проект провалится еще до того, как он выйдет из фазы проектирования?

Делайте то, что имеет смысл для вас .

...