Промежуточное ПО (middleware) и среды исполнения (Frameworks)
Термин «промежуточное программное обеспечение» (middleware) означает, что соответствующий код предназначен для исполнения на некотором «промежуточном» слое многослойной программной системы. При этом, в расширенном смысле, термин «промежуточное ПО» (middleware) часто используют для обозначения инфраструктуры: систем управления базами данных, веб-серверов, серверов приложений, систем управления содержанием, и тому подобных инструментов, которые используются в процессе разработки и эксплуатации приложений. Промежуточное программное обеспечение составляет ядро современных приложений, основанных на XML, SOAP, веб-сервисах и сервисно-ориентированной архитектуре.
Примером такой трактовки термина «промежуточное ПО» является среда разработки Cadence Design Framework II (DFII) компании Cadence Design Systems. Она обеспечивает интеграцию многочисленных программных компонент, входящих в состав системы EDA этой компании. Составной частью DFII является объектно-ориентированная СУБД, работающая с двумя форматами данных: OpenAccess и CDBA (собственный формат данных Cadence). В этой СУБД в качестве отдельных объектов хранятся исходные и промежуточные данные проекта, а также результаты проектирования. Уровень library хранит данные проекта в целом, уровень cells – данные по отдельным блокам проекта, уровень views обеспечивает хранение различных представлений компонентов проекта (схемотехнического, топологического, списочного и т. п.). Design Framework II обеспечивает генерацию и хранение кода SystemC для построения поведенческих моделей объекта проектирования (например, для этапа генерации тестов при верификации разработанной СБИС), генерацию и исполнение программных модулей на основе этого кода.
Другой пример middleware – широко распространённая среда исполнения Microsoft .NET Framework (приблизительный аналог – Java Virtual Machine). Она обеспечивает широкий набор функций, резко повышающих надёжность приложений, разработанных для исполнения в данной вычислительной среде (например, «сборку мусора», управление памятью, процессами, вызовами сторонних функций и библиотек, маршаллинг), упрощающих разработку этих приложений (например, единый внутренний формат вызова функций и процедур независимо от языка программирования), расширяющих их возможности (например, прозрачную поддержку сетевых соединений и многое другое).
Microsoft .NET Framework 4.0 включает в себя набор инструментов для поддержки параллельных вычислений:
библиотеки Task Parallel Library (TPL) и Concurrency and Coordination Runtime (CCR);
Parallel LINQ (PLINQ);
новые инструменты отладки и профилирования;
структуры координации данных.
Кроме того, .NET Framework 4.0 полностью поддерживает язык программирования F#, входящий в состав Visual Studio 2010 Pro в качестве базового языка. Являясь языком функционального программирования, F# также поддерживает параллельные и асинхронные вычисления.
Что для нас особенно важно, F# обеспечивает, посредством механизма цитирования (quotations), возможность автоматической генерации исходного кода производных программных модулей. Некоторые другие современные языки функционального программирования, например Haskell, также обладают подобной возможностью, но F# – первый язык функционального программирования, реализованный в промышленной среде программирования (Visual Studio) и имеющий полную поддержку вычислительной среды исполнения (.NET Framework).
Среда исполнения .NET Framework реализована только для платформ Microsoft, однако существует целый ряд быстро развивающихся проектов, обеспечивающих исполнение промежуточного кода Microsoft (IL), генерируемого в рамках .NET Framework, на других платформах. Это, в первую очередь, проект Mono, реализованный для следующих операционных систем: GNU/Linux, FreeBSD, Solaris, Mac OS X, Microsoft Windows и Unix. В рамках проекта реализован также режим компиляции JIT (Just-In-Time, или компиляции «на лету»), повышающий быстродействие программ, использующих вычислительные среды исполнения (таких как Java Virtual Machine или .NET Framework). Существуют также альтернативные проекты, например, DotGNU.
Do'stlaringiz bilan baham: |