forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Http-Сервер (Отправка файла) (http://forum.boolean.name/showthread.php?t=19924)

Gector 05.08.2015 18:27

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298213)
Он спросил изначально 31.07.2015. Сегодня уже 05.08.2015, это 5 дней спустя он не решил задачу.
Я загуглил, и написал мелкий скрипт за ~5 минут, и решил его задачу, также показал как хэндлить кодом запросы тоже.

Если бы его шарп решал бы отлично поставленную задачу, или была бы инфа - то думаю за 5 дней нашлось бы решение.

В отличии от тебя, я дал решение задачи. Ты лишь оффтопнул.

Кхм... Вообще помог в вк действительно))).

Смысл был именно в том, чтобы не только написать приложение но и разобрать по полочкам сам процесс. 50% для дела 50% для самообразования.

И пять дней но не пять полных дней. В сущности только вчера сел за изучение.

А решение было простое. Для работы с файлами перевел StreamWriter в BinaryWriter. Не учел этот нюанс.

Всем спасибо).

h1dd3n 05.08.2015 21:30

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298156)
Шарп и его виртуальная машина тяжелее того же nginx..

написал moka и дал "решение" на node.js

Gector 05.08.2015 23:11

Ответ: Http-Сервер (Отправка файла)
 
Расслабьтесь бэтмены).

moka 06.08.2015 03:16

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от h1dd3n (Сообщение 298220)
написал moka и дал "решение" на node.js

V8 тяжелее CLR?

Зачем изобретать велосипеды с stream'ами, если можно использовать готовые решения?
В реальной ситуации, использование stream'ов ручками, оправдано лишь когда стандартные решения не имеют возможности застримить как нужно, по причине например: стримишь как прокси, или вообще стримишь не файлы, или что-то сложное. Но это идет с ценой.
Тот же например nginx, через который обычно раздают статичные файлы, занимается этим в разы эфективнее, и использует низкого уровня фичи платформы, чтобы иметь высшуют производительность.

По факту если тебе нужно тупо постримить статичные файлы, и ты это будешь "ручками" делать, то у тебя нормальное приложение загнется при даже 10% от нагрузки в отличии от того же nginx.
В продакшане в нормальных компаниях, за такое по рукам бьют.

St_AnGer 06.08.2015 09:57

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298233)
Зачем изобретать велосипеды с stream'ами, если можно использовать готовые решения?
В реальной ситуации, использование stream'ов ручками, оправдано лишь когда стандартные решения не имеют возможности застримить как нужно, по причине например: стримишь как прокси, или вообще стримишь не файлы, или что-то сложное.

Ну... Например что бы изучить "велосипед" изнутри и понять как он работает, обычно для этого изобретают такие "велосипеды". Речь идёт вроде не про реальную ситуацию, а как раз таки про изучение.

Node.js - это круто, но зачем вызывать экскаватор, что бы вскопать небольшую клумбу, тем более если человек хочет сам поработать?

Gector 06.08.2015 11:45

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298233)
V8 тяжелее CLR?

Зачем изобретать велосипеды с stream'ами, если можно использовать готовые решения?
В реальной ситуации, использование stream'ов ручками, оправдано лишь когда стандартные решения не имеют возможности застримить как нужно, по причине например: стримишь как прокси, или вообще стримишь не файлы, или что-то сложное. Но это идет с ценой.
Тот же например nginx, через который обычно раздают статичные файлы, занимается этим в разы эфективнее, и использует низкого уровня фичи платформы, чтобы иметь высшуют производительность.

По факту если тебе нужно тупо постримить статичные файлы, и ты это будешь "ручками" делать, то у тебя нормальное приложение загнется при даже 10% от нагрузки в отличии от того же nginx.
В продакшане в нормальных компаниях, за такое по рукам бьют.

Moka, ты в двух темах совершенно разный))). В одной надо избретать велосипеды, в другой не надо))).

Если бы я писал какой нибудь портал, то однозначно поставил бы nginx или апач. Но у меня задачи другие:
1. Юзаться будет только веб-морда. По той причине что html-страничка привычная и удобная вещь. И ее можно вообще в закладки добавить.
2. Разобраться в базовых приципах работы с сетью не будет лишним даже если я буду писать все на node.js. Верно? Пока на шарпе. Но пока и не принципиально.

Кроме того разбираться на практике с такими задачами довольно интересно. В частности я теперь имею более детальное представление о том как пишутся сервера, как устроен тот же nginx. И самое главное имею уже представление о том как можно делать и как нельзя. В инсте такому не научишься особо.

moka 06.08.2015 13:46

Ответ: Http-Сервер (Отправка файла)
 
В инсте не научишься если сам не занимаешься этим - это ты верно подметил.
weekend project - лучший вариант учить новые вещички изобретая велосипеды обычно, с немного более конкретной задачей, будет и результат.

Например Mr_F_ писал geom.io, изучал много чего, webgl, javascript, php, mysql. Немного дольше чем weekend project, но много велосипеда и много опыта он получил.

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

Gector 06.08.2015 14:12

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298244)
weekend project ....

Вот оно как называется).

Цитата:

Сообщение от moka (Сообщение 298244)
Велосипеды на самом деле ок для образования, ну тогда в таком случае нужно быть открытым к любой технологии, а не тыкать мол "спросили на этом языке, а ты даешь на другом".
Язык - для нормального разраба, это вообще мизерный фактор. Хороший разраб пишет на многих языках, и не будет ему проблем взять ранее не известный (ну кроме совсем замудренных), или новую либу и решить поставленную задачку.

Не спорю. Открытым быть нужно. Но правда в данном случае я интересовался именно базовыми принципами передачи данных. Тред скорее не про http-сервер для решения какой-то задачи, а про то как он с взаимодействует с браузером в принципе.

moka 06.08.2015 15:08

Ответ: Http-Сервер (Отправка файла)
 
Ну тогда ты уже примерно знаешь:

Броузер создает TCP соединение с сервером и шлет header (plain-text).
Далее сервер обрабатывает заголовок и исходя из того что в нем описано и что ожидает броузер делает решение. Ответом должен быть также заголовок со статусом и сразу после него возможно данные в сыром виде, длиной как указано в заголовке или если это octet-stream, то тупо stream данных до закрытия соединения.

h1dd3n 06.08.2015 23:45

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298233)
V8 тяжелее CLR?

Зачем изобретать велосипеды с stream'ами, если можно использовать готовые решения?
В реальной ситуации, использование stream'ов ручками, оправдано лишь когда стандартные решения не имеют возможности застримить как нужно, по причине например: стримишь как прокси, или вообще стримишь не файлы, или что-то сложное. Но это идет с ценой.
Тот же например nginx, через который обычно раздают статичные файлы, занимается этим в разы эфективнее, и использует низкого уровня фичи платформы, чтобы иметь высшуют производительность.

Во-первых, да, я на 100% уверен что CPU-intensive код на C# будет работать быстрее на .net clr, чем js на v8 и что в общем случае у разработчика на C# больше возможностей рационального использования памяти и многоядерной архитектуры, чем у разработчика на js.
Во-вторых я на 100% уверен что сравнение "V8 vs CLR" не имеет никакого отношения к "производительность отдачи статики на node.js vs производительность отдачи статики на C#".
В-третьих я специально слово решение написал в кавычках, поскольку это не решение а какой-то пздц. Ты мало того что привел пример на node.js дак еще и в коде никак вообще не показал каким же все-таки образом файлы с диска на сервере появляются в браузере на клиенте. Ты тупо заюзал готовый фреймворк у которого есть функция "обработатьСтатическиеФайлы". Примерная аналогия:
XXX: У меня есть приложение на node.js, но я никак понять не могу как запаковать файл в zip архив и отправить на клиент ?
moka: вот код на C# (ASP.NET MVC):
Код:

public class HomeController : Controller
{
        [HttpGet]
        public ActionResult Index()
        {
                return ZippedFileResult("C:\\somefile.txt");
        }
}

Код намеренно утрирован, чтобы тебе было проще понять почему твой ответ не ок.

И что самое то интересное мой пост был вообще не о сравнении clr и v8 и не о сравнении node.js и C#. Ты написал что C#/clr тяжелее того же nginx (другими словами nginx справится лучше), но тут же даешь решение на node.js.
То есть тормозное (по сравнению с nginx) решение на C# - это плохо и неправильно, а тормозное (по сравнению с nginx) решение на node.js/express это вдруг внезапно збс и вообще нормально. Так?

Gector,
Как я понимаю ты руками принимаешь соединения и пишешь в response. Для понимания основ это хорошо, однако это может сильно сбить тебя с толку... Думаю ты в конце концов хочешь получить какие-нибудь практические знания/навыки, чтобы использовать их в работе. C# это не только язык для "старта", на C# написано огромное количество веб-приложений (преимущественно в enterprise секторе) и веб-сервисов. Если хочешь как-то дальше развиваться настоятельно рекомендую взять веб-фреймворк. Сможешь хотя бы познакомиться с общепринятыми подходами к разработке, подглядеть удачные решения и т.д. Предпочтительно ASP.NET MVC, но если он кажется монструозным, то можно и Nancy. Во фреймворках принято разделять ответственность приложения и http-сервера. То есть прослушиванием порта и обработкой сетевых соединений занимается http-сервер, запросами в базу и формированием html страницы занимается приложение. Тебе совсем не обязательно ставить апач или nginx (я бы даже сказал не рекомендуется использовать эти сервера для .net веб-приложений). У винды есть IIS. Он прекрасно работает в продакшене, а уж для "попробовать" его хватит тем более. Изучив хотя бы основы разработки с aspnet mvc уже можешь претендовать на юниора - поверь мне спрос на хотя бы что-то понимающих юниоров довольно большой.

moka 07.08.2015 15:15

Ответ: Http-Сервер (Отправка файла)
 
Взорвало?
Задача была поставлена, решение дано. А ты новеллу пишешь тут лол.
Я производительность js кода на v8 с c# на clr и не сравнивал, тебя уносит.

h1dd3n 07.08.2015 19:03

Ответ: Http-Сервер (Отправка файла)
 
Цитата:

Сообщение от moka (Сообщение 298286)
Взорвало?
Задача была поставлена, решение дано. А ты новеллу пишешь тут лол.

У тебя дислексия , да? Ты никак не можешь прочитать в моем посте почему твое решение не решение вовсе? Не надо повторять что ты дал решение, поскольку это не так. Прочитай мой ответ еще раз, для понимания.
Цитата:

Я производительность js кода на v8 с c# на clr и не сравнивал, тебя уносит.
Да у тебя неадекват головного мозга...
#8 moka: Шарп и его виртуальная машина тяжелее того же nginx..
#17 h1dd3n: написал moka и дал "решение" на node.js
#19 moka: V8 тяжелее CLR?
#25 h1dd3n: Во-первых, да, я на 100% уверен что CPU-intensive код на C# будет работать быстрее на .net clr, чем js на v8 и что в общем случае у разработчика на C# больше возможностей рационального использования памяти и многоядерной архитектуры, чем у разработчика на js.
Во-вторых я на 100% уверен что сравнение "V8 vs CLR" не имеет никакого отношения к "производительность отдачи статики на node.js vs производительность отдачи статики на C#".
......
И что самое то интересное мой пост был вообще не о сравнении clr и v8 и не о сравнении node.js и C#. Ты написал что C#/clr тяжелее того же nginx (другими словами nginx справится лучше), но тут же даешь решение на node.js.
То есть тормозное (по сравнению с nginx) решение на C# - это плохо и неправильно, а тормозное (по сравнению с nginx) решение на node.js/express это вдруг внезапно збс и вообще нормально. Так?

#26 moka: Я производительность js кода на v8 с c# на clr и не сравнивал, тебя уносит.

Специально выделил жирным интересные места, поскольку у тебя, очевидно, проблемы с чтением.

moka 07.08.2015 19:44

Ответ: Http-Сервер (Отправка файла)
 
Проблемы с чтением. Ок.
Бугуртим дальше.


Часовой пояс GMT +4, время: 16:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot