|
|
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
Приложение делается под нескольких заказчиков В настройках меняется "CUSTOMER" и далее этого строится логика Как правильно работать с таким подохдом 1) Для каждого CUSTOMER отдельное приложение (мне не совсем хотелось бы) 2) Выделять, каждого в отдельный модуль На уровне ссылок Код: sql 1. 2. Соответственно и кода Код: java 1. 2. Но не будет ли в таком случае дублирование кода и других камней в сопровождении 3) По коду делать проверки на логику if (cust = CUSTOMER1)... Не размажет ли это всю логику Может ваши советы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 07:20 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, вопросы безопасности (в частности, получение несанкционированного доступа к "чужому" функционалу) пока не рассматриваются? Тогда диспетчер функционала плюс независимые модули реализации функций. А реализовывать диспетчер как отдельный модуль или как базовый блок - решай сам.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 08:00 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
-=Koba=-3) По коду делать проверки на логику if (cust = CUSTOMER1)... Не размажет ли это всю логику Зачем код оставлять? Дефайнами вырезать ненужное на этапе сборки/компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 08:54 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
wadmanЗачем код оставлять? Дефайнами вырезать ненужное на этапе сборки/компиляции. В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена. У Фаулера на сайте есть статья про FeatureToggles . Еще я бы подумал разделить на два уровня - фичи и кастомеры, тогда если второму кастомеру понадобиться другая фича можно будет просто ему переключить флажок фичи: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Так же см паттерн "Стратегия". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 11:57 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
F#В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена. Мысль не понятна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2017, 12:15 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
AkinaНасколько я понимаю, вопросы безопасности (в частности, получение несанкционированного доступа к "чужому" функционалу) пока не рассматриваются? Тогда диспетчер функционала плюс независимые модули реализации функций. А реализовывать диспетчер как отдельный модуль или как базовый блок - решай сам.. А можете объяснить, что вы имеете ввиду под диспетчером и модулем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 10:25 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
F#wadmanЗачем код оставлять? Дефайнами вырезать ненужное на этапе сборки/компиляции. В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена. У Фаулера на сайте есть статья про FeatureToggles . Еще я бы подумал разделить на два уровня - фичи и кастомеры, тогда если второму кастомеру понадобиться другая фича можно будет просто ему переключить флажок фичи: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. Так же см паттерн "Стратегия". Я просто не совсем представляю как прикрутить стратегию сюда Если б у меня к примеру было узко направлена задача, а тут целый проект Патерн будет один общий? Или Допустим на страницу входа в систему свой, на страницу справончик свой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 10:29 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
-=Koba=-, Паттерн (шаблон, подход) - один, а применяется в проекте многократно Там где для разных пользователей используется разный код - там и место стратегии ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 11:23 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
wadmanF#В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена. Мысль не понятна. При компиляции Код: c# 1. 2. 3. 4. 5. Будет скомпилирована одна ветка. Допустим вы добавите параметр обязательный в ProcessOrder - тогда скомпилируется только одна из этих веток и скажет, что именно в ней ошибка. Вторая ветка не будет проверена. Внутри нее не будут работать автодополнения и инструменты автоматического рефакторинга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2017, 15:23 |
|
||
|
Приложение для разных пользователей
|
|||
|---|---|---|---|
|
#18+
-=Koba=-В настройках меняется "CUSTOMER" и далее этого строится логика Как правильно работать с таким подохдом Ну для начала, понять, что "в настройках меняется customer" - очень плохой метод. Такой же плохой, как прошивать этого customer-а в код. Завтра случается что-нибудь интересное - ну скажем, один ваш клиент покупает другого - и вам с этим кодом становится так весело, так весело... То, что можно вынести в настройки, нужно вынести в настройки. Не "клиента", а "фичи": используется такой метод, используется сякой метод итп. И пусть клиенты настраивают сообразно своим желаниям. Во-вторых, стоит понять - как предполагается распространение этого приложения. Если клиентам выдаются дистрибутивы - лично я, скорее всего, сделал бы основное приложение, кастомизируемое плагинами, и эти плагины доделывал бы сообразно потребностям клиентов. Если же будет "типа облако или saas или типа того", в общем, сервер, куда стучатся клиенты - то при необходимости имел бы несколько альтернативных реализаций нужного функционала (без дублирования кода, с использованием любого из предлагаемых ООП подходов), оформленных как независимые функции, а с помощью прав доступа рулил бы, какому из клиентов какая реализация достаётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2017, 12:30 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39393674&tid=1340499]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
208ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 551ms |

| 0 / 0 |
