frameworks понятие - Что такое программная среда?




application website (11)

Может кто-нибудь, пожалуйста, объясните мне, что такое программная среда? Зачем нужна инфраструктура? Что делает инфраструктура для облегчения программирования?


Answers

В целом, рамочная работа является реальной или концептуальной структурой, предназначенной для поддержки или руководства для строительства, что-то, что расширяет структуру во что-то полезное ...


Я очень опаздываю, чтобы ответить на него. Но я хотел бы поделиться одним примером, о котором я только думал сегодня. Если бы я сказал вам, чтобы вырезали лист бумаги размером 5 м на 5 м, то, конечно же, вы это сделаете. Но предположим, я попрошу вас разрезать 1000 штук бумаги того же размера. В этом случае вы не будете измерять 1000 раз; очевидно, вы сделали бы рамку размером 5 м на 5 м, а затем с ее помощью вы могли бы сократить 1000 штук бумаги за меньшее время. Итак, что вы сделали, это создать структуру, которая будет выполнять определенный тип задачи. Вместо того, чтобы повторять один и тот же тип задачи снова и снова для приложений того же типа, вы создаете структуру, объединяющую все эти объекты, в один хороший пакет, следовательно, предоставляя абстракцию для вашего приложения и, что более важно, многих приложений.


Технически вам не нужна фреймворк. Если вы создаете действительно простой сайт (подумайте о сети в 1992 году), вы можете просто сделать все это с жестко закодированным HTML и некоторым CSS.

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

Вместо этого вы можете написать всю логику, в которой вы нуждаетесь, каждый раз. Вы можете написать свой собственный уровень сохранения данных / хранения, или, если вы слишком заняты, просто напишите собственный SQL для каждого доступа к базе данных. Вы можете написать свои собственные уровни проверки подлинности и обработки сеанса. И ваша собственная логика шаблона. И ваша собственная логика обработки исключений. И ваши собственные функции безопасности. И ваша собственная платформа тестирования модулей, чтобы убедиться, что все работает нормально. И ваш собственный ... [продолжается довольно долго]

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

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

И стоимость этого? Инвестируя некоторое время в изучение структуры. Но, как практически каждый веб-разработчик будет свидетельствовать, определенно стоит потратить время на обучение, чтобы получить огромные (действительно, массовые) выгоды от использования любой структуры, которую вы выбираете.


Резюме в Википедии (Software Framework) (первая ошибка в google htw) объясняет это довольно хорошо:

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

Рамки программного обеспечения имеют эти отличительные особенности, которые отделяют их от библиотек или обычных пользовательских приложений:

  1. инверсия управления. В рамках, в отличие от библиотек или обычных пользовательских приложений, управление потоком всей программы не продиктовано вызывающим, а структурой. [1]
  2. поведение по умолчанию . Структура имеет поведение по умолчанию. Это поведение по умолчанию должно быть действительно полезным, а не серией no-op.
  3. расширяемость . Структура может быть расширена пользователем, как правило, путем выборочного переопределения или специализированного кода пользователя, обеспечивающего определенную функциональность.
  4. немодулируемый код структуры. Код рамки, в общем, не допускается к изменению. Пользователи могут расширять структуру, но не изменять ее код.

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


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

Эта очень хорошая статья подводит итог разнице между набором библиотек и каркасом:

Рамку можно определить как набор библиотек, в которых говорится: «Не звоните нам, мы позвоним вам».

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


Рамка помогает нам в использовании «уже созданного», может быть как метафор,

думаю, что земляной материал является языком программирования,

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


Помимо определений, которые иногда понятны, только если вы уже поняли, мне помог пример.

Я думаю, что у меня есть проблеск понимания, когда я собираюсь сортировать список в .Net; пример структуры, обеспечивающей функциональность, разработанную пользовательским кодом, обеспечивающую определенную функциональность. Возьмите List.Sort (IComparer). Алгоритм сортировки, который находится в среде .Net в методе Sort, должен выполнять серию сравнений; делает ли объект А до или после объекта B? Но сам Сорт не имеет понятия, как сделать сравнение; знает только этот тип сортировки. Вы не можете написать алгоритм сортировки сравнения, который может быть повторно использован многими пользователями и предвидеть все различные типы, которые вы должны были бы сортировать. Вы должны оставить эту работу до самого пользователя. Таким образом, здесь, сортировка, ака рамки, обращается к методу в пользовательском коде, сортируемый тип, чтобы он мог сравнивать. (Или делегат может использоваться, то же самое.)

Правильно ли я это понял?


Структура имеет некоторые функции, которые могут вам понадобиться. вам, возможно, нужны какие-то массивы, которые имеют встроенные механизмы сортировки. Или, может быть, вам нужно окно, в котором вы хотите разместить некоторые элементы управления, все, что вы можете найти в рамках. это своего рода РАБОТА, которая охватывает FRAME вокруг вашей собственной работы.

EDIT: OK Я собираюсь копать то, что вы, ребята, пытались мне сказать;) вы, возможно, не заметили информацию между строками «WORK, которая охватывает FRAME вокруг ...», прежде чем это станет глубже глубже. Я стараюсь дать слово, надеясь, что вы сгорбились:
хорошее объяснение вопросу «Разница между библиотекой и рамкой», которую я нашел здесь
http://ifacethoughts.net/2007/06/04/difference-between-a-library-and-a-framework/


на самом низком уровне среда - это среда, где вам предоставляется набор инструментов для работы с

эти инструменты представлены в виде библиотек, конфигурационных файлов и т. д.

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

Люди на самом деле не нуждаются в каркасах, это просто вопрос экономии времени, а другие - только личные предпочтения.

Люди будут оправдывать это с помощью рамки, вам не нужно вводить код с нуля. Но это просто люди, путающие библиотеки с рамками.

Я не пристрастен здесь, я фактически использую рамки прямо сейчас.


Простое объяснение: каркас - это эшафот, с которым вы можете создавать приложения.

Структура, как правило, обеспечивает некоторые базовые функции, которые вы можете использовать и расширить для создания более сложных приложений, есть рамки для всех видов вещей. Хорошим примером этого является инфраструктура Microsoft MVC. Он предоставляет все, что вам нужно, чтобы выйти из наземного веб-сайта с использованием шаблона MVC, он обрабатывает веб-запросы, маршруты и т. П. Все, что вам нужно сделать, это реализовать «Контроллеры» и предоставить «Представления», которые представляют собой две конструкции, определенные структурой MVC. Затем среда MVC обрабатывает вызовы ваших контроллеров и рендеринг ваших представлений.

Возможно, это не лучшая формулировка, но я надеюсь, что это поможет


Я рекомендую this скринкаст Крисом Таваресом. Он дает хороший обзор CQRS, и он показывает некоторые хорошие примеры в коде.

URL: this