2010-10-10 2 views
3

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

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

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

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

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

Октавио Ruiz

+0

Внедрите интерфейс, удобный для вас и третьего лица. Мы не можем знать без дополнительной информации. –

ответ

2

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

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

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

Модульность

Существует две части к этому:

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

Шаблоны

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

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

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

Technology Specific

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

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

+0

Я изучаю ваш ответ, я очень ценю ваш ответ высокого качества и просто тип ответа, который я хотел. – ZooMMX

+0

В настоящее время система в целом представляет собой большой шар грязи, но некоторые части имеют реализации стратегических, прокси-шаблонов и пары классов с использованием инверсии управления. Моя забота - часть рефакторинга на часть, хорошая идея реорганизует такой проект, как мой? (200 классов, 4 года разработки, использование в производстве в течение 18 месяцев). Я хочу исправить это, чтобы опубликовать его с открытым исходным кодом. – ZooMMX

+0

Рефакторинг по одной части за раз в порядке. Я предлагаю составить список всех rtefactorings, которые вы хотите сделать - расставить приоритеты для достижения ценности и усилий, а также определить зависимости; это должно помочь вам выработать лучший порядок, чтобы сделать рефакторинг :) –

Смежные вопросы