Может кто-нибудь объяснить мне, что такое программный каркас? Зачем нам нужны рамки? Что делает фреймворк для облегчения программирования?
Может кто-нибудь объяснить мне, что такое программный каркас? Зачем нам нужны рамки? Что делает фреймворк для облегчения программирования?
Ответы:
Я очень поздно, чтобы ответить на него. Но я хотел бы поделиться одним примером, о котором я думал только сегодня. Если бы я сказал вам отрезать лист бумаги размером 5 на 5 метров, то вы наверняка это сделаете. Но предположим, я прошу вас разрезать 1000 листов бумаги одинаковых размеров. В этом случае вы не будете делать измерения 1000 раз; очевидно, вы бы сделали рамку 5 на 5 метров, а затем с помощью нее вы сможете разрезать 1000 листов бумаги за меньшее время. Итак, вы сделали каркас, который будет выполнять определенный тип задач. Вместо того, чтобы выполнять задачи одного и того же типа снова и снова для одного и того же типа приложений, вы создаете структуру, объединяющую все эти средства в одном удобном пакете, что обеспечивает абстракцию для вашего приложения и, что более важно, для многих приложений.
Технически, вам не нужны рамки. Если вы делаете действительно очень простой сайт (вспомните Интернет еще в 1992 году), вы можете просто сделать все это с помощью жестко запрограммированного HTML и немного CSS.
И если вы хотите создать современное веб-приложение, вам на самом деле не нужно использовать фреймворк для этого.
Вместо этого вы можете написать всю логику, которая вам нужна, каждый раз. Вы можете написать свой собственный уровень сохранения / хранения данных или - если вы слишком заняты - просто написать собственный SQL для каждого доступа к базе данных. Вы можете написать свои собственные уровни аутентификации и обработки сеансов. И ваш собственный шаблон разметки логики. И ваша собственная логика обработки исключений. И ваши собственные функции безопасности. И ваш собственный модуль модульного тестирования, чтобы убедиться, что все работает нормально. И ваш собственный ... [продолжается довольно долго]
Опять же , если вы делаете использовать рамки , вы будете в состоянии извлечь выгоду из хороших, как правило , рецензируемых и очень хорошо протестирована работы десятки , если не сотни других разработчиков, которые вполне могут быть лучше , чем вы. Вы сможете быстро построить то, что вам нужно, не тратя время на создание и не слишком заботясь об элементах инфраструктуры, перечисленных выше.
Вы можете сделать больше за меньшее время и знать, что используемый или расширяемый код фреймворка, скорее всего, будет лучше, чем вы все это делаете сами.
И стоимость этого? Потратив некоторое время на изучение основ. Но - как засвидетельствует практически каждый веб-разработчик - определенно стоит потраченного на обучение времени, чтобы получить огромные (действительно, огромные) выгоды от использования любой среды, которую вы выберете.
Краткое описание в Википедии (Software Framework) (кстати, первое попадание в Google) объясняет это довольно хорошо:
Программная среда в компьютерном программировании - это абстракция, в которой общий код, обеспечивающий общие функциональные возможности, может выборочно переопределяться или специализироваться пользовательским кодом, обеспечивающим определенные функциональные возможности. Фреймворки являются особым случаем программных библиотек в том смысле, что они представляют собой повторно используемые абстракции кода, обернутые в четко определенный интерфейс прикладного программирования (API), однако они содержат некоторые ключевые отличительные особенности, которые отделяют их от обычных библиотек.
Программные платформы имеют следующие отличительные особенности, которые отделяют их от библиотек или обычных пользовательских приложений:
- инверсия управления - в среде, в отличие от библиотек или приложений обычного пользователя, весь поток управления программой определяется не вызывающей стороной, а структурой. [1]
- поведение по умолчанию - у платформы есть поведение по умолчанию. Это поведение по умолчанию на самом деле должно быть некоторым полезным поведением, а не серией запретов.
- расширяемость . Платформа может быть расширена пользователем обычно путем выборочного переопределения или специализированного пользовательского кода, обеспечивающего определенные функциональные возможности.
- немодифицируемый код фреймворка. Код фреймворка, как правило, не может быть изменен. Пользователи могут расширять структуру, но не изменять ее код.
Он может вам «понадобиться», потому что он может предоставить вам удобный способ разработки приложений, поскольку он содержит множество уже написанных и протестированных функций. Причина очень похожа на причину, по которой мы используем программные библиотеки.
Уже много хороших ответов, но позвольте мне посмотреть, могу ли я дать вам другую точку зрения.
Если немного упростить вещи, вы можете рассматривать фреймворк как завершенное приложение, за исключением фактической функциональности. Вы подключаете функциональность и PRESTO! у вас есть приложение.
Рассмотрим, скажем, структуру GUI. Фреймворк содержит все необходимое для создания приложения. Действительно, вы часто можете просто сделать минимальное приложение с очень небольшим количеством строк исходного кода, которое абсолютно ничего не делает - но оно дает вам управление окнами, управление подокнами, меню, панели кнопок и т. Д. Это сторона структуры. Добавляя функциональность вашего приложения и «подключая его» к нужным местам в платформе, вы превращаете это пустое приложение, которое делает только управление окнами и т. Д., В настоящее полноценное приложение.
Существуют аналогичные типы фреймворков для веб-приложений, серверных приложений и т. Д. В каждом случае фреймворк предоставляет основную часть утомительного, повторяющегося кода (надеюсь), в то время как вы предоставляете реальную функциональность проблемной области. (Это идеал. В действительности, конечно, успех структуры сильно варьируется.)
Я еще раз подчеркиваю, что это упрощенное представление о том, что такое основа. Я не использую такие страшные термины, как «Инверсия контроля» и тому подобное, хотя в большинство фреймворков встроены такие страшные понятия. Поскольку вы новичок, я подумал, что избавлю вас от жаргона и проведу простое сравнение.
Я не уверен, что есть четкое определение «рамки». Иногда большой набор библиотек называют фреймворком, но я думаю, что типичное использование этого слова ближе к определению, приведенному aioobe.
Эта очень хорошая статья подводит итог разницы между просто набором библиотек и фреймворком:
Каркас может быть определен как набор библиотек, которые говорят: «Не звоните нам, мы вам позвоним».
Как фреймворк помогает вам? Потому что вместо того, чтобы писать что-то с нуля, вы просто расширяете данное работающее приложение. Таким образом, вы получаете большую производительность - иногда получающееся в результате приложение может быть гораздо более сложным, чем вы могли бы сделать самостоятельно в то же время - но вы обычно торгуете с большой гибкостью.
Простое объяснение таково: фреймворк - это платформа, на которой вы можете создавать приложения.
Фреймворк обычно предоставляет некоторую базовую функциональность, которую вы можете использовать и расширять для создания более сложных приложений. Существуют фреймворки для самых разных вещей. Microsoft MVC Framework является хорошим примером этого. Он предоставляет все необходимое для запуска веб-сайта с использованием шаблона MVC, обрабатывает веб-запросы, маршруты и тому подобное. Все, что вам нужно сделать, это реализовать «Контроллеры» и предоставить «Представления», которые являются двумя конструкциями, определенными средой MVC. Среда MVC затем обрабатывает вызовы ваших контроллеров и отображение ваших представлений.
Возможно, не самая лучшая формулировка, но я надеюсь, что это поможет
на самом низком уровне фреймворк - это среда, в которой вам предоставляется набор инструментов для работы с
это инструменты в виде библиотек, файлов конфигурации и т. д.
эта так называемая «среда» предоставляет вам базовые настройки (отчеты об ошибках, файлы журналов, языковые настройки и т. д.) ... которые могут быть изменены, расширены и дополнены.
Людям на самом деле не нужны фреймворки, это просто вопрос экономии времени, а другим - просто личные предпочтения.
Люди оправдают это с помощью фреймворка, вам не нужно кодировать с нуля. Но это просто люди, которые путают библиотеки с фреймворками.
Я здесь не предвзятый, на самом деле я сейчас использую фреймворк.
Структура обеспечивает функциональные возможности / решение конкретной проблемной области.
Определение из вики :
Программная среда в компьютерном программировании - это абстракция, в которой общий код, обеспечивающий общие функциональные возможности, может выборочно переопределяться или специализироваться пользовательским кодом, обеспечивающим определенные функциональные возможности. Фреймворки являются особым случаем программных библиотек в том смысле, что они представляют собой повторно используемые абстракции кода, обернутые в четко определенный интерфейс прикладного программирования (API), однако они содержат некоторые ключевые отличительные особенности, которые отделяют их от обычных библиотек.
Фреймворк помогает нам с использованием «уже созданного», метафора может быть,
думаю, что земля материал является языком программирования,
и, например, «камера» - это программа, и вы решили создать ноутбук. Вам не нужно каждый раз воссоздавать камеру, вы просто используете земной каркас (например, в магазине технологий), берете камеру и интегрируете ее в свой ноутбук.
Фреймворк имеет некоторые функции, которые могут вам понадобиться. возможно, вам нужны какие-то массивы со встроенными механизмами сортировки. Или, может быть, вам нужно окно, где вы хотите разместить некоторые элементы управления, все, что вы можете найти в рамках. это такая РАБОТА, которая охватывает РАМКУ вокруг вашей собственной работы.
РЕДАКТИРОВАТЬ: ОК, я собираюсь копать то, что вы, ребята, пытались сказать мне;) вы, возможно, не заметили информацию между строк "РАБОТА, которая охватывает РАМКУ ...", прежде чем она станет глубже и глубже. Я пытаюсь дать слово, надеясь, что вы любезны:
хорошее объяснение вопроса «Разница между библиотекой и структурой» я нашел здесь
http://ifaceviousts.net/2007/06/04/difference-between- а-библиотека-а-а-основа /
Помимо определений, которые иногда понятны, только если вы уже понимаете, мне помог пример.
Я думаю, что у меня появился проблеск понимания, когда я начал сортировать список в .Net; пример структуры, предоставляющей функциональность, адаптированную к пользовательскому коду, обеспечивающему определенную функциональность. Взять List.Sort (IComparer). Алгоритм сортировки, который находится в .Net-структуре в методе Sort, должен выполнить серию сравнений; объект A идет до или после объекта B? Но сама Сортировка понятия не имеет, как сделать сравнение; только отсортированный тип знает это. Вы не могли бы написать алгоритм сортировки сравнения, который может быть повторно использован многими пользователями и предвидеть все различные типы, которые вы будете вызывать для сортировки. Вы должны оставить эту часть работы самому пользователю. Так что здесь sort, или, иначе, фреймворк, вызывает метод в пользовательском коде, сортируя тип, чтобы он мог выполнить сравнение. (Или делегат может быть использован;
Я правильно понял?