Archive for the ‘unix’ Category

libraries in the Unix sense

środa, luty 20th, 2008
»

RAM sharing can be accomplished by using position independent code as in Unix, which leads to a complex but flexible architecture, or by using position dependent code as in Windows and OS/2. These systems make sure, by various tricks like pre-mapping the address space and reserving slots for each DLL, that code has a great probability of being shared. Windows DLLs are not shared libraries in the Unix sense. The rest of this article concentrates on aspects common to both variants. An important difference between remote procedure calls and local calls is that remote calls can fail because of unpredictable network problems. Also, callers generally must deal with such failures without knowing whether the remote procedure was actually invoked. Idempotent procedures (those which have no additional effects if called more than once) are easily handled, but enough difficulties remain that code which calls remote procedures is often confined to carefully written low-level subsystem. CORBA (more precisely, GIOP) uses binary formats in order to transmit data. This is more efficient than a textual format (such as XML), since the amount of data to be transmitted is smaller and less processing has to be done to encode and decode data. However, it has been difficult to get such binary messages through firewalls. At one time it was difficult even to force implementations to use a single standard port — they tended to pick multiple random ports instead. Due to such difficulties, some users have made increasing use of web services instead of CORBA. These communicate using XML via port 80, which is normally left open for web browsing via HTTP. Recent CORBA implementations, though, support SSL and can be easily configured to work on a single port. Also, more CORBA-friendly firewalls are now commercially available.