Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Грамотная архитектура проекта, $Помогите разобраться и создать модульную систему$
docentovich  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




Понимаю что есть много много готовых вариантов. Я собственно не велосипед хочу создать а просто разобраться в основах основ=))) просьба не отсылать к учебникам по ООП, если было бы время их читать (что то да я уже и читал, но если не получу ответа тут именно так и поступлю), я бы не написал сюда. За отсылку к статьям буду признателен (отличие статьи от книги в объеме!!!)! можно отослать например к учебнику по hmvc, начинать с основ ООП ну просто нет времени, уж простите.


итак собственно вот задача, постараюсь сформулировать максимально корректно. если не получиться ясно изложить сильно не пинайте, постораяюсь исправиться:

1) создать модульную систему. каждый модуль имеет архитектуру mvc (под некотрые модули есть одна или несколько табличек в БД, а может и не быть)
2) модуль может вызывать другой модуль, собственно может получать как 1. данные из другого модуля 2. выводить внутрь своего представления (шаблона или вьюхи) представление другого модуля.
3) на один модуль есть 1 контроллер, 1 или более моделей (тут подскажите правильно ли писать под каждую табличку свою модель или модель на один модуль?) и несколько вьюх, в зависимотси от actiona. то есть в зависисмоти от actiona контроллер может подключать разные вьюхи.
4) к модулю мы можем получить доступ как из роутинга (то есть зашли например на страничку modul_name/action), так и из другого модуля. тут вопрос лоигично ли так делать, делают ли так другие программисты? или логичнее сделать как например реализовано в Joomla компоненты, к котjрым можем полуить доступ из роутинга и модули. по отдельности.
5) наличие общего реестра данных
6) вход в модуль (вьюху мы забираем или данные), осуществляеться одной строкой
7) модуль может быть использван много раз. например у нас есть модуль скажем выводящий галерею, мы его использовали например в основном шаблоне вывода, в другом модуле и еще глде нетиь где заблагорассудиться. очень бы не хотелось заводить все систему при этом по новой
8) (это условие не обязательное) доутсп к модулю можно осуществлять как внтури сервера (include) так и например модуль лежит где нить на стороннем сервере (данные мы получаем например по средством XML, или забираем целиком вьюху и вставлем в свой код на локальном сервере)


вопросы:
1. правильно ли делать забор данных одного модуля у другого через актионы, или актионы жто для пользователя, а для внутреннего обмена данными надо пользоваться другой схемой? (например для модуля создатеься 4ый файлик индексный котрый либо отдает данные либо выполняет актион контроллера)
2. правильно ли делать модули, к котрым мы имеме доступ как из роутинга так и из других модулей? или лоигчно делать как в той же джумле, модули и компоеннты?
3. есть модуль, данные котрого нужны всем другим модулям. не хотелось бы в каждом модуле запращивать/обращаться к этому данному модулю. напрмиер сложил в реестр и доволен. но возникает две проблеммы. 1. ресстр доступен локально, тоесть модуль на сторннем серваке не получит уже эти данные (но это вообщем даже не проблема без этого можно пережить) 2. модуль, данные котрого нужным всем остальным должен вызываться раньше остальных. а это уже какие то костыли. можно как то решить проблему с последовательностью вывода?
4. правльно ли делить модуль на три части - MVC или нужна еще четвертая - точка входа в модуль?
5. как определить действие в отношении какого модуля совершил пользователь. например на странце есть N модулей и у каждого есть несколько кнопок добавьт сохранить и пр. сверяться по имени кнопки нажатой в каждом из модулей? (простите за тупой вопрос, сам осознаю что он тупой)
6. правильно ли писать под каждую табличку свою модель или модель на один модуль?


более живой пример котрый я сумел придумать:
есть система учета. на странице выведено 3-4 модуля. один из модулей это выбор даты, за котрую мы просматирваем учет. другие модули выводят данные исходя из выбранной даты ессесено. косяк в том что: 1. каждый модуль должен обратиться к модулю выбора дат, для получения от оного даты, что не комильфо 2. а если же мы отправляем дату текущую в общий реестр то модуль с выбором дат должен запускаться раньше остальных модулей, что совсем не комильфо, иначе просто в нужный момент не будет этих данных.


лазая по нету, все что я сумел понять что под мои запросы более подходит архитектруа HMVC (на эту тему очень мало инфы!!!) но в ней есть недостаток, она в принципе не предполагает наличие общего реестра, обмен данными у модулей происходит в точек соприкосновения и только. а если мы прикуртим все же реестр (что есть костыль для этой архитектуры я так понял), то возникает необходимость в определнной последовательности вывода модулей что совсем грустно. или я совсем туп и забрел уже куда то не в ту степь?=))

ПС: ВЕЛОСИПЕД НЕ ПРИДУМЫВАЮ!!! ЕСТЬ ПРОСТО ЖЕЛАНИЕ РАЗОБРАТЬСЯ, НЕ БОЛЕЕ ТОГО!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




просто нарисуй на бумаге и все поймешь =)

а вообще более красивый вариант понятия модуль в yii например или symfony2 bundle

это модули) а в разных cms это по разному) где-то плагины + виджеты и тд)


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
docentovich  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




я думаю что в модулях у yii будет та же проблемма. либо из каждого надо обращаться к модулю дат либо пихать в общий реестр и тогда запцускать модуль дат раньше других. и то и другое мне не нравиться
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
docentovich  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




и еще очень бы хотелось увидеть код скрипта подключения модулей, кто как делает.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40






--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
docentovich  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




chee
понял спасибо. разберусь, изучу отпишусь
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 11 месяцев, 7 дней
Карма: 40




Цитата (docentovich @ 31.03.2016 - 19:21)
понял спасибо. разберусь, изучу отпишусь

ну ты это ... учитывай, что это не самый лучший пример в организации "модульной" системы. Моя система - компонентная, то есть в ней можно заменять маленькие компоненты, а не большие модули. Потому и понятие "модуль" в системе мягко сказать - декорация (или лучше сказать логическая абстракция) laugh.gif

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


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Michael  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 6065
Пользователь №: 18498
На форуме: 7 лет, 4 месяца, 13 дней
Карма: 256




Не понятно что ты задумал.

Это что, цмс какую то хочешь создать?
На чем будешь писать, на фреймворке или с нуля?
Модули как планируешь чтобы устанавливались в системе?



--------------------
There never was a struggle in the soul of a good man that was not hard
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 22 дня
Карма: 111




Цитата (docentovich @ 31.03.2016 - 17:49)
я думаю что в модулях у yii будет та же проблемма. либо из каждого надо обращаться к модулю дат либо пихать в общий реестр и тогда запцускать модуль дат раньше других. и то и другое мне не нравиться

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

у тебя 2 варианта
либо ты юзаешь напрямую API стороннего либо через API , но в любом случае у тебя рождаеться зависимость, как бы ты этого не хотел, и следствием выходит что для работы модуля А нужны будут и Б и В


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
docentovich  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




Цитата (Michael @ 1.04.2016 - 10:44)
Не понятно что ты задумал.

Это что, цмс какую то хочешь создать?
На чем будешь писать, на фреймворке или с нуля?
Модули как планируешь чтобы устанавливались в системе?

несколько лет назад я писал что то на подобие аля Excel.
суть задумки. в конструкторе модуля создаеться 1) данные котрыми модуль апелирует 2) связи ячеке данных с другими таблицами данных 3) допустимые действия над данными (чтение, добавление, редкатирование, удаление) 4) параметры для чтения, обьединения беруться из пункта 2 связи, для остального есть интерфейс, сотировки, лимиты, условия. под каждое условие создаеться кнопки в интерфейсе вьюхи. 5) создаеться актион, под актион прописываеться вьюха. так как оди и тот же модуль в одном месте мог быть виджетом а в другом компонентом то под каждый актион своя вьюха. ну естественно конструктор вьюх, в котрый сразу попадают все пимпы связанные с действиями пользователя и с атрибутами чтения. 6) создаються процессы. то есть при совершении определнных манипуляций над данными модуль вызывает актион другого модуля. такой актион конечно не должен иметь представления а только должен получать на вход отдаваемые ему данные и производить манипуляцию со своими данными. 7) настройка доступа к модулю разных групп (у меня было чтение модуля, запись, удаление и редактирование. следовательно под кадую группу пользователей на каждый модуль выставлялись права. связка такая. группа пользователя - доступ к вьюхе (тоесть отображение каждой вьюхи задавалось из админки отдельно), и на каждую операцию с данными отдельно группа-операция)

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

потом я взялся изучать yii и забыл про эту тему. а тем временем на моем говночуде отсались созданные проекты. и вот недавно мне пришлось венуться к ним. и я крепко задумался, как же сделать это грамотно. так озарения и не пришло.
есть идея все таки разделить на модули виджеты, компоненты и плагины. допустим плагин берет данные о дате и отдает ее везде где нужно иил кладет в реестр. таким образом теряеться необходимость обращаться каждый раз к моему модулю. но все же моя задумка про унифицированные модули регламентированно взаимодействующие друг с другом (а это нужно чотбы был простой конструктор модулей) потерпела фиаско. наверное я просто криворукий кодер=))).
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
docentovich  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 32
Пользователь №: 42772
На форуме: 8 месяцев, 9 дней
Карма:




забыл уточнить. создавалась связка чтение (функиця в модели) - актион - вьюха.
так как атрибуты чтения могли быть разными, значит разный интерфейс и как следствие разные запросы к бд.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса