Padre_Mortius писал(а):Если простая задача по передачи файла в рамках локальной сети решена с использованием sql-сервера и web-сервера, то именно такая реализация будет называться с использованием "крутых фишек". По ней можно написать статью, защитить диссертацию, получить премию за навороты от непонимающего начальства
"Крутые фишки" и "быдло"-ИТ-менеджмент это немного разные вещи.. Можно и микроскопом гвозди забивать, но он не для этого предназначен. Инструменты выбираются под задачу, а не на оборот. И если ИТ-менеджер не может понять проблемы, то это проблемы не программиста, а менеджера.
4. Чтобы передать файл по сети через сокет нужно знать, предположим, 10 единиц информации (набор функций и иметь общее понимание об TCP, IP, OSI и т.п.). Чтобы реализовать передачу файлов через веб-сервер нужно знать 100 единиц информации. Установили веб-сервер по дефолту. А безопасно ли это дефолтное состояние? Открываешь конфигурационный файл того же Apche и там 1000 настроек. Нужно их менять или оставить по дефолту? Можно прикомпилировать некий веб-сервер к своему приложению, а у него ведь тоже не одна функция. Как это работает? Кто знает, нужно изучать и изучать. В отличие от этих наворотов, про сокет не нужно знать много. Это на несколько порядков проще и понятнее.
А вот тут играет роль распределение задач. За кривую настройку веб-сервера отвечает системный администратор, а за кривую реализацию на сокетах - программист. Разницу видите?
Этой ИТ-дирекции лень разбираться в 100 модификациях SQL-серверов и т.п.
Не чувствуете противоречия? Зачем тем же админам еще один квадратноколесный велосипед, если есть вполне стандартный http-сервер, которых в конторе стоит с 10-ток штук.
Конечно бывает такая позиция решить свою задачу и создать гемор для других. Нормальные разработчики действуют на достижение общих целей, а те, кто действуют сугубо ради себя, тех увольняют сразу и без сожаления (какой бы квалификации он не был). Обычно таких даже на работу не берут, если ИТ-администрация адекватная.
Поэтому общая позиция нормального разработчика:
а) Если в компании уже есть некое средство передачи файлов по сети (будь-то файловый сервер, фтп, веб-сервер), то он и используется. Программировать вообще не требуется, либо программа будет с минимальным функционалом.
б) Если в компании нет подходящих средств передачи файлов по сети (какие есть нельзя использовать по каким-то причинам), то пишеться своя реализация с минимизацией гемора для компании.
в) Если программист опытный, знает технику работы с сетью (если не знает, то его нельзя привлекать к сетевым задачам на любых технологиях, т.к. он насоздаст дыр и идеологических багов), то на сокетах он напишет решение за 1-2 дня, максимум неделя (включая документацию).
Если есть угроза дос-аттак, то применить и белые листы, и ограничение на число подключений и очередь - это вопрос нескольких строк кода. Опять же речь шла о передачи по сети, а не через Инет (глобальная сеть общего доступа), так что и перечень опасностей будет свой.
Если программист не делает обработку ошибок, не делает защиту от случайного обращения левой проги к данному порту, то такой программист просто не умеет программировать, его либо на обучение, либо в дворники (увольняем из группы программирования).