OSGi vs .NET

Написано 12 Декабрь, 2012 в категории Java

1.4.10 .NET

Несмотря на то что Microsoft .NET это не Java технология, он заслуживает внимания поскольку был создан под впечатлением от Java, но частично улучшен, наподобие того как OSGi улучшает Java. Выпущенный в 2002 году, он основывался не только на Java примерах, но и на опыте борьбы компании Microsoft c "DLL Hell". Как результат, .NET содержит понятие сборка, которая состоит из модулей, похожих на бандлы (bundle) в OSGi. Весь .NET-код упакован в сборку, которая может принимать вид DLL или EXE файлов. Сборки предоставляют механизм инкапсуляции для содержащегося внутри них кода. Также, сборки содержат метаданные с информацией о зависимости от других сборок, но в целом эта модель менее гибкая чем в OSGi. Поскольку в .NET зависимости указывают на конкретные сборки, полной аналогии с провайдерами в OSGi нет.

Кроме того .NET-сборки загружаются в домены приложения ( Application domain ) и могут быть выгружены только при выгрузке всего домена приложения. Это приводит к тому, что трудно добиться динамичности и легковесности OSGi, когда загруженные в домен приложения сборки могут быть выгружены только одновременно. При этом можно загрузить каждую сборку в отдельный домен, но для связи между доменами придется использовать межпроцессное взаимодействие, что значительно усложняет работу. Microsoft провела исследования, направленные на создание OSGI-подобных сред, но изначальные различия между платформами .NET и Java, привели к незначительным результатам в этом направлении. Несмотря на это .NET заслуживает похвалы за улучшение Java-стандартов в этой области.

Отрывок из книги OSGi in Action.