Я новичок в .NET - на чем мне сосредоточиться, а на что игнорировать?

Итак, у меня есть достаточный опыт программирования веб-приложений, управляемых базами данных, с использованием php и coldfusion (не вместе, в разное время), и я начинаю изучать мир asp.net (у меня на работе готовится проект это все asp.net/c#.)

У меня вопрос: кажется, есть много вещей, в которых можно увязнуть, и если я просто создаю веб-приложения (в основном, типа CRUD - без умопомрачительной логики), какие темы, на которых я должен сосредоточиться? Я просто не хочу идти по кроличьему следу чего-то, чтобы позже узнать, что это на самом деле не слишком широко используется сообществом разработчиков. Читая некоторые книги (шаг за шагом ASP.net 3.5 и развязанный ASP.net 3.5), я нахожу место, где будет объяснена тема, но в конце главы он скажет, что это круто, но не для использования в многоуровневых приложениях ...

Темы, которые я рассмотрел до сих пор (которые, похоже, сильно отличаются от приложений, которые я привык создавать):

  • Мастер-страницы
  • DataBinding
  • Linq в SQL
  • ASP.NET MVC
  • Шаблоны и выражения привязки данных
  • asp.net элементы управления

person Community    schedule 23.12.2008    source источник


Ответы (8)


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

Чтобы начать работу с приложением WebForms, вы должны понимать жизненный цикл страницы и жизненный цикл приложения. Это ваш главный приоритет. Модель, используемая ASP.NET, основана на программировании на основе форм Windows, и это влияет на то, как вы думаете обо всем процессе создания программного обеспечения. Теперь я предполагаю, что вы будете создавать приложение WebForms, потому что технология WebForms (в ASP.NET) более зрелая, имеет лучшую стороннюю поддержку и гораздо больше документации. Если вы склонны к MVC, то просто имейте в виду, что хороший дизайн будет либо тем, либо другим - MVC не является частью WebForms, это альтернатива ему.

Далее у вас есть несколько решений. Будете ли вы использовать стандартные инструменты доступа к данным (например, SQLClient), развертывать собственный уровень доступа к данным (или использовать DAL) или использовать linq to SQL? Я говорю «решения», потому что все в команде должны будут вместе работать над этим. Я настоятельно рекомендую создать DAL, так как вы можете оптимизировать его для своих нужд. Linq тоже хорош, но на горизонте есть несколько зловещих облаков . Согласуйте, решите и оставайтесь с ним.

Хотя это и не обязательно, вам следует серьезно подумать о создании бизнес-логики в отдельной библиотеке классов (DLL). Visual Studio / ASP.NET упрощает создание собственной библиотеки классов и включение ее в ваше решение. Узнайте, как это сделать, и вы станете лучшим разработчиком на долгие годы. Люди обычно аргументируют это тем, что это изолирует ваш пользовательский интерфейс от доступа к данным. Хотя это правда, но на самом деле это не преимущество - преимущество приходит в будущем, когда вы будете готовы учиться и проводить модульное тестирование. Просто начните с предположения, что вы отделите пользовательский интерфейс от логики и будете благодарить меня в будущем.

На этом этапе вы можете (A) создавать веб-страницы и (B) показывать на них динамический контент на основе базы данных. Убедитесь, что вы освоили GridView и объекты ObjectDataSource, используемые для их заполнения. Примечание. ObjectDataSource - это то, что передает данные из библиотеки бизнес-класса в пользовательский интерфейс. Если вы не используете бизнес-уровень, вы будете использовать объекты SQLDataSource или LinqDataSource для доступа к своим данным непосредственно из пользовательского интерфейса.

Не останавливайтесь пока на своей архитектуре!

Теперь вам нужно решить, хотите ли вы использовать компоненты Microsoft WebParts, Login и Navigation. Они привязывают вас к определенному подходу к навигации по сайту, пользовательскому интерфейсу и т. Д., Но при необходимости могут сэкономить массу времени.

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

Наконец, каждый профессиональный разработчик ASP.NET должен создать свой собственный класс Page (например, «MyPageClass»), чтобы они могли инкапсулировать общие действия на уровне страницы. Например, я создал объект управления сеансом, чтобы я мог получить доступ ко всем часто используемым переменным сеанса безопасным для типов способом. Производный класс страницы отвечает за предоставление экземпляра sessionObj, чтобы каждая страница могла получить к нему доступ без какой-либо дополнительной работы.

Теперь вы готовы приступить к созданию веб-приложения корпоративного класса!

person Mark Brittingham    schedule 23.12.2008
comment
хорошая запись ... хотя я скажу, что ваш последний пункт менее важен, чем ASP.NET 1.0 - person alex; 17.01.2009
comment
Алекс - почему вы говорите, что создание класса страницы менее важно? Мне любопытно! - person Mark Brittingham; 17.01.2009
comment
Я думаю, что главные страницы сделали большую часть функциональности, полученной за счет создания класса базовой страницы, излишним. Но это всего лишь мои 2 цента! - person alex; 17.01.2009
comment
Алекс - не согласен. Смысл наследования от класса базовой страницы заключается в том, что вы можете обращаться к переменным и служебным методам, как если бы они были частью вашего класса. Чтобы получить доступ к переменным / методам на главной странице, вам необходимо разместить директиву на своей странице ASPX, а затем ссылаться на мастер через переменную. - person Mark Brittingham; 26.03.2009
comment
Главные страницы просто разные - отличные - но разные и с другой ролью, чем класс базовой страницы. - person Mark Brittingham; 26.03.2009

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

person Gene Roberts    schedule 23.12.2008
comment
Я полностью согласен. создать реальное приложение, которое сделает то, что вам нужно. не только стандартное приложение-образец. Затем вы сталкиваетесь с областями, которые вам действительно нужно изучить. - person Blounty; 23.12.2008
comment
Это лучший совет. - person Robert S.; 23.12.2008
comment
Я согласен с мнением, но есть несколько пунктов, которые вы должны решить заранее (уровень доступа к данным, использование MS WebParts, использование MVC и т. Д.). Я рассказал о них в своем ответе ниже. - person Mark Brittingham; 23.12.2008

Я бы сказал, что ваш список - неплохое начало. Кроме того, если вы в основном создаете приложения с прямым подключением к таблицам, я бы посмотрел на примеры приложений «Динамические данные» в VS2008 SP1, которые используют REST. Я бы предпочел держаться подальше от модели WebForms и использовать ASP.Net MVC. Это лучше для тестирования и четко отделяет бизнес-логику от пользовательского интерфейса. Кроме того, Linq-to-Sql - очень мощный инструмент, если вы знаете его ограничения.

Я бы начал с создания образца с использованием ASP.Net MVC и linq-to-sql, чтобы намочить ноги. Начать работу довольно легко, и не нужно много времени, чтобы изучить основы, которые сделают ее полезной.

Лучший способ научиться - это делать.

Что касается «Что я должен игнорировать?»: .Net Remoting и веб-службы. Он был заменен гораздо более мощным фреймворком под названием WCF.

person Micah    schedule 23.12.2008
comment
Игнорирование удаленного взаимодействия .NET в пользу WCF? - person biozinc; 23.12.2008

Одна из вещей, которую вы не должны забывать проверить, особенно если вы собираетесь разрабатывать веб-приложение, - это то, что вы должны знать жизненный цикл веб-формы, а также вам необходимо знать, как работает серверная часть, как клиентская сторона работает. Затем вы можете просмотреть главные страницы, чтобы иметь общий вид, поведение и поведение для вашего сайта, элементы управления asp .net, пользовательские элементы управления и т. Д. Обобщенные, анонимные методы, uff есть гораздо больше, чтобы узнать, на самом деле я пытаюсь научиться что-то новое о C # каждый раз, когда у меня есть свободное время ... и многое другое ... :)

Удачи!!

person Eduardo Crimi    schedule 23.12.2008
comment
вы должны знать жизненный цикл веб-формы, если вы не используете MVC. Фактически, большое преимущество MVC в том, что вам не нужно знать всю эту ерунду. - person Anthony; 17.01.2009

  1. Сначала изучите C #
  2. Выберите объектно-ориентированный подход CRUD: варианты: Entity Framework (предлагаемый Microsoft выбор), Linq2SQL, Nhibernate (мое личное предложение).
  3. Объекты ASP.Net MVC + Nunit + JQuery + JSon.
    Я бы также посмотрел на WCF, поскольку он становится все более и более важным.

Две хорошие отправные точки для общей архитектуры веб-приложений и начального проекта:

person Ronnie    schedule 23.12.2008

Я бы сначала начал с основ. В ASP.NET 2.0 и 3.5 есть много мощных элементов управления и «виджетов», особенно с элементами управления AJAX, но мне было сложно попытаться отсортировать все из них, не имея предварительного понимания, как вы сказали: базовые веб-страницы CRUD »в ASP.NET - это то, к чему в любом случае сводятся большинство реальных проектов.

Большинство проблем и сложных для отслеживания ошибок, с которыми мне приходилось иметь дело в веб-программировании .NET, сводились к тому, что я не полностью понимал основы ASP.NET, такие как PostBack, ViewState, Refresh и привязка данных ASP.NET (базовая ручная кодировка метод, а не причудливую сетку без кода в 2.0) - как только вы поймете это, главные страницы, темы и материалы AJAX довольно просты.

Я бы порекомендовал Wrox Press ASP.NET 2.0 или Professional C # 2008

person LoveMeSomeCode    schedule 23.12.2008
comment
Замечательный момент - я думаю, что самое тяжелое время, которое я испытываю, связано с идеей Viewstate - это совершенно непохоже на все, что я когда-либо делал. Спасибо! - person onekidney; 23.12.2008

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

person Community    schedule 23.12.2008

Если ваши веб-сайты будут содержать очень много CRUD, обратите внимание на динамические данные.

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

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

ORM / SQL-инъекция / фильтрация ввода - это то, что вы также должны выучить наизусть.

Если вы использовали фреймворки MVC в прошлом, переходите к MS MVC, если нет, то вы можете подождать, пока вы не освоитесь с ними, прежде чем копаться.

person Community    schedule 17.01.2009