powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Приложение для разных пользователей
11 сообщений из 11, страница 1 из 1
Приложение для разных пользователей
    #39392643
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложение делается под нескольких заказчиков
В настройках меняется "CUSTOMER" и далее этого строится логика

Как правильно работать с таким подохдом

1) Для каждого CUSTOMER отдельное приложение (мне не совсем хотелось бы)

2) Выделять, каждого в отдельный модуль
На уровне ссылок
Код: sql
1.
2.
http://server.com/CUSTOMER1/index.html
http://server.com/CUSTOMER2/index.html


Соответственно и кода
Код: java
1.
2.
com.company.CUSTOMER1.
com.company.CUSTOMER2.


Но не будет ли в таком случае дублирование кода и других камней в сопровождении

3) По коду делать проверки на логику
if (cust = CUSTOMER1)...
Не размажет ли это всю логику

Может ваши советы?
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39392650
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, вопросы безопасности (в частности, получение несанкционированного доступа к "чужому" функционалу) пока не рассматриваются?
Тогда диспетчер функционала плюс независимые модули реализации функций. А реализовывать диспетчер как отдельный модуль или как базовый блок - решай сам..
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39392669
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-3) По коду делать проверки на логику
if (cust = CUSTOMER1)...
Не размажет ли это всю логику
Зачем код оставлять? Дефайнами вырезать ненужное на этапе сборки/компиляции.
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39392883
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
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.
static CustomerFeatures GetCurrentFeatures()
{
    if (customer == customer1)
    { 
          return new CustomerFeatures()
          {
                AllowMultipleLogins = true;
                LogUnsucessfulLogins = false;       
          } 
    }
    else
    {
          return new CustomerFeatures()
          {
                AllowMultipleLogins = false;
                LogUnsucessfulLogins = true;       
          }
    }
}


void Login(string userName, string password)
{
       if ((GetCurrentFeatures().AllowMultipleLogins() || !UserIsLoggedIn()) &&
          PasswordIsCorrect(password, username))
       {
       }
       else
       {
            if (GetCustomerFeatures().LogUnsuccessfullLogins)
            {
                  Log.Write($"Login for user {userName} failed");
            }
       }
}



Так же см паттерн "Стратегия".
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39392898
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F#В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена.
Мысль не понятна.
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39393646
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaНасколько я понимаю, вопросы безопасности (в частности, получение несанкционированного доступа к "чужому" функционалу) пока не рассматриваются?
Тогда диспетчер функционала плюс независимые модули реализации функций. А реализовывать диспетчер как отдельный модуль или как базовый блок - решай сам..

А можете объяснить, что вы имеете ввиду под диспетчером и модулем
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39393647
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
static CustomerFeatures GetCurrentFeatures()
{
    if (customer == customer1)
    { 
          return new CustomerFeatures()
          {
                AllowMultipleLogins = true;
                LogUnsucessfulLogins = false;       
          } 
    }
    else
    {
          return new CustomerFeatures()
          {
                AllowMultipleLogins = false;
                LogUnsucessfulLogins = true;       
          }
    }
}


void Login(string userName, string password)
{
       if ((GetCurrentFeatures().AllowMultipleLogins() || !UserIsLoggedIn()) &&
          PasswordIsCorrect(password, username))
       {
       }
       else
       {
            if (GetCustomerFeatures().LogUnsuccessfullLogins)
            {
                  Log.Write($"Login for user {userName} failed");
            }
       }
}



Так же см паттерн "Стратегия".

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

Патерн будет один общий? Или
Допустим на страницу входа в систему свой, на страницу справончик свой
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39393674
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Паттерн (шаблон, подход) - один, а применяется в проекте многократно

Там где для разных пользователей используется разный код - там и место стратегии
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39393753
F#
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
F#
Гость
wadmanF#В таком случае будет компилироваться одна ветка и в случае несовместимых изменений, вторая просто не будет проверена.
Мысль не понятна.

При компиляции
Код: c#
1.
2.
3.
4.
5.
#if Customer1
ProcessOrder(order1, false)
#else
ProcessOrder(order1, true)
#endif



Будет скомпилирована одна ветка. Допустим вы добавите параметр обязательный в ProcessOrder - тогда скомпилируется только одна из этих веток и скажет, что именно в ней ошибка. Вторая ветка не будет проверена. Внутри нее не будут работать автодополнения и инструменты автоматического рефакторинга.
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39393978
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-В настройках меняется "CUSTOMER" и далее этого строится логика
Как правильно работать с таким подохдом
Ну для начала, понять, что "в настройках меняется customer" - очень плохой метод. Такой же плохой, как прошивать этого customer-а в код. Завтра случается что-нибудь интересное - ну скажем, один ваш клиент покупает другого - и вам с этим кодом становится так весело, так весело...

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

Во-вторых, стоит понять - как предполагается распространение этого приложения. Если клиентам выдаются дистрибутивы - лично я, скорее всего, сделал бы основное приложение, кастомизируемое плагинами, и эти плагины доделывал бы сообразно потребностям клиентов. Если же будет "типа облако или saas или типа того", в общем, сервер, куда стучатся клиенты - то при необходимости имел бы несколько альтернативных реализаций нужного функционала (без дублирования кода, с использованием любого из предлагаемых ООП подходов), оформленных как независимые функции, а с помощью прав доступа рулил бы, какому из клиентов какая реализация достаётся.
...
Рейтинг: 0 / 0
Приложение для разных пользователей
    #39395666
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

в общем случае я бы делал разные модули. Но многое зависит от конкретых обстоятельств
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Приложение для разных пользователей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]