Говоря о CORBA-объектах, иногда бывает сложно понять, что считать CORBA-объектом. Дело в том, что CORBA-объект – это не объект в понимании языков программирования. Эта абстракция существует на другом логическом уровне, нежели исходный код на C++ или Java. Код на том или ином языке программирования создается вручную или же посредством кодогенераторов. И если рассуждать на уровне языков программирования, то получается, что если нет кода, то не может быть и объекта.
В случае с CORBA-объектами это не так. CORBA-объект может существовать даже тогда, когда нет ни единой строки кода, работающей или использующей этот объект. CORBA-объект может определяться лишь iDL-описанием и рядом таких концепций как, например, репозитарий реализаций.
Возникает естественный вопрос: зачем разработчику вообще нужны некие абстрактные концепции, когда его задача – писать приложения на каком-либо языке программирования и при этом, естественно, манипулировать конкретными переменными? Ответ является несколько неожиданным. Наряду со своей абстрактной идеологией CORBA-объекты реально существуют. Настолько реально, что программист может вызвать метод, который возвращает true или false и который проверяет наличие явно указанного CORBA-объекта. Эти объекты не занимают место в оперативной памяти, они не связаны с созданием TCP/IP соединения, для них даже может отсутствовать какая-либо информация в базах данных или файлах, но для них предусмотрена явная команда дляз создания и последовательность действий, приводящая к тому, что вы можете четко сказать, что «теперь этот объект уже не существует».
В момент создания CORBA-объекта с ним сопоставляется уникальный идентификатор, имеющий произвольный вид. Этот идентификатор должен уникальным образом идентифицировать CORBA-объект среди всех других CORBA-объектов распределенной системы.
Архитекторы CORBA решили, что связь между клиентами и серверами в распределенной системе должна существовать на логическом, а не на физическом уровне. Другими словами, чтобы клиент мог получить ссылку на конкретный CORBA-объект и поддерживать эту связь столько, сколько необходимо, совсем не обязательно иметь работающее клиентское или серверное приложение и занимать сетевые ресурсы. Разработчик такой системы создает объекты для того, чтобы их можно было зарегистрировать в системах поиска объектов (Naming Service или Trading Service), после чего клиент может присоединиться к ним тем или иным способом. Процесс установки связи клиента с требуемым серверным объектом сам по себе не обеспечивает возможности обратиться к методам этого объекта. Наличие у клиента объектной ссылки как обобщенного указателя на объект нужно рассматривать как потенциальную возможность доступа к реальной функциональности и состоянию серверного объекта. Очень важным обстоятельством является то, что CORBA гарантирует поддержание связи именно с конкретным объектом.
Объекты CORBA следует воспринимать как экземпляры некоторого метакласса, причем и метакласс, и сами объекты существуют вне связи с каким-либо приложением или языком программирования. Этот метакласс в CORBA связан лишь с интерфейсом на IDL.