Наибольшее впечатление на меня произвела цитата (это, правда, не Фаулер сказал, а процитировал Ralph Johnson and Brian Foote):
Важная характеристика фреймворка — то, что определенные пользователем методы взаимодействия с фреймворком вызываются из фреймворка, а не из пользовательского кода. Фреймворк, как правило, играет роль основной программы, координируя всю деятельность приложения. Такая "инверсия управления" дает фреймворку мощность расширяемого скелета. Пользовательские методы вшиваются в общий алгоритм, определенный фреймворком для конкретного приложения.
И дальше — уже сам Фаулер:
Инверсия управления — основной признак, отличающий фреймворк от библиотеки. Библиотека — это по сути набор функций, которые можно вызвать (в настоящем, как правило, они организуются в классы). Каждый вызов выполняет некоторую работу и возвращает управление клиенту.
Фреймворк же определяет некоторую абстрактную архитектуру, в которую встраивается поведение. Чтобы использовать его, вам придется вставлять свое поведение в различных местах — расширяя классы фреймворка либо подключая свои классы. Затем код фреймворка вызовет ваш код в этих местах.
ЗХ>Важная характеристика фреймворка — то, что определенные пользователем методы взаимодействия с фреймворком вызываются из фреймворка, а не из пользовательского кода. Фреймворк, как правило, играет роль основной программы, координируя всю деятельность приложения. Такая "инверсия управления" дает фреймворку мощность расширяемого скелета. Пользовательские методы вшиваются в общий алгоритм, определенный фреймворком для конкретного приложения.
Получается, что .NET Framework — на самом деле не очень то и framework?
ЗХ>>Важная характеристика фреймворка — то, что определенные пользователем методы взаимодействия с фреймворком вызываются из фреймворка, а не из пользовательского кода. Фреймворк, как правило, играет роль основной программы, координируя всю деятельность приложения. Такая "инверсия управления" дает фреймворку мощность расширяемого скелета. Пользовательские методы вшиваются в общий алгоритм, определенный фреймворком для конкретного приложения.
Д>Получается, что .NET Framework — на самом деле не очень то и framework?
Именно что. Это огромная пачка фреймворков, библиотек, компонентов, и прочего хлама (зачеркнуто).
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>
ЗХ>>Важная характеристика фреймворка — то, что определенные пользователем методы взаимодействия с фреймворком вызываются из фреймворка, а не из пользовательского кода. Фреймворк, как правило, играет роль основной программы, координируя всю деятельность приложения. Такая "инверсия управления" дает фреймворку мощность расширяемого скелета. Пользовательские методы вшиваются в общий алгоритм, определенный фреймворком для конкретного приложения.
Д>Получается, что .NET Framework — на самом деле не очень то и framework?
Да нет, в обще-то framework, но только не на уровне пользовательских функйий, а на уровне IL.
Поскольку для IL-команд есть инверсия. Но вот только они ... не пользовательские
С другой стороны, во фреймворках есть два уровня логики: логика отдельных (встраиваемых)
пользовательских функций (для которых есть инверсия управления) и логикак конфигурирования
фреймворка целиком. Первое в .Net пользователю (почти!) не отдано и есть только второе.
В общем — какой-то странный гибоид получается...
Здравствуйте, EXO, Вы писали:
Д>>Получается, что .NET Framework — на самом деле не очень то и framework?
EXO>Да нет, в обще-то framework, но только не на уровне пользовательских функйий, а на уровне IL. EXO>Поскольку для IL-команд есть инверсия. Но вот только они ... не пользовательские EXO>С другой стороны, во фреймворках есть два уровня логики: логика отдельных (встраиваемых) EXO>пользовательских функций (для которых есть инверсия управления) и логикак конфигурирования EXO>фреймворка целиком. Первое в .Net пользователю (почти!) не отдано и есть только второе. EXO>В общем — какой-то странный гибоид получается...
А вообще что MS говорит по этому поводу? Кто-нибудь встречал их формальное определение .NET Framework?
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>
ЗХ>>Важная характеристика фреймворка — то, что определенные пользователем методы взаимодействия с фреймворком вызываются из фреймворка, а не из пользовательского кода. Фреймворк, как правило, играет роль основной программы, координируя всю деятельность приложения. Такая "инверсия управления" дает фреймворку мощность расширяемого скелета. Пользовательские методы вшиваются в общий алгоритм, определенный фреймворком для конкретного приложения.
Д>Получается, что .NET Framework — на самом деле не очень то и framework?
Совершенно верно. .NET Framework — это не фрэймворк, а обычная библиотека классов.
Здравствуйте, Сергей Губанов, Вы писали:
Д>>Получается, что .NET Framework — на самом деле не очень то и framework?
СГ>Совершенно верно. .NET Framework — это не фрэймворк, а обычная библиотека классов.
Ну, не стоит забывать еще про виртуальную машину и общую систему типов. Но в целом название неудачное, ИМХО. Мне больше нравится CLI — это намного информативнее и точнее.
Здравствуйте, EXO, Вы писали:
EXO>Да нет, в обще-то framework, но только не на уровне пользовательских функйий, а на уровне IL. EXO>Поскольку для IL-команд есть инверсия. Но вот только они ... не пользовательские
В каком это смысле? Все совершенно верно. Мы отдаем фреймворку фактически бинарный MSIL. Фреймворк джиттит его и вызывает наши методы. Даже для плоского exe файла это так. Для ASP.NET все еще более прозрвчно: именно фреймворк вызывает наш код для выполнения некоторых стадий обработки HTTP запроса.
... << RSDN@Home 1.1.4 stable rev. 510>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Ну так давно же так. Когда появился первый событийно-ориентированный интерфейс (API) операционной системы.
Фактически, Win32 API является фреймворком. Но вот GTK+ и Qt уже в меньшей степени фреймворки. Но это GUI, а что до системных сервисов, то ясно же, что современные многозадачные OS — не что иное как фреймворки.
С другой стороны, DOS — это библиотека.
Sinclair,
> EXO> Да нет, в обще-то framework, но только не на уровне пользовательских функйий, а на уровне IL. > EXO> Поскольку для IL-команд есть инверсия. Но вот только они ... не пользовательские
> В каком это смысле? Все совершенно верно. Мы отдаем фреймворку фактически бинарный MSIL. Фреймворк джиттит его и вызывает наши методы. Даже для плоского exe файла это так.
Это делает не .Net Framework, а CLR, реализация CLI от Microsoft. .Net Framework — такая же CLS-compliant библиотека, как и любая другая framework.
> Для ASP.NET все еще более прозрвчно: именно фреймворк вызывает наш код для выполнения некоторых стадий обработки HTTP запроса.
Для ASP.Net — уже вполне может быть, здесь не знаю
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Дарней,
> Д>> Получается, что .NET Framework — на самом деле не очень то и framework?
> СГ> Совершенно верно. .NET Framework — это не фрэймворк, а обычная библиотека классов.
> Ну, не стоит забывать еще про виртуальную машину и общую систему типов.
А для этого есть свои аббревиатуры, CLR и СTS соответственно.
> Но в целом название неудачное, ИМХО. Мне больше нравится CLI — это намного информативнее и точнее.
Это немного о другом. В CLI (а точнее, CLR) .Net Framework не входит, равно как и наоборот.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
>> В каком это смысле? Все совершенно верно. Мы отдаем фреймворку фактически бинарный MSIL. Фреймворк джиттит его и вызывает наши методы. Даже для плоского exe файла это так. ПК>Это делает не .Net Framework, а CLR, реализация CLI от Microsoft.
Хм. Я не силен в терминах, но до сих пор полагал, что CLR — это часть фреймворка, ... ПК>.Net Framework — такая же CLS-compliant библиотека, как и любая другая framework.
... а CLS-compliant библиотека в нем называется FCL.
... << RSDN@Home 1.1.4 stable rev. 510>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Дарней,
> ПК>Это немного о другом. В CLI (а точнее, CLR) .Net Framework не входит, равно как и наоборот. > > CLI — это подмножество мелкософтовской реализации .NET Framework > точнее — та его часть, которая стандартизована в ECMA
CLI -- спецификация того, что в исполнении Microsoft называется CLR, соответственно, реализацией она никак быть не может. Кроме этого в спецификации ECMA описаны CLI Libraries (partition IV), которые тоже реализацией не являются.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Sinclair,
>>> В каком это смысле? Все совершенно верно. Мы отдаем фреймворку фактически бинарный MSIL. Фреймворк джиттит его и вызывает наши методы. Даже для плоского exe файла это так.
> ПК> Это делает не .Net Framework, а CLR, реализация CLI от Microsoft.
> Хм. Я не силен в терминах, но до сих пор полагал, что CLR — это часть фреймворка, ...
> ПК> .Net Framework — такая же CLS-compliant библиотека, как и любая другая framework.
> ... а CLS-compliant библиотека в нем называется FCL.
Честно говоря, у них черт ногу сломит... С одной стороны:
(Определение framework из спецификации CLI)
A library consisting of CLS-compliant code is herein referred to as a framework.
С другой:
(MSDN)
The .NET Framework consists of:
The Common Language Runtime (CLR) A language-neutral development & execution environment that provides services to help "manage" application execution
The Framework Class Libraries (FCL) A consistent, object-oriented library of prepackaged functionality
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Честно говоря, у них черт ногу сломит...
У меня лично сложилось впечатление, что наиболее точным переводом термина Framework от MS будет "фиговина" . А фиговина — она, тскать, неотъемлемо то содержит в себе другие фиговины, то наоборот в них содержится... Ибо точную границу фмговины провести возможным не представляется.
... << RSDN@Home 1.1.4 stable rev. 510>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.