Сообщение от moka
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 уже можешь претендовать на юниора -
поверь мне спрос на хотя бы что-то понимающих юниоров довольно большой.