~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ D8247259B16536C03B7DD5D083B5F3D9__1712374740 ✰
Заголовок документа оригинал.:
✰ IBM System Object Model - Wikipedia ✰
Заголовок документа перевод.:
✰ Объектная модель системы IBM — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/System_Object_Model ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/d8/d9/d8247259b16536c03b7dd5d083b5f3d9.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/d8/d9/d8247259b16536c03b7dd5d083b5f3d9__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 12:44:47 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 6 April 2024, at 06:39 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Объектная модель системы IBM — Википедия Jump to content

Системная объектная модель IBM

Из Википедии, бесплатной энциклопедии
(Перенаправлено из Системной объектной модели )
IBM SOMобъекты
Разработчики) ИБМ
Стабильная версия
3.0 / декабрь 1996 г.
Операционная система OS/2 , Windows , AIX , Classic Mac OS , Copland , OS/390 , NonStop OS , OS/400
Тип объектно-ориентированная общих библиотек система

В вычислительной технике системная объектная модель ( SOM ) представляет собой объектно-ориентированную систему общих библиотек, разработанную IBM . DSOM , распределенная версия, основанная на CORBA , позволяла объектам на разных компьютерах взаимодействовать.

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

Библиотека SOM состоит из набора классов, методов, статических функций и элементов данных. Программы, использующие библиотеку SOM, могут создавать объекты типов, определенных в библиотеке, использовать методы, определенные для типа объекта, и создавать подклассы из классов SOM, даже если язык программы, обращающейся к библиотеке SOM, не поддерживает типизацию классов. Библиотека SOM и программы, использующие объекты и методы этой библиотеки, не обязательно должны быть написаны на одном и том же языке программирования. SOM также сводит к минимуму влияние изменений в библиотеках. Если библиотека SOM изменена для добавления новых классов или методов или для изменения внутренней реализации классов или методов, все равно можно запустить программу, использующую эту библиотеку, без перекомпиляции. Это не относится ко всем другим библиотекам C++ , которые в некоторых случаях требуют перекомпиляции всех программ, которые их используют, при каждом изменении библиотек, что известно как проблема хрупкого двоичного интерфейса .

SOM предоставляет интерфейс прикладного программирования (API), который предоставляет программам доступ к информации о классе SOM или объекте SOM. Любой класс SOM наследует набор виртуальных методов, которые можно использовать, например, для поиска имени класса объекта или для определения того, доступен ли данный метод для объекта.

Приложения [ править ]

SOM предназначался для универсального использования — от мейнфреймов IBM до настольных компьютеров в OS/2 , позволяя писать программы, которые будут работать на настольных компьютерах, но использовать мэйнфреймы для обработки и хранения данных. IBM выпустила версии SOM/DSOM для OS/2, Microsoft Windows и различных разновидностей Unix от IBM (в частности, собственной AIX ). Некоторое время после образования альянса AIM SOM/DSOM также использовалась Apple Computer для аналогичных целей. Наиболее широко он использовался в их среде OpenDoc , но и в других целях использовался ограниченно.

Возможно, наиболее широкое применение SOM в IBM наблюдалось в более поздних версиях OS/2, в которых он использовался для большей части кода, включая Workplace Shell . Объект REXX для OS/2 может работать с классами и объектами SOM, включая WPS. [1]

IBM не полностью закрыла SOMobjects. Они были портированы на OS/390 и до сих пор доступны в этой ОС. Документацию можно прочитать на сайте IBM. [2] В 1996 году компания Tandem Computers Inc. приобрела технологию SOMobjects. [3] Tandem был продан Compaq, Compaq был продан Hewlett-Packard. NonStop DOM и некоторые другие технологии в конечном итоге объединились в NonStop CORBA, но текущая документация продуктов NonStop не содержит признаков того, что технология SOM все еще используется в продуктах NonStop.

Угасание [ править ]

Со «смертью» OS/2 в середине 1990-х годов смысл существования SOM/DSOM практически исчез; если бы пользователи не использовали OS/2 на настольных компьютерах, в любом случае не было бы универсальной библиотеки объектов. В 1997 году, когда Стив Джобс вернулся в Apple и завершил многие разработки, включая Copland и OpenDoc , SOM был заменен на Objective-C. [4] уже используется в OPENSTEP (позже станет Mac OS X). Разработка SOM/DSOM сошла на нет и больше не развивается активно, хотя продолжает включаться и использоваться в системах на базе OS/2, таких как ArcaOS . [5]

Несмотря на фактическую смерть OS/2 и OpenDoc, у SOM может быть еще одна ниша: Windows и кроссплатформенная разработка. SOM 3.0 для WinNT стала общедоступной в декабре 1996 года. Причины отсутствия продвижения в этих направлениях выходят за рамки проблем внедрения на рынке. Они связаны с возможностями, упущенными IBM . [6] и деструктивные несовместимые изменения:

  • Первой версией VisualAge C++ для Windows была 3.5. Это была первая и последняя версия с поддержкой SOM. В него была встроена SOM 2.1 и поддержка Direct-to-SOM в компиляторе. В версиях 3.6.5 и более поздних версиях SOM не было.
  • SOMobjects в основном полагался на make-файлы . В VisualAge C++ 4.0 представлены проекты .icc и удалены из поставки компилятор и компоновщик командной строки icc.exe и ilink.exe. Невозможно собрать какой-либо образец SOM DTK «из коробки» с VAC++ 4.0. VisualAge C++ поставляется с собственными примерами, но образцов SOM .icc нет даже в VAC++ 4.0 для OS/2. vacbld.exe, единственный инструмент компиляции командной строки, не поддерживает SOM.
  • Встроенная библиотека объектных компонентов VisualAge C++ (OCL) не основана на SOM. Вероятно, его планировалось портировать на SOM с использованием режима C++ Direct-to-SOM, но в VAC v3.6.5 от этого режима отказались, а у OCL до сих пор нет интерфейса SOM.
  • Ближе к концу 1990-х годов IBM закрыла сайты загрузки SOMobjects и больше никогда их не открывала. SOM 3.0 DTK для WinNT невозможно найти на IBM FTP, несмотря на то, что множество других устаревших материалов лежит свободно. Несмотря на общедоступность SOM 3.0 для WinNT, до конца 2012 года ее было практически невозможно найти.
  • Наконец, IBM никогда не открывала исходный код SOM (как это было с Object REXX ), несмотря на несколько статей. [7] [8] и петиции. [9]

Альтернативные реализации [ править ]

Существуют два проекта реализации SOM с открытым исходным кодом. Одна из них — объектная модель Netlabs (NOM), которая технически одинакова, но несовместима на уровне двоичного кода. Другой — somFree, представляющий собой версию IBM SOM для чистых помещений и совместимый на уровне двоичных файлов. [ нужна цитата ]

Сравнение поддержки скомпилированных библиотек классов [ править ]

Microsoft сравнивала SOM с моделью компонентных объектов Исторически сложилось так, что IBM (COM). Однако с некоторых точек зрения COM вообще не место. С точки зрения преобразований между выпусками, COM находится на процедурном уровне, поэтому таблица 1 в статье RRBC ( двоичная совместимость между выпусками, упомянутая ранее) вообще не содержит столбца COM. Вместо этого SOM сравнивается с:

Большая часть информации в этой таблице по-прежнему применима к современным версиям (по состоянию на 2015 год), за исключением того, что Objective-C 2.0 получает так называемые нехрупкие переменные экземпляра. Некоторые решения остались экспериментальными: SGI Delta/C++ или Sun OBI. Большинство подходов, основанных на одном языке программирования, были постепенно выведены из употребления или никогда не использовались активно таким же образом. Например, плагины браузера Netscape Plugin Application Programming Interface ( NPAPI ) изначально были написаны с использованием Java API (LiveConnect), но позже виртуальная машина Java (JVM) была исключена из цепочки. Это можно рассматривать как замену Java кросс-платформенной объектной моделью компонентов ( XPCOM ). Common Lisp Object System (CLOS) и Smalltalk не являются звеньями цепочки, как Java в LiveConnect. Objective-C также мало известен в этой роли и не продается таким образом, но его среда выполнения является одним из наиболее дружественных к аналогичным вариантам использования.

Общий C++ до сих пор используется в Qt и K Desktop Environment ( KDE ). Qt и KDE известны тем, что описывают усилия, необходимые для поддержания двоичной совместимости без специальной поддержки в инструментах разработки. [10]

Целью GObject было избежать зависимости от компилятора C++, но проблемы с RRBC такие же, как и в обычном C++.

Без специальной среды выполнения многие другие языки программирования будут иметь те же проблемы, например, Delphi , Ada . Это можно проиллюстрировать так называемым беспрецедентным подходом , который использовался для создания версии Delphi 2007, совместимой с двоичным кодом Delphi 2006: Как добавить «опубликованное» свойство, не нарушая совместимости с DCU. Архивировано 8 декабря 2015 г. на Wayback Machine.

Objective-C является наиболее многообещающим конкурентом SOM ​​(хотя он и не позиционируется активно как многоязычная платформа), и SOM предпочтительно следует сравнивать с Objective-C, а не с COM, как это было исторически. Благодаря нехрупким переменным экземпляра в Objective-C 2.0 это лучшая альтернатива среди активно поддерживаемых.

COM , XPCOM активно используются, но они управляют только интерфейсами, а не реализациями, и поэтому не находятся на одном уровне с SOM, GObject и Objective-C . Среда выполнения Windows при более пристальном рассмотрении ведет себя очень похоже на COM. Его описание метаданных основано на .NET, но поскольку WinRT не содержит специальной среды выполнения для решения проблем RRBC, как в Objective-C или SOM, пришлось применить несколько ограничений, которые ограничивают WinRT на процедурном уровне:

Система типов (C++/CX)

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

Компоненты среды выполнения Windows — компоненты среды выполнения Windows в мире .NET

Другое ограничение заключается в том, что нельзя предоставлять общие общедоступные классы или интерфейсы. Полиморфизм недоступен для типов WinRT, и самое близкое к этому — реализация интерфейсов WinRT; вы должны объявить запечатанными все классы, которые общедоступны вашим компонентом среды выполнения Windows.

Сравнение с COM [ править ]

SOM по своей концепции аналогичен COM. Обе системы решают проблему создания стандартного формата библиотеки, который можно вызывать более чем из одного языка. SOM можно считать более надежным, чем COM. COM предлагает два метода доступа к методам объекта, и объект может реализовать либо один из них, либо оба. Первый из них — динамическое и позднее связывание ( IDispatch ) и не зависит от языка, подобно тому, что предлагает SOM. Второй, называемый пользовательским интерфейсом, использует таблицу функций, которая может быть построена на C, но также напрямую совместима с двоичной структурой виртуальной таблицы объектов C++ в компиляторе Microsoft C++. Таким образом, с помощью совместимых компиляторов C++ пользовательские интерфейсы могут быть определены непосредственно как чистые виртуальные классы C++. Полученный интерфейс затем может быть вызван языками, которые могут вызывать функции C через указатели. Пользовательские интерфейсы обменивают надежность на производительность. После публикации интерфейса в выпущенном продукте его нельзя изменить, поскольку клиентские приложения этого интерфейса были скомпилированы с использованием определенного двоичного макета этого интерфейса. Это пример проблема хрупкого базового класса , которая может привести к DLL-аду , поскольку устанавливается новая версия общей библиотеки, и все программы, основанные на более старой версии, могут перестать работать должным образом. Чтобы предотвратить эту проблему, разработчики COM должны помнить, что никогда не следует изменять интерфейс после его публикации, а новые интерфейсы необходимо определять, если требуются новые методы или другие изменения.

SOM предотвращает эти проблемы, предоставляя только позднее связывание, что позволяет компоновщику во время выполнения перестроить таблицу на лету. Таким образом, изменения в базовых библиотеках разрешаются при их загрузке в программы, хотя это приводит к снижению производительности.

SOM также гораздо более надежен с точки зрения полной поддержки широкого спектра объектно-ориентированных языков. В то время как базовый COM по сути определяет урезанную версию C++ для программирования, SOM поддерживает почти все распространенные функции и даже некоторые более экзотические. Например, SOM поддерживает множественное наследование , метаклассы и динамическую диспетчеризацию . Некоторые из этих функций отсутствуют в большинстве языков, что привело к тому, что большинство систем, подобных SOM/COM, стали проще за счет поддержки меньшего количества языков. Однако полная гибкость многоязычной поддержки была важна для IBM, поскольку они прилагали большие усилия для поддержки как Smalltalk ( единое наследование и динамическая диспетчеризация ), так и C++ ( множественное наследование и фиксированная диспетчеризация ).

Наиболее заметное различие между SOM и COM — это поддержка наследования — в COM его нет. Может показаться странным, что Microsoft создала систему объектных библиотек, которая не могла поддерживать одну из самых фундаментальных концепций объектно-ориентированного программирования; Основная причина этого заключается в том, что трудно определить, где находится базовый класс в системе, где библиотеки загружаются в потенциально случайном порядке. COM требует, чтобы программист указал точный базовый класс во время компиляции, что делает невозможным вставку других производных классов в середину (по крайней мере, в других библиотеках COM).

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

Хотя IBM противопоставляла SOM и COM, они не были взаимоисключающими. В 1995 году Novell представила ComponentGlue. [11] технологию OpenDoc для Windows. Эта технология предоставила различные средства для интеграции компонентов на основе COM и SOM. В частности, объекты SOM могут быть доступны приложениям OLE2 либо с помощью моста позднего связывания (на основе IDispatch), либо с помощью COM-интерфейсов, имеющих более высокую производительность. По сути, классы SOM таким образом реализуют COM-интерфейсы.

Почти все считали, что гибкость, предлагаемая SOM, стоит затраченных усилий. [ нужна цитата ] , но подобные системы, такие как Sun Microsystems от Distributed Objects Everywhere , также поддерживают полное наследование. NeXT Портативные распределенные объекты позволили избежать этих проблем благодаря надежной системе управления версиями, позволяя авторам библиотек поставлять новые версии вместе со старыми, тем самым гарантируя обратную совместимость при небольших затратах на дисковое пространство.

См. также [ править ]

Ссылки [ править ]

  1. ^ SOM и Object REXX доктора Уиллиса Боутона (август 2004 г.)
  2. ^ «Документация по SOMobjects для OS/390» .
  3. ^ «Tandem использует технологию IBM SOMobjects для вычислений с распределенными объектами» . Архивировано из оригинала 05 марта 2016 г. Проверено 2 мая 2015 г.
  4. ^ Ира Р. Форман и Скотт Дэнфорт (1999). Использование метаклассов в работе . Аддисон-Уэсли. ISBN  0-201-43305-2 .
    Глава 11 «Двоичная совместимость между версиями», страница 246
    Статью с идентичным названием и похожим содержанием того же автора можно найти в Интернете: Двоичная совместимость между выпусками. Архивировано 3 октября 2015 г. на Wayback Machine.
  5. ^ «Список классов WPS ArcaOS 5.0» . Проверено 3 сентября 2020 г.
  6. ^ Затерянные в саду Роджера Сешнса (август 1996 г.)
  7. ^ Небольшая вещь SOM для разработчиков Linux от Эстер Шиндлер (февраль 2008 г.)
  8. ^ Стивен Дж. Воган-Николс (8 февраля 2008 г.). «Возрождение лучших возможностей OS/2 для настольных компьютеров Linux» . Архивировано из оригинала 17 апреля 2010 г.
  9. ^ Петиция OS/2 , второй тур (2007–2010 гг.)
  10. ^ «Политики/проблемы двоичной совместимости с C++ — Wiki сообщества KDE» . сообщество.kde.org .
  11. ^ «Novell выпустит новую версию разработчика OpenDoc™ | Micro Focus» . www.novell.com .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: D8247259B16536C03B7DD5D083B5F3D9__1712374740
URL1:https://en.wikipedia.org/wiki/System_Object_Model
Заголовок, (Title) документа по адресу, URL1:
IBM System Object Model - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)