Должен ли я использовать рамки при изучении веб-разработки - PullRequest
17 голосов
/ 27 июня 2009

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

Ответы [ 7 ]

7 голосов
/ 27 июня 2009

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

Я предлагаю вам сначала потратить время на изучение вашего языка. Я бы посоветовал изучать C # просто потому, что он гораздо более востребован и обычно поддерживается напрямую в большинстве продуктов MS. Изучая C # - программирование в ASP.NET, консольные приложения, серверы, службы, приложения для настольных компьютеров и т. Д. Будут в пределах вашей досягаемости. Вы можете программировать для большинства продуктов MS, а также на многих платформах типа Linux.

Как только вы это отключите, вы можете перейти к программированию для Интернета, поскольку программирование для Интернета имеет некоторые тонкости, которых нет в большинстве других сред. Такие понятия, как сеансы, кэширование, управление состоянием, межсайтовый скриптинг, стилизация, программирование на стороне клиента и на стороне сервера, поддержка браузера, как работает HTTP, как получить сообщение, как работает форма, файлы cookie и т. Д., Находятся на вершине список вещей, которые нужно изучать отдельно, не говоря уже об изучении базовых платформ ASP.NET и пространств имен.

Как только вы освоите язык программирования, а затем концепции веб-программирования, я предлагаю вам остановиться и изучить проектирование базы данных. Пока не беспокойтесь о производительности ... попробуйте сначала изучить хороший дизайн. Производительность будет дальше. Хорошее начало для вас - Access (богохульство, я знаю). С новичком легко работать. И это легко переводится на более надежную платформу, такую ​​как SQL Server. Выучите хотя бы немного SQL ... но я предлагаю вам выучить столько, сколько может выдержать ваш желудок. Я слышал, как кто-то сказал, что SQL подобен языку ассемблера базы данных. Первое, что замедляет работу приложения, - это плохая конструкция базы данных и плохие запросы. Как только у вас появятся эти знания, набросайте их себе на ум и посмотрите на хороший ORM. NHybernate, вероятно, лучший на данный момент, но более сложный, чем базовый ученик. По этой причине в настоящее время я предлагаю запустить LINQ to SQL, так как с ним СУПЕР ЛЕГКО работать. Затем посмотрите на Entity Framework (хотя я все еще думаю, что это отстой ... и вам следует подождать, пока EF 2.0 ... ERRRRR ... сейчас 4.0 выпущен с .net 4.0). Тогда NHybernate.

Теперь пришло время начать понимать инфраструктуру, которая требуется для веб-разработки. Вы можете столкнуться с этим, изучая некоторые вещи веб-программирования. Но вы должны понимать основы DNS, IIS, балансировщиков нагрузки, липкой маршрутизации, циклического перебора, кластеризации, отказоустойчивости, настройки аппаратного обеспечения сервера, веб-ферм, ферм кеша (MemCached Win32, Velocity), SMTP, MSMQ, организации почтовой очереди базы данных, и т.д. Многие люди могут сказать, что вам это не нужно. Что здесь будет какой-то знающий сетевой администратор, который поможет вам. Однако они обычно знают вещи, которые влияют на них ... не вы. Чем больше вы здесь знаете, тем более ценным вы будете для компании, которая вас нанимает.

Теперь вы можете познакомиться с деталями лучших практик и шаблонов проектирования. Узнайте об основах, таких как шаблон репозитория, шаблон фабрики, шаблон фасада, шаблон презентатора вида модели, шаблон контроллера вида модели, шаблон наблюдателя и многое другое. Следуйте за Мартином Фаулером и другими за предложениями здесь. Взгляните на такие понятия, как инверсия управления, внедрение зависимостей, принцип SOLID, DRY, FIT, проектирование с тестированием, проектирование с учетом предметной области и т. Д. Узнайте как можно больше здесь, прежде чем переходить к следующему шагу.

СЕЙЧАС вы можете думать о фреймворках! Начните с создания базового приложения с ASP Classic (поставляется с IIS бесплатно!). Это даст вам представление о среде веб-разработки без излишеств. Взгляните на веб-формы ASP.NET (кратко), чтобы увидеть, как MS пыталась упростить ситуацию, скрывая все сложные вещи (которыми вы теперь знаете, как самостоятельно управлять, читая вышеупомянутые материалы !!!). Теперь вам больше не нужны веб-формы ASP.NET. Перейдите сразу к ASP.NET MVC. Фреймворк MVC дает вам все возможности, необходимые для создания хорошего легко управляемого веб-приложения. Если вы создаете что-то действительно большое, никакой фреймворк для чистой веб-разработки не сможет справиться с тем, что вам нужно. Однако MVC гораздо более расширяем для таких пользовательских сценариев UBER.

Теперь, когда вы прошли путь к ASP.NET MVC, вы можете взглянуть на такие вещи, как блоки корпоративных приложений Microsoft (например, на MySpace). Взгляните на Elmah протоколирование ошибок (обязательно). Посмотрите, как создать пользовательский SiteMapProvider для вашего сайта MVC. Если вам нужно заняться поиском, поймите Lucene.NET .

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

3 голосов
/ 27 июня 2009

Не думаю, что я согласен с Эндрю. Я не думаю, что изучение C является необходимым условием для веб-разработки. На самом деле, изучение чего-то вроде Javascript, Action-script или PHP часто проще из-за огромного количества доступных сайтов и учебных пособий, и этого достаточно, чтобы познакомить вас с основами практически любого языка программирования. Переменная, условия, циклы и ООП. Я просто думаю, что изучение C # вводит много обучения, которое на самом деле не имеет отношения к веб-разработке, такое как указатели и управление памятью.

Что касается того, стоит ли изучать рамки в первую очередь? Точно нет. Никогда Вы должны быть в состоянии встать на ноги и научиться работать с HTML / CSS, серверными сценариями (PHP / ASP / Python / Ruby и т. Д.) И любить их или ненавидеть, но вам придется иметь приличное понимание Flash и Action-скрипта.

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

Начните с HTML. Требуется приблизительно полчаса, чтобы получить основы (они состоят из тегов с атрибутами, конец урока 1), и хорошо сначала убрать это с пути.

Тогда начните использовать CSS. Вы получите основы снова, очень быстро. Но CSS - это минное поле, так что рассчитывайте потратить остаток своей жизни на то, чтобы понять это.

Next-up Action-скрипт. Большинство людей не согласятся со мной, но потерпите меня. HTML и CSS не являются языками программирования. Action-скрипт есть. И изучение языка программирования в первый раз сложно и утомительно. Преимущество Action-script перед большинством других языков в том, что результаты очень наглядны. С ним приятно работать, и вы можете спокойно сидеть и гордиться своими достижениями через равные промежутки времени. Это невозможно при использовании скриптовых языков на стороне сервера или Javascript, и есть целый ряд вещей, которые необходимо изучить, чтобы запустить скрипты на стороне сервера. Например, вы не можете создавать космические захватчики с помощью PHP.

Я изменил свое мышление здесь. Я бы посоветовал начинающим игнорировать ActionScript и сосредоточиться на Javascript. Я все еще верю, что возможность быстро увидеть материал на экране - хороший мотиватор, но я бы посоветовал людям взглянуть на учебные пособия и основы для тегов холста. Javascript прошел долгий путь с 2009 года и теперь является языком программирования, поэтому он невероятно полезен. Моя начальная точка зрения о том, что HTML и CSS не являются языками программирования, остается в силе.

Затем вы можете начать с языка на стороне сервера. В то же время вам придется разбираться с базой данных. Я рекомендую PHP и MySQL, потому что это бесплатно.

Опять же, я изменил свое мышление здесь. Я бы посоветовал новичкам использовать Javascript в бэкэнде (Node.js) и распределить обучение по базам данных между реляционными базами данных и решениями noSql, такими как Mongo.

Тогда .... изучите свои рамки. Или еще лучше, сверните свое собственное. Это то, что я делаю, и это перегружает мое обучение.

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

3 голосов
/ 27 июня 2009

Вы будете использовать НЕКОТОРЫЕ фреймворки. Вопрос в том, на каком уровне вы хотите учиться?

Вероятно, вам не захочется узнавать об асинхронном вводе-выводе и многопоточных стилях и стилях выбора / опроса веб-серверов.

Итак, ваш язык выбора предоставит слой поверх этого, предпочтительного языка API "веб-интерфейс". Для Java это сервлеты, самый низкий уровень, который вы обычно кодируете для серверных веб-приложений.

Вы должны найти, что это за слой "нижнего уровня" на вашем языке и, по крайней мере, изучить API. Вы должны знать основные HTTP, такие как коды состояния, файлы cookie, перенаправления, POST против GET, кодирование URL и, возможно, что делают некоторые из наиболее важных заголовков.

Затем вы поймете, что эти высокоуровневые фреймворки привнесут в таблицу, и сможете лучше оценить, какой уровень абстракции соответствует вашим потребностям / проекту.

3 голосов
/ 27 июня 2009

Веб-разработка требует определенной степени организации, поскольку она в значительной степени зависит от разделения интересов. Браузер, например, предназначен для отображения данных и взаимодействия с пользователем. Он не предназначен для поиска данных из базы данных или проведения анализа. Следовательно, среда веб-разработки может помочь в предоставлении услуг, необходимых для практического использования браузера.

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

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

Все это говорит о том, что вам понадобятся некоторые фундаментальные навыки для полной реализации веб-разработки, такие как HTML, CSS и основной язык программирования для конкретной базовой программы, используете ли вы платформу или нет.

1 голос
/ 27 июня 2009

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

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

0 голосов
/ 06 марта 2014

FWIW: Этот более общий ответ может пригодиться кому-то там.

Что: Фреймворки устали от использования кода котельной плиты снова и снова. Они скрывают сложность и проблемы дизайна под волшебниками и соглашениями. Они также используют специальные библиотеки, шаблоны проектирования и т. Д., Которые далеко не очевидны для начинающих.

Таким образом, использование фреймворка полезно для достижения цели, не зная точно, как - например, используя банкомат, не зная внутренних органов. Вы просто добавляете свои биты кода в определенные места, и все «просто работает».

HTML> CSS> Ruby> SQL> Rails / Javascript Framework> Библиотеки - хороший путь обучения. Отдыхайте вы учитесь, любуясь любопытством, тусуясь на форумах или продвигаясь по мере необходимости.

КАК: Проблема начинается с той минуты, когда вы выходите за рамки простых примеров из учебников (т. Е. Когда вы пытаетесь заставить его сделать что-то даже немного другое).

Расшифровка загадочных сообщений об ошибках, когда кажется, что вы все сделали правильно, но все равно не работает. Поиск по ошибочным строкам на форумах может помочь. Или просто перезапустить с нуля.

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

Работа против фреймворка - проблема номер один для начинающих. Понимание того, что ожидает структура, является ключом к тому, чтобы избежать седых волос на этом этапе. Достаточное понимание того, что нужно делать вручную, то, что автоматизирует фреймворк, может помочь сократить усилия по повторению

ПОЧЕМУ: Для более продвинутой отладки / проектирования полезно знать, что делает фреймворк под капотом esp. когда все работает не так, как вы планировали. Сначала вы можете воспользоваться помощью местных гуру или форумных гуру, которые уже проделали тяжелую работу. Позже, когда вы пойдете глубже, вы сможете взять на себя больше этой роли. Например, есть книга о «восстановлении рельсов», которая выглядит под капотом Ruby on Rails.

Примечание: некоторые советы ориентированы на Ruby / Rails, но вместо этого вы можете легко заменить ваш любимый язык / фреймворк.

0 голосов
/ 27 июня 2009

Краткая версия: да, а потом и немного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...