January 24, 2019

Бэкэнд на C# или как влиться в веб

Многие считают, что на таких языках как C, C++, C#, TurboPascal и т.д. нельзя заниматься серверным программированием как таковым. Однако это в корне не так, особенно на счет C#, который по своей сути является веб-версией C++.

Что такое веб-сайт?

Перед тем как вливаться в ряды веб-программистов сначала определимся с тем, во что всё-таки мы так старательно хотим влиться.

Веб-страничка - это HTML-документ, на каком-то сервере, передающийся на ваш браузер. Эти странички создаются фронтэнд языками - HTML, CSS (или LESS, если CSS почему-то не ваше) и JS.

Верстка веб-сайта - (не путать с верстки в печати страниц для журналов, именно из этого термина в печати и появился термин в вебе, так что не надо использовать InDesign для верстки сайтов!) это разработка веб-странички. Во время верстки верстальщик использует языки разметки и фронтенд языки программирования (О них подробнее далее) либо визуальные редакторы, но они всегда сильно урезаны по функционалу.

Верстальщик - профессия сейчас модная и востребованная, однако когда верстальщики говорят, что они программисты, то как-то жалко становится ;( (не считать JavaScript! Там немного по другому) Они не работают с методами, классами и прочими "сложными штучками" обычных программистов. Если и работают, (в JavaScript) то немного в другом формате.

HTML - это язык разметки (ML в конце это от англ. "Marking Language", который есть и в XAML) и они по сути не являются языками программирования. Так что сказать "Я программирую на HTML" нельзя, иначе вас посчитают за сбрендившего.

CSS - это таблица стилей (SS в конце это Style Sheet, как и у LESS) который задаёт страничке внешний вид. Он тоже не является ЯП-ом, но имеет более простой синтаксис, который, кстати, чем-то напоминает обычные ЯП-ы.

JavaScript - это уже ЯП. Он скриптовой и интерпретируемый. Он нужен для оживления страницы и добавления в нее элементов с взаимодействием с пользователем без необходимости постоянной и обязательной перезагрузки страницы. Однако после каждого обновления CSS становится всё более не нуждающейся в JavaScript, перенимая у него некоторые функции, что, конечно, улучшает удобство верстки сайта и освобождает разработчика от лишних хлопот с JS.

Какие есть виды веб-страничек?

Есть два вида веб-страниц - статические и динамические.

Статические веб-страницы - это страницы, которые вы заранее записываете и они такие, какими вы их написали, не более. Максимум CSS-файл изменится, и всё.

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

Что такое фронтэнд и бекэнд?

Так, с видами страничек разобрались, но что такое фронтэнд и бекэнд, о которых так много шума?

Фронтэнд - это всё, что связано с пользовательским интерфейсом (UI) и тем, что в итоге попадёт пользователю на экран.

Бекэнд или серверное программирование - это логика сайта. Особенно нужен для динамических сайтов. Это программа, стоящая на сервере и принимающая HTTP запросы у пользователей, обрабатывающая его, собирая все данные и отправляющая конечный ответ обратно пользователю.

Языки бекэнда:

  • PHP - самый популярный и легкий. Он "из коробки" умеет всё, что нужно сайту. Он самый простой и один из самых востребованных. Однако работая с ним вы собираете множество плохих привычек, которые считаются плохим тоном у других "нормальных" языков.
  • Python - второй по популярности, если не первый. Идеален, если вы его уже знаете. Надо всего-то научится работать с фреймворком. Отлично работает и быстро пишется. Шикарно подходит для научных вычислений, нейросетей и ИИ, однако для бекэнда очень часто используется.
  • JavaScript - да, он фронтэнд язык, но с помощью Node.js можно использовать его и для бекэнда. Синтаксис у него для всего кроме фронтэнда, конечно, ужасен, но кому нравится - сойдет. Плюс - не придется учить новый язык, если вы - верстальщик.
  • Java - благодаря фреймворкам и старости языка он стал одним из наиболее популярных для этой цели языков, но потом быстро упал. Сейчас далеко не актуален. Но если лень учить новый язык, а Java уже знаете - сойдет, пока, но лучше сразу учите новый, пока не поздно.
  • Ruby - фреймворк Ruby on Rails распахнул Ruby огромные просторы для бекэнда. Довольно популярен, научится можно, но на большое коммьюнити не надейтесь (хотя кто об этом говорит? Разраб на ASP.NET MVC!?!)
  • Go! (или Golang)- язык, разработанный Гуглом специально для серверного программирования. Все ожидали ему огромный рост популярности и становление самым главным языком для этого, но что-то не сраслось. По синтаксису он невероятно простой, это как С# без лишних деталей и ужасных исключений.
  • C# - Microsoft выделила много усилий ради этого фреймворка. В отличии от многих других фреймворков, ASP.NET сделан самими Microsoft, которые и создали язык, (или по крайней мере его поддерживают) что, конечно, добавляет ему очки надежности и хорошой совместимостью с самим языком.

Что такое C# ASP.NET MVC?

Мой канал о C#, так что ASP.NET.

ASP.NET в общем - это фреймворк, основанный на .NET Framework, специально созданный для создания веб-приложений.

ASP.NET MVC - это один из двух ветвей ASP.NET, на ровне с Веб-формами. (их не трогайте, фигня) MVC - это Model-View-Controller - популярная система работы веб-приложений.

Как учить C# ASP.NET MVC 5?

Из курсов могу посоветовать хороший видеокурс от ITVDN ASP.NET MVC 5. Уровень 1 и более менее курс от Byte++ ASP.NET MVC 5 и еще один без голоса, но я его потерял. Также есть новый курс от LoftBlog Веб-приложение на asp.net mvc core, первый урок которого вышел буквально 4 дня назад, буду следить.

Также есть отличное видео, которое расскажет вам насколько глубока тема веба и вообще слегка протолкнет тебя и подготовит к трудностям советую ВСЕМ. Что нужно знать, чтобы стать ASP.NET MVC разработчиком?


Делать ли мне продолжение о том, как работает бекэнд в целом и ASP.NET MVC с частности, а также о CMS?

Также подписывайтесь на мой Телеграмм канал, если не подписаны! Путь C# / Для новичков