tanszek:oktatas:iss_t:object_request_broker
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| tanszek:oktatas:iss_t:object_request_broker [2026/03/01 17:48] – [Marshalling and Unmarshalling] knehez | tanszek:oktatas:iss_t:object_request_broker [2026/03/01 17:58] (current) – [Object Request Broker (ORB)] knehez | ||
|---|---|---|---|
| Line 20: | Line 20: | ||
| Conceptually: | Conceptually: | ||
| - | Client -> ORB -> Remote Object | + | < |
| - | + | sequenceDiagram | |
| - | Remote Object | + | Client->>ORB: Method call |
| + | ORB->> | ||
| + | RemoteObject-->>ORB: Return result | ||
| + | ORB-->>Client: Return response | ||
| + | </ | ||
| The ORB handles all low-level details such as transport protocols and data encoding. | The ORB handles all low-level details such as transport protocols and data encoding. | ||
| + | |||
| + | ---- | ||
| ==== Distributed Objects Concept ==== | ==== Distributed Objects Concept ==== | ||
| Line 39: | Line 45: | ||
| This design reflects classic OOP thinking in distributed systems. | This design reflects classic OOP thinking in distributed systems. | ||
| - | + | ---- | |
| - | ==== 4. IDL – Interface Definition Language ==== | + | ==== IDL – Interface Definition Language ==== |
| CORBA introduced a language-independent interface definition mechanism called IDL (Interface Definition Language). | CORBA introduced a language-independent interface definition mechanism called IDL (Interface Definition Language). | ||
| Line 64: | Line 70: | ||
| IDL was one of the early solutions to cross-language service integration. | IDL was one of the early solutions to cross-language service integration. | ||
| + | CORBA IDL supports interface inheritance, | ||
| + | This enables the reuse of method definitions and supports polymorphism in distributed systems. | ||
| + | |||
| + | Below is an example from a simplified employee management system. | ||
| + | |||
| + | < | ||
| + | module Company { | ||
| + | |||
| + | interface Person { | ||
| + | | ||
| + | long getId(); | ||
| + | }; | ||
| + | |||
| + | interface Employee : Person { | ||
| + | | ||
| + | void setSalary(in double newSalary); | ||
| + | }; | ||
| + | |||
| + | interface Manager : Employee { | ||
| + | void addTeamMember(in Person p); | ||
| + | }; | ||
| + | |||
| + | }; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ---- | ||
| ==== Marshalling and Unmarshalling ==== | ==== Marshalling and Unmarshalling ==== | ||
| CORBA introduced standardized marshalling and unmarshalling mechanisms. | CORBA introduced standardized marshalling and unmarshalling mechanisms. | ||
| + | |||
| + | This mechanism is essential in distributed systems because memory representations differ across: | ||
| + | |||
| + | * programming languages | ||
| + | * operating systems | ||
| + | * CPU architectures (32-bit vs 64-bit, little-endian vs big-endian) | ||
| + | * Without marshalling, | ||
| **Marshalling**: | **Marshalling**: | ||
| Line 74: | Line 114: | ||
| reconstructing the original objects from the serialized data on the receiving side. | reconstructing the original objects from the serialized data on the receiving side. | ||
| - | This ensures that: | + | This ensures that data types remain consistent across systems, different hardware architectures can communicate, |
| + | ---- | ||
| - | * data types remain consistent across systems, | ||
| - | * different hardware architectures can communicate, | ||
| - | * programming language differences are abstracted. | ||
| - | |||
| - | Modern equivalents include: | ||
| - | |||
| - | * JSON serialization (REST), | ||
| - | * Protocol Buffers (gRPC), | ||
| - | * binary encoding in RPC frameworks. | ||
| ==== Service Registry Concept ==== | ==== Service Registry Concept ==== | ||
| Line 100: | Line 132: | ||
| Services were browsable in a uniform manner, which was advanced for its time. | Services were browsable in a uniform manner, which was advanced for its time. | ||
| + | ---- | ||
| ==== Known Implementations ==== | ==== Known Implementations ==== | ||
| Well-known CORBA implementations include: | Well-known CORBA implementations include: | ||
| - | |||
| * ORBix | * ORBix | ||
| * VisiBroker | * VisiBroker | ||
| Line 109: | Line 141: | ||
| Java-based CORBA implementations | Java-based CORBA implementations | ||
| - | |||
| * Java RMI (conceptually related, though not CORBA-based) | * Java RMI (conceptually related, though not CORBA-based) | ||
| CORBA support has historically been included in enterprise application servers such as: | CORBA support has historically been included in enterprise application servers such as: | ||
| - | |||
| * JBoss | * JBoss | ||
| * IBM WebSphere | * IBM WebSphere | ||
| Although less common today, CORBA is still present in: | Although less common today, CORBA is still present in: | ||
| - | |||
| * banking systems, | * banking systems, | ||
| * telecommunications, | * telecommunications, | ||
| Line 124: | Line 153: | ||
| * legacy enterprise infrastructures. | * legacy enterprise infrastructures. | ||
| + | ---- | ||
| ==== Why CORBA Declined ==== | ==== Why CORBA Declined ==== | ||
| Line 134: | Line 164: | ||
| * verbose tooling | * verbose tooling | ||
| * rise of simpler HTTP-based APIs (REST) | * rise of simpler HTTP-based APIs (REST) | ||
| + | |||
| + | Tutorial: https:// | ||
tanszek/oktatas/iss_t/object_request_broker.1772387311.txt.gz · Last modified: 2026/03/01 17:48 by knehez
