Что такое Microsoft Net Framework и как его установить. Что такое фреймворк

У многих людей, не очень хорошо знакомых с темой возникает естественный вопрос, что же такой.Net Framework. В данной статье мы постараемся раскрыть тему максимально простыми словами.

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

Сделано это для того, чтобы разработчик мог максимально абстрагироваться от системного окружения на компьютере пользователя. Его не должно волновать, какая операционная система установлена, какая разрядность у процессора - 32-х или 64-битная, какая у него архитектура и т.д. Для запуска программы достаточно чтобы под данную систему существовала и была установлена реализация.Net Framework. Для операционных систем Windows разработкой платформы занимается её создатель, компания Microsoft. Существуют также независимые реализации, прежде всего это Mono и Portable.NET, позволяющие запускать программы.Net на других операционных системах, например на Linux.

Архитектура.Net Framework

Платформа состоит из двух частей. Основой является исполняющая среда Common Language Runtime (CLR), которая может выполнять как обычные программы, так и серверные приложения. Вторая, не менее важная часть, это библиотека классов Framework Class Library (FCL), содержащая в себе множество компонентов для работы с базами данных, сетью, вводом/выводом, файлами, пользовательским интерфейсом и т.д. Это позволяет разработчику не заниматься низкоуровневым программированием, а использовать уже готовые классы.

Важные части библиотеки классов

Windows Forms - отвечает за разработку графического интерфейса. Фактически является обёрткой над Win32 API.

ADO.NET - предоставляет доступ данным. В основном используется для работы с базами данных.

ASP.NET - технология разработки веб-сайтов, веб-приложений и веб-сервисов.

Language Integrated Query (LINQ) - реализация языка запросов, напоминающего по синтаксису SQL в программах на.Net.

Windows Presentation Foundation (WPF) - система создания графических интерфейсов, использующая язык разметки XAML. В отличие от Windows Forms использует графическую технологию DirectX, что обеспечивает более быструю работу за счет аппаратного ускорения графики.

Windows Communication Foundation (WCF) - система обмена данными между приложениями.Net. Используется для создания распределённых приложений.

Языки программирования.Net

Одной из основных идей, заложенной в.Net, является совместимость различных частей приложения, которые могут быть разработаны на разных языках. Например программа, написанная на C# может обратиться к методу из библиотеки, написанной на Visual Basic .NET, или класс на Managed C++ может быть унаследован от класса на Delphi .Net.

Языки, включённые в Visual Studio: C#, J# (последний раз в Visual Studio 2005), Visual Basic .NET, JScript .NET, C++/CLI, F# (Visual Studio 2010).

Также существуют независимые проекты, позволяющие разрабатывать программы под.Net Framework на других языках.

Надеемся что в данном материале мы ответили на вопрос, что же такое Microsoft .Net Framework, и для чего он нужен.

15 июня 2007 в 01:08

Framework"и только для разработчиков?…

  • Разработка веб-сайтов
  • Перевод

Сегодня слово «framework» стало обыденным в web dev"е. Как только jQuery и Prototype, Rails и Django получили широкое распространение, кажется, что теперь каждый использует какой-нибудь framework для создания своего сайта.
Но что же такое framework? Они полезны программистам, или даже веб дизайнеры могут воспользоваться их преимуществами?..

Что такое “framework”?

Итак, давайте договоримся - хотя бы на протяжении этой статьи - считать, что “framework” - это набор инструментов, библиотек, хорошего кода, который поможет превратить рутинные задачи в модули, которые можно использовать неоднократно. Задача framework"а - позволить дизайнеру или разработчику сфокусироваться на задачах, являющимися уникальными в рамках данного проекта. Иначе говоря, не изобретать колесо раз за разом. Вобщем, это подход, выбранный вышеуказанными web и JavaScript framework"ами.

Framework для дизайнеров

Возможно, и вы сможете извлечь выгоду от аналогичной абстракции CSS кода в течение дизайна вашего сайта. Те, кто по достоинству смогут оценить данных подход - это дизайнеры, работающие над несколькими подобными друг другу сайтами. К тому же, дизайнеры, работающие в команде, могут работать, используя один и тот же framework. Например, я работаю в газете, и все наши 20 с небольшим сайта имеют много общего. Из-за того, что это, в основном, новостные сайты, они по определению больше схоже, чем различны. Но даже дизайнер-одиночка, который работает над совершенно разными проектами, может найти элементы, которые можно внести в его основной framework.

В Lawrence Journal-World, где я работаю, мы недавно создали CSS framework и обнаружили, что он значительно увеличил нашу производительность. Конечно, для его создания потребовалось потратить несколько дней, но как только он был готов, скорость, с которой мы могли создавать качественные страницы, резко возросла. Более того, с тех пор, как мы начали использовать наш framework, каждый дизайнер мог что-то исправить в чужой работе, и им уже не требовалось 20 минут, что понять, почему что-то написано именно так. Они просто погружались в работу.

Что именно можно абстрагировать?

Как только вы начнете создавать свой CSS framework, вы должны найти те вещи, что вы используете раз за разом в каждом проекте. Вся суть в том, чтобы собрать все это в одно место, следуя методу «Не повторяй себя». Это делает поддержку значительно легче, а также вы сможете немного сэкономить на трафике.
Несколько вещей, которые я принимаю во внимание в каждом своем проекте, это:
  • Массовый сброс стандартных браузерных стилей. К примеру, установка margin и padding в 0 у всех элементов, отключение border’ов у frameset’ов и изображений, и т.д.
  • Создание примерного типа оформления: margin’ы у блочных элементов, таких, как параграфы, заголовки, списки, и т.д.
  • Создание простых стилей для форм.
  • Создание нескольких CSS-классов, которые я постоянно использую, к примеру, .hide (где я устанавливаю display:none) и.mute (где я устанавливаю меньший размер шрифта и, иногда, более светлый цвет).
Есть также несколько других интересных возможностей. Многие дизайнеры зачастую используют одинаковую разметку и стили для создания страницы. Почему бы не перенести это в CSS-файл и составить его так, чтобы его было удобно использовать на нескольких сайтах одновременно. Yahoo сделала нечто подобное в Yahoo User Interface grids component. Когда мы создавали наш framework для Journal-World, мы сначала смотрели на реализацию этого компонента у YUI. Позже мы решили, что это не то, что нам нужно, но это послужило хорошим примером для нас и вдохновило на создание нашей собственной реализации. Мы остановились на 16-и блочном дизайне, который является настолько гибким, что мы смоги его использовать на каждых наших сайтах, даже учитывая то, что каждый наш сайт внешне немного отличается от другого.

К тому же, многие сайты используют одни и те же виджеты, такие как drop-down меню, закладки в навигации, кнопки, и т.д. Эти вещи хорошо подходят для абстракции. Помимо этого, вы можете выработать некоторые свои идиомы, как скажем, список фотографий, показывающийся в виде thumbnail’ов. Вы можете стандартизировать CSS класс “thumbnail-list”, и в следующий раз вам всего лишь потребуется вставить этот класс, чтобы получить работающий вариант.

Это действительно принесет мне пользу?

Имея такой framework, вы сможете быстро окунуться в создание новой страницы. Вы создаете новый (X)HMTL документ, подключаете framework, и вам уже не потребуется времени, чтобы избавиться от ненужных отступов, у вас уже будет нужная вам типографика, чистые формы, работающие виджеты и много другое!
Вероятно, что вам захочется как-то изменить внешний вид конретного сайта. Чтобы это осуществить, все что вам нужно, это добавить или изменить уже существующий стиль. К примеру, если ваш framework устанвливает стандартную панель с навигацией для каждого «ul» с классом “tabs”, который имеет серый фон и черные границы. Чтобы это изменить, вам всего лишь потребуется добавить (или изменить существующий) стиль. Например:
ul.tabs li { border: none; background-image: url("/images/tabs/site-specific-tab-look.jpg"); }

Как должен быть спроектирован CSS framework?

Существует несколько возможных путей для создания framework’a, но самый общий и, несомненно, самый удобный, это абстракция вашего главного CSS-файла в несколько отдельных файлов, каждый из которых будет играть свою роль. К примеру, вы можете создать страницу стилей, которая бы управлялась с типографикой, а другая со сбросом стандартных стилей. Красота данного подхода заключается в возможности подключения именно тех стилей, что вам нужны. Вы можете остановиться на 6-7 разных страниц стилей в вашем framework’е, но конкретный проект может не нуждаться в одной или двух из них, а значит, что их совсем не обязательно подключать. Тот framework, что мы создали у себя, состоит из 5 стилей:
  • reset.css-отвечает за сброс стандартных стилей.
  • type.css-отвечает за типографику.
  • grid.css-отвечает за компоновку.
  • widgets.css-отвечает за виждеты: tab’ы, drop-down меню и кнопки «читать далее».
  • base.css-подключает все остальные страницы стилей, так что мы можем обращаться только к base.css из нашего (X)HTML документа, чтобы использовать весь framework.
Затем мы сохранили весь framework в отдельном месте и уже вызываем его с сайтов именно оттуда. Конечно, у нас есть несколько специфичных страниц стилей для каждого сайта, где мы переписываем или добавляем нужные стили.

Заключение

На практике, мы, веб дизайнеры, так же как и наши коллеги из мира программирования, имеем привычку часто повторятся. Мы каждый раз отключаем стандартные стили, пишем занового стили для tab’ов, и это повторяется от проекта к проекту. Потратьте немного времени на написание своего framework’а, абстрагируйте там то, что вы можете использовать несколько раз. Это поможет вам быстро начать создавать новую страницу, или поддерживать уже существующую. Позаботьтесь об этом, ведь это не требует особых знаний и не повредит вашим проектам, а главное, сэкономит время на создания дизайна следующего.

Представьте, что вам дали участок земли и попросили построить на нём дом. И не абы какой, а здание в несколько этажей высотой. Вы прохаживаетесь по участку и размышляете, как справиться с задачей. Дому нужен прочный фундамент, утеплённые стены и то, что на языке строителей называется правильно спроектированными инженерными системами. В целом план действий ясен, и вы приступаете к работе.

Теперь представьте: разгар строительства, фундамент и каркас уже возведены. С вами связывается заказчик и просит внести в проект изменения. Вы получаете новые чертежи и хватаетесь за голову. Дом на свежих планах преобразился. Теперь это высотное здание с подземной парковкой и скоростными лифтами. На крыше требуется оборудовать вертолётную площадку. Хватит ли у вашей стройки запаса прочности, чтобы строительство не пришлось начинать заново?

Конечно, в реальности такая ситуация невозможна. Стройку нельзя переделать «на ходу» под новые нужды. Однако при разработке сайтов (и любого другого программного обеспечения) порой случается, что проект уже начат, но окончательные требования к нему неизвестны. Давайте разберёмся, как в этих условиях можно сэкономить себе время и силы с помощью веб-фреймворков.

История вопроса

В процессе разработки сайта может измениться многое, если не всё - от дизайна до бизнес-логики. Масштабные перемены могут ожидать проект и в будущем. Возможно, после запуска потребуется добавить на сайт различные модули (например, новый раздел с материалами, личный кабинет пользователя или почтовую рассылку). Если в коде с самого начала наблюдается сильная связанность (зависимость одних функций от других), то время на разработку увеличивается, а число ошибок возрастает. Конечно, можно решать возникающие проблемы быстрыми заплатами. «Костыльный» подход, однако, неизбежно ведёт к тому, что код становится сложным и запутанным. Поддержка такого сайта со временем превращается в настоящую головную боль.

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

Спасение

Чтобы уберечь себя от возможных проблем, можно изначально создавать программу на жёстком каркасе, который позволяет подключать к себе дополнительные модули. По сути, мы будем писать свой код только в тех местах, где это разрешено создателями каркаса (в так называемых «точках расширения»). Так мы не поломаем базовые части системы (каркас) и сможем сконцентрироваться на своих текущих задачах.

В мире программирования описанный каркас называют фреймворком (framework ). Фреймворк - не обычная программная библиотека. Если библиотека - это просто набор функций, которые не влияют на архитектуру программы, то фреймворк сам, по сути, является архитектурой. Каркас гарантирует стандартную структуру программ и их поведение по умолчанию.

Веб-фреймворки

Всё просто: веб-фреймворки (web application framework , WAF ) - это фреймворки для веба. На их основе можно делать не только сайты, но и любые другие онлайн-приложения.

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

Вот типичный набор компонент веб-фреймворка:

  • шаблонизатор. Отвечает за независимость вёрстки от программного кода.
  • роутер. Распознаёт URL, по которому произошло обращение к серверу.
  • модуль доступа к базе данных.
  • модуль кэширования. Ускоряет загрузку страниц.
  • модуль безопасности. Аутентификация и авторизация пользователей.
  • файлы конфигурации.

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

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

Среди популярных современных веб-фреймворков - , (PHP), (Python), (Ruby).

Существуют так называемые микрофреймворки. Как следует из названия, они отличаются небольшим размером и количеством функций. Микрофреймворки хорошо подходят для простых проектов (сайты-визитки), быстрого прототипирования и создания API. Наиболее известны , (PHP), (Python).

От теории к практике

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

Фреймворки - не CMS. Да, с их помощью можно разработать свою собственную систему управления контентом. Но будут ли затраченные усилия стоить того? Предположим, у вас есть законченное ТЗ, в котором полностью описана функциональность проекта и перечислены все требования к нему. Проверьте, можно ли реализовать проект на какой-либо известной вам CMS. Если ответ положительный, то в изобретении велосипеда использовании фреймворка нет необходимости.

Нужно неплохо знать фреймворк изнутри, прежде чем начинать на нём новый проект (особенно при сжатых сроках). Иначе велик риск того, что работа превратится в безостановочное «курение мануалов».

Среди веб-фреймворков не существует «серебряной пули». У каждого из них есть свои сильные и слабые стороны. Нельзя назвать объективно лучший фреймворк, который бы подошёл для любой ситуации и решал бы все проблемы.

Для чего подойдут веб-фреймворки:

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

Для чего фреймворки не очень подходят:

  • для несложных типовых сайтов. Разве что вы хотите поставить их разработку на поток и для этого вам нужен собственный движок.
  • для использования какого-либо отдельного компонента фреймворка. Шаблонизация, роутинг, кэширование сами по себе - замечательные штуки. Но лучше взять эти модули в качестве отдельных программных библиотек, чем задействовать целый фреймворк ради одной-двух его функций.

В сухом остатке

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

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

Фреймворк, будучи "каркасом" для создания и сопровождения программного проекта, облегчает задачу разработчика. Существует множество фреймворков для создания сайтов и для различных языков программирования, обладающих как плюсами, так и минусами. Хорошо известные СSS-фреймворки: Foundation и Bootstrap. Из современных PHP-фреймворков можно выделить Yii, Symfony и Laravel. Они дружелюбны не только к профессионалам, но и новичкам. Популярность и широкий функционал позволяет без особого труда найти полезную информацию по этим фреймворкам.

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

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

Существует множество определений термина «фреймворк». Рассмотрим некоторые из них и попытаемся найти то, что их объединяет.

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

В переводе с английского, framework означает «каркас». Действительно, если сравнить создание программного проекта со строительством дома, то фреймворк – каркас и разработчику остается лишь навесить окна и стены.

Фреймворк предлагает разработчику уже встроенные классы:

  • Для работы с базой данных
  • Для создания функциональных форм
  • Для описания логики и др.

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

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

Плюсы фреймворков

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

Минусы фреймворков

  • Многие функции реализовываются индивидуально, т.к. фреймворки содержат только базовые компоненты бизнес-логики.
  • Требуется понимание бизнес-процессов.

Web-разработка и фреймворки

Одна из самых популярных областей применения фреймворков – создание сайтов, web-приложений и сервисов и это естественно. Главным преимуществом фреймворка является тот факт, что зачастую веб-сайты и приложения используют стандартизированную структуру организации компонентов. И создание такой структуры становится проще, если использовать фреймворки. Практически у любого сайта есть форма для авторизации. И каждый раз «изобретать велосипед» было бы не разумным решением.

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

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

Одним из самых знаменитых HTML/CSS/JS-фреймворков, помогающих в разработке интерфейса сайта является Foundation , который состоит из CSS файлов и нескольких плагинов JQuery (JS-фреймворк).

Главным его конкурент - Bootstrap , на котором так же написано огромное количество проектов.

Стоит отметить основные плюсы данных фреймворков:

  • Удобство
  • Простота для новичков
  • Популярность, а значит развитое сообщество
  • Функционал

Другие фреймворки облегчают написание логики сайта и web-приложения или сервиса. Например, одними из самых популярных PHP-фреймворков являются:

  • Yii : прост в освоении и использовании, высокая производительность относительно других php-фреймворков и пр. возможности.
  • Symfony : мощная функциональность, развитое сообщество, большое преимущества перед другими php-фреймворками в разработке сложных проектов.
  • Laravel : доступность, мощность, хороший функционал.

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

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

Нет. Вы не совсем поняли для чего созданы фреймворки. Фреймворк - это база (основа) для вашего приложения либо сайта. Формально фреймворк это готовая структура для более удобной разработки. Интегрировать что-либо на фреймворке в готовую корявую CMS на чистом php смысла нет.
Смогу ли я совершенствовать любой модуль фреймворка (например добавление комментариев) под свои нужны не мешая его обновлению (если выйдет новая версия). Или придется ли мне все переписывать с выходом новой версии, как это приходится делать на CMS типа DLE.

Нет нужды переписывать что-то, что уже написано.
К примеру, если использовать только один из крупных фреймворков на рынке (скажем, Laravel) - можно не бояться совместимости. К примеру, если вы начали писать на 5.0 вы сможете обновиться до 5.1 до потерь, а при обновлении до 5.2 вам надо будет поменять всего две строчки кода в одном единственном файле. При выходе глобальных изменений в документации прикладывают инструкцию для безболезненного перехода.
На сколько я буду зависеть от выхода новых версий? Например, я хочу сейчас скачать и дальше уже делать с ним что угодно не боясь, как в предыдущем вопросе, что найдут какую-то уязвимость и снова придется его обновлять и переписывать все свои коды в сотнях файлах php.

Уязвимость не найдут. К примеру, тот же Laravel пережил уже несколько крупных релизов, и разрабатывается пятый год. Защита у него на максимальном уровне, и крупных багов секьюрити с релиза пятой версии не обнаружено. И поверьте мне - не один человек бьются в попытках найти баг в ларавеле, ибо он используется не на одном десятке сайтов. Сайты на нем исчисляются тысячами.
Можно ли будет (искюча вариант, что я скопирую сайт на локалку и год буду переписывать его с нуля на фреймворк) постепенно, не нарушая работу сайта, перенести собственные CMS на фреймворк учитывая то, что в них десятки модулей, собственные админ панели и т.д.

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

Если вы выберите крупного игрока (советую Laravel, опять же) - вам не придется задумываться о его поддержке. Это как минимум open source проект, сотни веб-девелоперов независимо работают над его усовершенствованием, и поддержкой.
И в случае чего вы так же сможете внести вклад, форкнув проект, внеся свои изменения.

В продолжение темы:
Android

Популярная социальная сеть ВКонтакте позволяет находить новых друзей и держать контакт со всеми близкими. Помимо этого, каждый пользователь может делиться собственными...