Кто прав кто не прав
Доброго времени суток!
Возник конфликт с одним разработчиком по поводу связи фронта и бэка. Хочу узнать ваше мнение. Отпустим подробности) На бэке висит парсер сайта, а клиент - мобильное приложение, которое получает данные с парсера и удобненько их выводит. Естественно данных много и на клиенте есть возможность создания "фильтров". Пользователь создает новый фильтр, (удаляет, редактирует) и любое действие отправляется в облако. где и сохраняется. Когда приложение запрашивает данные бэк отдает распарсенные данные, которые соотвествуют выбранному фильтру. Короче обычный клиент сайта с облачной синхронизаций фильтров поиска. Но если пользователь заходит с другого телефона под своим аккаунтом, то мы отдаем ему все его настройки! Следовательно фильтры - это данные для парсера + модели для ui А мне очень удобно использовать статику такого вида (по ней гененрируется шаблон) (есть не только такие) $scope.metroStation = { 'Арбатско-Покровская линия': { color: '#072889' arr: [ 'Пятницкое шоссе' 'Митино' 'Волоколамская' 'Мякинино' 'Строгино' 'Крылатское' 'Молодежная' 'Кунцевская' 'Славянски бульвар' 'Парк победы' 'Киевская' 'Смоленская' 'Арбатская' 'Площадь революции' 'Курская' 'Бауманская' 'Электрозаводская' 'Семеновская' 'Партизанская' 'Измайловская' 'Первомайская' 'Щелковская' ] }, ... А модели в таком виде: 'Арбатско-Покровская линия': [ 'Электрозаводская', 'Семеновская', 'Щелковская'] Тобишь человеку гененрируется (например) список станций метро с сущностью гномика но в виде чекбокса он кликает по одному из них, и тот сразу же попадает в модель. Все удобно читаемо и тд, но бэкенедер настаивает чтобы я отправлял ему не такую модель ['Электрозаводская', 'Семеновская', 'Щелковская'] // а такую [2, 4, 3] Только я не понимаю почему! Мне приводят в аргумент что это все фреймворки так делают и вообще это знаменитый паттерн программирования, и никто не шлет юникодовые строчки на серв и тд При этом ему нужны еще были два файлика чтобы не наебаться с этими числовыми индексами (поменял строчку на фронте и все, пзд) А мне бы пришлось делать декораторы для правильной выборки Еще был аргумент с локализацией, но тут мой способ опять лучше. Я создам просто две статики, из одной буду генерировать шаблон а из другой модель. ПРОФИТ! Я не понимаю почему он не может связать юникодовую ссылку с методом парсера вернуть то что нужно. Короче странно, обьясните если чего то не понимаю. Его плюсы: цифорки, меньше трафика Мои плюсы: Меньше кода, он читабельнее Никаких декораторв, я ему отправил, он связал, все, работает! Если он мне вернул, то я в модель пихаю, все, работает Опять же локализация удобнее Не нужно хранить 2 статичных файла чтобы делать выборку (и дай бох не наепаца с циферкой) Может показаться что дело тут в экономии трафика (строки заметно больше), но фильтры пользователь делает крайне редко, но пуш уведомления, уведомления по вебсокетам и огромное кол-во трафика будет сжираться картинками и прешедшими обьявами (тут без 4г или вифи никак) |
дело не тока в трафике, но и распределении нагрузки, клиентов много, сервер один. На бекенде обработку данных нужно сводить к минимуму, клиент вполне справится с маппингом строк в числа и не заметит тормозов, серверу же нужно маппить сотню-тысячу клиентов, он ведь один.
Насчет отдавать цифры/ключи/хеши, я пожалуй соглашусь. Бекенд не должен работать со строками (результатом отображения), опять же сложная обработка/нагрузка. На сервере это ни к чему. |
Цитата:
А заказы на удаление изменение и выдачу данных по фильтру толкьо по id |
Цитата:
оки. китаец зашел к тебе на сайт\приложение. ты будешь гонять китайские символы туды сюды ?) а айдишники и для китайца айдишники. и для чукчи тоже будут циферки ) Цитата:
|
Надуманная проблема какая-то. Естественно лучше айдишники отдавать, чем сами значения.
|
Цитата:
Я не хочу привязываться к местоположению элемента, потому что придется пилить одинаковые фалйики со статикой и на серве и на клиенте чтобы не перепутать случайно. И при малешем изменении их менять. А то велик шанс получить что нибудь не то. Привязываюсь к значению(и ключу в одном флаконе), поэтому циклами бегать не нужно, и серв мне не выдаст фильтр 3 хотя просил 2 из за маленького недочета, . а просто пошлет нафиг |
Цитата:
|
l-liava-l, сервер должен обрабатывать цифры. Символы помимо цифровых очень затратны. Если будет наплыв, то с цифирками сервер еще справиться, а вот с юникодом уже вряд ли.
Конечно это зависит от реализации, но лично я никогда не отправляю на сервер под нагрузкой ничего кроме цифирок. Если предполагается нагрузка, то только цифры. И потом, а если 'Электрозаводская' Внезапно! кто-то решит изменить на: 'м. Электрозаводская'? Что и серверную часть придется переписывать? Ни, ни, ни. Если я конечно правильно понял проблему. |
Цитата:
Цитата:
Благодарю) |
Цитата:
Если коротко, то элемент твоего справочника это { id: {Number}, title: {String} } просто потому, что только id однозначно идентифицирует запись, а title может меняться/локализоваться |
Цитата:
имхо, пусть уж так: // руске файл LOCALIZE['RU'] = { '0': 'Э-Э-ЭЙ' }; // онглицк файл LOCALIZE['EN'] = { '0': 'YOOOO' }; |
Цитата:
|
Часовой пояс GMT +3, время: 21:43. |