Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

.NET web

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Обычно, когда речь идет о .NET в контексте веб-приложений почему-то почти всегда (насколько я сталкивался) имеется ввиду ASP.NET и обычные *.aspx страницы. и вот всё это вышеперечисленное судя по личным ощущениям (и не только) дико медленное, неповоротливое и ужасное.

при том, что сам по себе .NET довольно быстрая штука (раз, два), да и в целом возможности позволяют широко разгуляться (хотите событийную модель? — пожалуйста. пусть не самый лучший пример, но все же это явно шустрее ASP.NET будет и платформа дает больше возможностей, чем node.js, как мне кажется).

и собственно поэтому вопрос — насколько на самом деле актуален .NET без взяких там ASP и IIS для веб-разработки?
если все же c# есть в вебе без всяких там IIS, то было бы здорово увидеть примеры вакансий, инструментов, отзывы разработчиков.

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

.NET Web чувствует себя прекрасно последние 15+ лет, ничего не тормозит (если руки из нужного места выросли), IIS вполне норамльный веб-сервер, особенно после 6-й версии, на нем запилено и крутится несколько топовых сайтов. Вакансий дофига, найти не проблема.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Абы не как у москаля? Ну тогда сойдет.

Любой большой проект asp.net это лишь 5% кода взаимодействующих с asp.net, например.

Который при правильной архитектуре не так сложно заменить на что-нибудь другое при необходимости

ASP.NET и обычные *.aspx страницы

Это верхушка айсберга.

дико медленное

В правильных руках летает.

неповоротливое и ужасное.

Вот и не лезь туда пока не просветлишься.

.NET без взяких там ASP и IIS для веб-разработки?

Можно, но сыровато и пока не имеет смысла в 80% случаев.

c# есть в вебе без всяких там IIS

Естественно да.

примеры вакансий, инструментов, отзывы разработчиков

В Украине только суппорт.

Обычно, когда речь идет о .NET в контексте веб-приложений почему-то почти всегда (насколько я сталкивался) имеется ввиду ASP.NET и обычные *.aspx страницы.

Як на мене то вже давно під ASP.NET мається на увазі ASP.NET MVC, а не *.aspx
ASPX (Web Forms) дійсно не найшвидший фреймворк, ну але йому вже майже 15 років, не дивно :)

насколько на самом деле актуален .NET без взяких там ASP и IIS для веб-разработки?

Зазвичай ті реалізації, які не зав’язані на IIS не дуже популярні, але вони є, наприклад nancyfx.org
На скільки я розумію то так відбувається, тому що якщо ви пишете на .NET то вам абсолютно ОК хоститись на IIS. І це дійсно можна зробити з хорошою швидкістю роботи.

Ну і на ASP.NET Core вже зовсім все інакше. Можете порівняти його швидкодію з іншими:
github.com/aspnet/benchmarks (внизу сторінки)

за бенчмарки отдельное спасибо.

производительность чаще достигается за счет
1) правильных многоуровневых кешей/ CDN
2) масштабирования и подкачки RAM(она самый дешевый ресурс)
3) масштабирования и организации базы данных(OLTP, scaling)
Сам язык веб-сервера уже имеет второстепенное значение и не важно что быстрей или медленней если говорить о хай-лоад проектах. Ентерпрайз же проекты не имеют целью мега-перфоманс по-этому тут важней удобство разработки, asp.net core имеет своим приимущетсвом разве что более дешевое масштабирование на более дешевых линукс серверах, прирост по перфомансу самого движка это сомнительное приимущество, если нагрузить его базой, логикой оно вообще будет незаметно.

asp.net core имеет своим приимущетсвом разве что более дешевое масштабирование на более дешевых линукс серверах

Кому надо пилить энтерпрайз на линуксах, давно пилят его на джаве, .NET core им будет как игрушка.

Ну да, а смысл? в .net core еще экосистема не созрела, возможности не такие широкие как в .NET, а за фри надо идти к джаве и миллионам опен-сорсных проектов на ней.

возможность запускать .net core под линукс очевидно делался не для того, что бы java девелоперы начали писать на с# - а что бы лучше продавалась azure в первую очередь.

Мы на нет коре пишем микросервисы. По фану.

Посмотрите на ASP.NET Core / Core MVC
он быстрый, кажется именно то, что вам нужно

Так в статье и сравнивается ASP.NET Core и Go. С того времени ASP.NET Core стал быстрее, правда.

Ну и в комментариях правильно пришут, что сравнения некорректны, потому что такой простой сервер можно было бы реализовать простым midleware и сэкономить на многом.

этот бенч очень косячный у чувака — видно что он слабо разбирается в том, что он делает.

В целом asp.net core достаточно небыстрый(пару недель назад вышел новый раунд тестов на tech empower). Особенно там где есть какое-то .net core i\o(работа с базой например). В text\plain нет работы из .net core с i\o напрямую(с сетевыми сокетами), поэтому он и кажется производительным, а мс это использует везде для раскрутки asp.net core, но в целом он как был так и остался(я про tech empower 13-14). МС что-то там крутит с новыми unmanaged конвертациями для новых .net примитивов и с целью уменьшения аллокаций в System.Io.Pipelines, но как-то не похоже что GC основная проблема медленной работы с базой и прочим i\o внутри приложения в текущий момент.

Микросервисы на Го всеравно лучше.

Если похоливарить, то может и так.
А если на практике, то у дот нета есть преимуществ, помимо скорости работы.
Начать хотя бы с возможности поиска девелоперов в команду, и быстродействие может оказаться не решающим фактором

Интересно будет посмотреть на

tech empower
с asp.net core 2.
В последнем тесте он все таки ещё не используется.

ASP.NET 5 MVC 6 уже не привязан к iis, там раньше привязка была из-за System.web.mvc либы которая была привязана к iis, например web api раньше не были привязаны к iis, опять же таки, через эту либу. Есть селф хостет приложения, аля нод, со специфиакацией OWIN, приложение само слушает порт — сервер kestrel написанный на C#, в студии даже шаблон есть готовый под это дело.

.NET Web чувствует себя прекрасно последние 15+ лет, ничего не тормозит (если руки из нужного места выросли), IIS вполне норамльный веб-сервер, особенно после 6-й версии, на нем запилено и крутится несколько топовых сайтов. Вакансий дофига, найти не проблема.

ничего не тормозит (если руки из нужного места выросли),

специально открыл msdn чтоб проверить, вдруг он и правда перестал тормозить.

Вакансий дофига, найти не проблема.

если все же c# есть в вебе без всяких там IIS, то было бы здорово увидеть примеры вакансий, инструментов, отзывы разработчиков.

вакансии на asp.net я и так вижу).
но за ответ спасибо.

специально открыл msdn чтоб проверить, вдруг он и правда перестал тормозить.

специально открыл stackoverflow.com чтоб проверить, вдруг он реально быстро работает.

Это к тому что в основном все упирается в сам код, а не IIS и остальное.

Какая разница сколько их :) Мы же на за кол-во говорим, и это просто пример сайта написанного на ASP.Net MVC поверх IIS-а, который показывает хорошую производительность и нагрузку

большая разница.
stackoverflow это не ASP.NET из коробки, который запустили и он тут же быстрый.
они писали очень много компонентов и очень тщательно разрабатывали архитектуру, так что живут не ASP.NET единым.

Как и любой другой большой проект.

но кроме stackoverflow на asp.net больше быстрых примеров таких масштабов практически нет.

Их действительно меньше, чем у той же Java, но они есть. Тот же Azure можно добавить.
С появлением .net core их станет больше.

ну это уже будет не обязательно связка iis + .net

Нуууу, то есть в общем-то приходим к тому что я и сказал — всё зависит от прямоты рук и кода.

Ну и все же, stackoverflow сейчас крутится на IIS 8.5, ASP.Net MVC 5.2 и .Net 4.6.1, плюс стандартная обвязка из MS SQL\редиса\haproxy.

И плюс у них есть своя специфика на основе ElasticSearch и чистого http.sys-а для Tag engine-а.

всё зависит от прямоты рук и кода.

нууу, это понятие растяжимое. скриптовые языки при «прямых руках и коде» тоже можно заставить работать быстро, только не у всех получается.

в чем вопрос тогда? имхо, это вполне хороший пример быстрого приложения написанного на чистом .Net-е + IIS. я мог бы поделиться еще парой примеров высоконагруженных систем, но NDA этого не позволяет.

вопрос в любопытстве.
мне нравится как node.js,golang и всякие асинхронные поделки на php работают с http, но совершенно не нравятся они сами.
при этом мне нравится .net, но не хочу связываться c iis и прочим.

Мне нравится C#, но не хочу связываться с его компилятором...

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

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

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

.нет врдяли вписывается в это описание, слишком разные миры с тем что ты сейчас используешь

розмірів/популярності

Но не сложности. Примитивщина. Его можно на любом говне написать и при правильной архитектуре будет летать.

меня интересуют более-менее серьезные приложения, когда .net сам сервит и статику и пути и прочее-прочее.

Какой смысл в этом, когда есть более подходящие инструменты?

да тот же микросервис какой-нибудь (ладно, тут без статики, да).
не всегда имеет смысл разворачивать тяжелый сервер типа iis или apache

далее-далее-далее-готово, иис развернут, экономить ресурсы нужно, но время программиста дороже в этом случае

Даже для микросервиса нужны будут

— логирование
— обработка ошибок
— управление жизненным циклом рабочих процесов
— аутентификация
— базовая фильтрация трафика и проотиводействие DDOS
— возможность безопасного деплоймента
— и т.п.

все что идет с веб-сервером из коробки, какой смысл пытаться пилить это все на коленке?

К слову, если бы MS не были слоупоками и выпустили .NET Core на несколько лет раньше обещанного, и кто-то выставил бы его наружу 433-м портом, то он бы пал жертвой Heartbleed, можно было бы не только хакнуть reverse proxy, но и сам Core процесс со всеми ништяками внутри.

само собой, что никто тут не собирается взять c# и высунуть его голой жопой во внешний мир. некоторые функции на себя может взять пусть тот же nginx etc.
вот я и интересуюсь, а вдруг есть что-то достаточно стабильное и более-менее известное.

Можно взять любой из списка
docs.microsoft.com/...​s/aspnet/core/publishing
* Apache
* Nginx
* Azure(или любой другой клауд с докером)

коре принятно прятать за нгинкосм на амазоне, ежели ты изволил вступить в линукс — выгребай по полной

Сервит статитику? Это уже точно не будет серьезной приложение, раз такой херней занимаются

А как же смарт серверы, когда для IE11 сервят ES5, для современных браузеров ES6, PWA, PRPL и все такое?

Давно уже все компилят в универсальный кросс-браузерный код. А разгадка одна — статику надо отдавать из CDN, а не из .NET серверов.

Давно уже все компилят в универсальный кросс-браузерный код.

Приобщитесь к прекрасному: www.youtube.com/watch?v=aCMbSyngXB4

А разгадка одна — статику надо отдавать из CDN

Одно другому не мешает

а не из .NET серверов.

Сервер — это не только .NET

а что .Net Core?
в нем те же asp.net web api и asp.net mvc.

asp.net web api и asp.net mvc

вы так говорите будто это что-то плохое

я так говорю будто я спрашиваю о том, используют ли .net кроме asp* и iis для веба более-менее массово.

Вцелом майкрософтовская веб индустрия сидит на ASP.NET/ASP.NET MVC, все поголовно хостятся на IIS, так как это охуенный веб-сервер.

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

да я больше в целях саморазвития интересуюсь.
.net у меня как хобби:)

если .нет хобби, то я даже боюсь предположить что у вас является основной работой

в основном php.
запрыгивать на .net на работу у меня нет сейчас ни сил ни мотивации, да и даже если я доучу нормально, то тот уровень зп, который у меня сейчас на удаленке на php мне на .net прям сразу даже в офисе вряд ли кто даст. и спустя пол года тоже. что уж говорить о удаленке.
поэтому на php я «мучаюсь» на работе, а на .net душой отдыхаю в свободное время, когда пишу всякие мелочи для себя.
да и вообще, надо сначала наверстать упущенное за последние 1.5 — 2года в html+css и доучить какие-нибудь ангуляры.

хотя .net core потыкаю обязательно, как только добавят для ubuntu zesty. может зацепит.

в основном php.

на удаленке на php

вордпресс-джумла или что-то нормальное? Знаешь чем адаптер от фасада отличается? Адаптер от декоратора?

сначала наверстать упущенное за последние 1.5 — 2года в html+css и доучить какие-нибудь ангуляры.

Если ты ближе к фронту, то в .нет не лезь. Как и в джаву.

хотя .net core потыкаю обязательно, как только добавят для ubuntu zesty. может зацепит.

Забей.

вордпресс-джумла или что-то нормальное?

есть вещи хуже, чем вордпресс-джумла) и ими я тоже занимаюсь.
cms тоже попадаются. yii/yii2 тож есть, например. в общем много чего.
на будущее посматриваю на symfony3/laravel, но пока не могу выбрать.
симфони3 мало где встречается, ларавель при первом приближении не очень понравился.

Знаешь чем адаптер от фасада отличается? Адаптер от декоратора?

если вкратце то нет, но активно использую все три:D
а посмотреть на вики, классифицировать и снова забыть это 3 минуты.
я не пишу (пока что?) на symfony/laravel, где это принято называть своими именами.

Если ты ближе к фронту, то в .нет не лезь. Как и в джаву.

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

Забей.

не, я два года не хотел связываться с mono, но хотел увидеть .net на никсах.
жаль что про .net core только месяц как услышал. может на впске потестирую, если станет лень ждать до релиза под zesty.

yii/yii2

symfony3/laravel

мне одинаково нравится и то и то,

Вкачал бы свои пхп фреймвёрки и не заморачивался с .нет. Добавь себе в список фронт-енд фреймверк типа ангуляра 4 и основы ноды, через годик будешь фуллстакером.

Что разве проще выучить ангуляры, ноду, и симфони+ларавел+уии, чем один .net MVC?

ангуляры, ноду, и симфони+ларавел+уии

На выходе цельный девелопер который гармонично развивался и смог постичь весь стек технологий необходимый для построения большенства приложений. Респект таким парням!

один .net MVC

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

Не совсем, .net core всегда работает в консольном процессе приложении, а iis использует только как reverse proxy — т. е. От iis он зависит аж никак. В отличии от asp.net Mvc — которая была надстройкой над iis.

о, это интересно, спасибо.
обязательно покопаюсь на досуге.

Какие-то аноны утверждали, что классический ASP.NET MVC тоже может работать без IIS. Проверять это я, конечно, не буду.

Может и работает. И MVC и Web Api. Гуглить „Owin Self Hosting”

Работает только Web Api. Mvc не работает в селфхотест.

Owin — это спецификация для обьектной модели сервера. Self Host — это модель котейнера приложения для веб сервера. Для Mvc можно поставить надстройку, которая трансформирует контексты, но это только адаптер, селф хостом ваше приложение не станет от этого без IIS работать не будет.

А как же Kestrel. Или речь не про core?
github.com/aspnet/KestrelHttpServer

OWIN — это для Full Framework и на нем работают только WebApi и SignalR stackoverflow.com/...​-in-simple-words-and-uses.

Не те же, выше я ответил почему.

на самом деле под капотом MVC Core все другое и новое, .NET Core у меня отлично живет на убунте + reverse proxy nginx, адски быстрая связка. Можно и без reverse proxy, но встроенный kestrel пока не умеет SSL и компрессию из-коробки.

А можете рассказать подетальнее обо всём этом хозяйстве и поделиться опытом настройки/использования?
«На ДОУ не хватает технических статей» © и всё такое.

.NET Core у меня отлично живет на убунте + reverse proxy nginx

да, мне тоже интересно, чем оно так адски быстро, если есть еще порядка сотни других комбинаций веб-сервер\база\json-сериализатор, которым оно уступает(если верить tech-empower)

если честно, графоманить лень :) до этого 15 лет деплоил только под Windows/IIS, но вспомнилось что и как в линухе довольно быстро — к счастью сейчас с deb-пакетами нет необходимости все компилить самому. Пройтись по всем граблям в первый раз от старта инстанса на амазоне до «все заработало» ушло часов 6-8, 2-й раз конечно все было бы быстро при наличии готовых конфигов. В основном на грабли наступал с nginx настроить на несколько неткоре аппов, у меня там трошки микросервисы имеются. Все мануалы в инете есть, добавить особо нечего. SSL от letsencrypt тоже подхватился без осечек.

Перфоманс отличный (относительно IIS/MVC5 как минимум), даже на маленьком T2 micro (1гб рамы) все очень шустро и куча свободной памяти. Оверхед вызова вебапишки одной неткоре аппы из другой очень маленький (пока на одной машине), порядка нескольких ms.
Кстати, есть же паблик аккаунт для данных по зарплатам ДОУ (включая май 2017), потыцать можно тут: devua.seektable.com (сервак в us-west, поэтому минимальный пинг около 200мс для нас)

В MVC Core 2 / .NET Core 2 обещают все еще круче, если что =) хотя меня и сейчас все устраивает. Синтетические тесты и писькомеры меня мало интересуют, имхо важнее как оно в реальных кейзах себя ведет.

c какими проблемами сталкивались, как решали?

выход из vim )))

да особых проблем не было, все разрабатывается, тестится и собирается на винде. Из неприятного все так же «\» при работе с файлами, ну это было и в Mono. А да был один странный баг с in-memory cache — экспайрилось мгновенно (под виндой конечно все было ок), пофиксалось использованием другого оверлоада SetAbsoluteExpiration.

В общем, netcore 1.1 вполне себе стабильный, все логично организовано и без явных косяков.

это хорошо что у кого-то все работает более менее, но по моему опыту я бы сказал все же не стоит переоценивать его стабильность — где на текущий момент через день сталкиваешся с проблемами во время разработки — то неправильно работающего msbuild на .net sdk, то урезанного api EF, то разбираешся с последствиями изменения поведение стандартных компонентов mvc, которые иногда делают это с выходом новой минорной версии. все это отнимает время.

теперь это новая реальность в дотнет ) как с этим жить свое видение МС изложила (LTS и вот это все), в принцпе все логично. Хочешь стабильности — используешь только LTS, хочешь самые свежие плюшки — бежишь за паровозом и current релизами, и да таки сталкиваешься с последствиями прогресса.

В любом случае, раз в 3 года «большой апгрейд» неизбежен, и это тоже нормально (вспомним что было с WebForms — веб изменился, а технология из за обратной совместимости застряла в 2000х). Эти неудобства — мелочи по сравнению с застреванием в легаси без возможности инкрементальных апгрейдов, когда в какой-то момент единственный выход — переписывать большую часть с нуля. Очень не рекомендую начинать что-то новое сейчас на MVC5/NetFramework, будет большая боль, и довольно скоро.

Про EF Core ничего не скажу, я его не использую, и конкретно в этой штуковине он вообще не нужен. Вообще предпочитаю избегать ORM типа EF/NHibernate если есть возможность, меня устраивает SQL + micro-ORM.

Підписатись на коментарі