воскресенье, 10 июня 2012 г.

А давайте напишем план

Итак, блог создан - пол дела сделано. Но пока еще неизвестно даже примерно, что будет в этом блоге.
Осмелюсь на первое время взять план из одной компании. Это, конечно, не мое мнение, а мнение людей из .Net отдела "компании" (этика не позволяет мне назвать ее), но я считаюсь с этим мнением. Кстати, примеры и другие материалы с использованием кода буду приводить на языке C#.
  1. Чёткое понимание ООП, ООА и шаблонов проектирования. Поскольку все языки программирования, применяемые в разработках на .NET Framework являются объектно-ориентированными, каждый .NET разработчик должен иметь ясное представление о принципах объектно-ориентированного программирования и анализа, а также уметь применять их на практике с учѐтом возможностей языков .NET.
    • Понимание основополагающих принципов ООП: абстракции, наследования, инкапсуляции и полиморфизма. Умение использовать эти принципы в языках программирования .NET
    • Умение применять объектно-ориентированный анализ при проектировании частей приложений, и, как следствие, умение писать максимально эффективный ОО код
    • Умение разрабатывать приложения с применением шаблонов проектирования
  2. Понимание принципов работы CLR и .NET Framework. Все .NET приложения выполняются под управлением общеязыковой среды выполнения (CLR – Common Language Runtime). Понимание основных принципов работы CLR и .NET Framework имеет большое значение при разработке .NET приложений.
    • Архитектура .NET Framework
    • Работа со сборками
    • Работа с типами и управление ими
    • Понимание процесса сбора мусора и работы сборщика мусора (GC – Garbage Collector)
    • Назначение доменов приложений
    • Умение работать с отражениями (reflection)
  3. Умение программировать на C#. Основным языком разработки приложений на .NET Framework является C#. По этой причине .NET разработчик должен хорошо владеть приѐмами программирования на C#.
    • Умение проектировать классы и структуры, а также умение работать с объектами
    • Умение работать с коллекциями
    • Основы многопоточного программирования
    • Умение работать с делегатами
    • Работа с отражениями
    • Работа с сериализацией и сериализуемыми объектами
    • Применение модели освобождения ресурсов
    • Базовое представление о возможностях C# 2.0: generic-типы, nullable-типы, итераторы, анонимные методы
    • Базовые знания о Framework 3.5: automatic properties, object initializes, anonymous types, extension methods, lambdas, partial methods and LINQ (Language Integrated Query)
  4. Работа с базами данных с применением существующей ORM системы. В данный момент существует достаточно большое количество подобных систем, которые облегчают процесс разработки приложений при работе с базами данных. Это такие системы как: NHibernate, Entity framework и Linq to SQL.
    • Работа с соединением и подключение к проекту
    • Разработка маппингов
    • Работа со связанными сущностями
    • Построение простейших и «кастомных» запросов к БД, используя встроенные возможности системы
    • Выполнение CRUD операций
    • Умение работать с хранимыми процедурами
  5. Разработка Web-приложений на ASP.NET. Благодаря ASP.NET разработка Web-приложений превратилась из рутинного программирования в творческий процесс. Умение работать с ASP.NET позволяет создавать Internet-приложения за рекордные сроки. 
    • Работа с Web-формами
    • Понимание жизненного цикла страниц ASP.NET
    • Серверные элементы управления
    • Работа с объектами Session, Cache, Application, ViewState, Cookies
    • Работа с классом ASP.NET-приложения – Global.asax
    • Конфигурирование приложений ASP.NET, файл web.config
    • Объекты отображения данных: GridView, DataList, Repeater
    • Работа с веб-сервисами
    • Обязательное знание трёхуровневой архитектуры проектирования
    • Работа с JavaScript (работа с DOM, асинхронное взаимодействие с сервером)
    • Работа с CSS (оформление страницы, размещение элементов)
  6. Разработка Web-приложений на ASP.NET MVC. ASP.NET MVC является свободным, полностью поддерживаемым Microsoft продуктом, который позволяет разработчикам легко создавать большие веб-приложения. Он обеспечивает полный контроль над вашим HTML и URLs, дает богатые возможности интеграции AJAX, а также облегчает Test Driven Development.
    • Понимание паттерна model-view-controller
    • Понимание процесса выполнения приложения
    • Работа с ASP.NET MVC Routing
    • Работа с Controllers и Actions
    • Работа с представлениями (умение разрабатывать различные представления на основе готовых решений и создание собственных)
    • Работа с моделью приложения на основе существующей ORM
    • Работа с ASP.NET MVC Validation
    • Работа с Master Page
    • Работа с кэшем
    • Работа с разными способами аутентификации пользователей
  7. Тестирование приложений. Умение автоматически тестировать собственные приложения является важным аспектом разработки программ и повышает уровень кода, а также качество продукта в целом. Юнит тестирование позволяет программисту не только проводить рефакторинг кода, будучи уверенным, что модуль по прежнему работает корректно, но и изолировать отдельные части программы и показать, что по отдельности они работоспособны. Правильно написанные тесты могут выступать в качестве документации, глядя на которую, легко можно понять требования к тестируемой системе.
    • Понимание разработки в стиле TDD
    • Работа с NUnit framework
    • Понимание “Fake” объектов и умение их применять
На первое время этого небольшого плана хватит ;) Честно сказать, я сам в некоторых темах плаваю, но будем разбираться вместе.
Если у кого есть предложение по изменению, дополнению плана - выслушаю ваши предложения. Контакты приведены в профиле.

Зачем этот блог?

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

Цель данного сайта очень проста. Я хочу сам разобраться, и показать многим, кто не знает, в темах, которые нужны для программирования на технологии .Net. Да, у меня нет почти опыта. Да, я, в большинстве своем, самоучка. Но надеюсь, что данные статьи помогут и вам и мне разобраться в том, а что же нужно знать, чтобы успешно программировать и, возможно, работать в данной области.
Скажу честно. Так как я сам не "гуру-программист", а всего лишь Junior Developer, я знаю не очень много. Поэтому приемлю любую критику и помощь (в пределах приличия, конечно).

Спасибо за внимание. И спасибо, что зашли на мой блог.

С уважением, Александр Шевцов.