Наибольшее впечатление на меня произвела цитата (это, правда, не Фаулер сказал, а процитировал 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>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Дарней,
СГ>>Совершенно верно. .NET Framework — это не фрэймворк, а обычная библиотека классов.
Д>Ну, не стоит забывать еще про виртуальную машину и общую систему типов. Но в целом название неудачное, ИМХО.
Как же это неудачное? С точки зрения маркетинга, таки очень хорошо назвали .
Библиотек-то и так миллион.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth