Модульная системная архитектура - PullRequest
3 голосов
/ 10 октября 2010

Я пытаюсь реализовать модульность в моей системе POS, чтобы позволить третьим сторонам делать какие-то модули / плагины / дополнения.Я начал реализацию SPI и API, мой вопрос таков: доступ к данным в базе данных должен быть таким, или мне нужно предоставить Сервис?

В этот момент вы, возможно, заметили, что яУ меня мало опыта в этом, поэтому любой совет в этой теме вполне подходит

Редактировать: Немного больше информации.Моя система имеет систему пользователя, теоретически проверяющую учетные данные для доступа к любой части системы, база данных mysql написана на Java.Моим модулям безопасно нужен доступ к некоторым таблицам в БД, доступ к главному меню, я не знаю, что еще я могу сказать, но мой вопрос больше о том, каким должен быть API.

заранее спасибо

PS Извините, если мой английский плохой

Октавио Руис

1 Ответ

2 голосов
/ 11 октября 2010

В общих чертах, программные системы (обычно) разбиты на «слои» (такие как пользовательский интерфейс (UI), бизнес-логика (BL), уровень доступа к данным (DAL) и т. Д.).Эти слои также обеспечивают естественные места для интеграции.Итак ...

доступ к данным в базе данных должен быть таким образом, или мне нужно предоставить услугу?

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

Модульность

Это состоит из двух частей:

  • Архитектурные стили и шаблоны проектирования, которые помогают модульным системам (особенно в отношении обслуживания и расширяемости);все они не зависят от технологии (не имеет значения, какую технологию вы используете).
  • Фреймворки и технологии, специфичные для реализации и технологий.

Шаблоны проектирования

Википедия - отличное место, чтобы познакомиться с шаблонами, и StackOverflow содержит множество отличного контента.

Начну с того, что начинаю разбираться с так называемым SOLID , хотя все это полезно, я думаю, вы найдете области S, O, I и D наиболее ценными.

Инверсия зависимостей ("D") будет особенно важна для вас, насколько модульность идет.Создавая «контракт» через интерфейс, вы создаете что-то, на что могут опираться другие стороны, например: они могут поменять вашу реализацию «по умолчанию» на ту, которую они сделали.

Специфично для технологии

Я не могу говорить конкретно о Java (хотя вам будет просто узнать ), но .Net имеет несколько фреймворков, специально созданных для такого рода вещейНапример, Managed Extensibility Framework (MEF).

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

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