Common Object Request Broker Architecture: Difference between revisions

Content deleted Content added
m linking
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 28 templates: hyphenate params (10×);
Line 44:
| title=History of CORBA
| publisher=[[Object Management Group]]
| accessdateaccess-date=12 March 2017}}</ref><ref>{{cite web
| url=http://www.corba.org/history_of_corba.htm
| title=History of CORBA
| publisher=[[Object Management Group]]
| accessdateaccess-date=4 June 2017}}</ref>
{| class="wikitable"
|-
Line 122:
| publisher=[[Dr. Dobb's Journal]]
| date=1 September 2004
| accessdateaccess-date=13 March 2017}}</ref> It was introduced with CORBA 3 and it describes a standard application framework for CORBA components. Though not dependent on "language dependent [[Enterprise Java Beans]] (EJB)", it is a more general form of EJB, providing four component types instead of the two that EJB defines. It provides an abstraction of entities that can provide and accept services through well-defined named interfaces called ''ports''.
 
The CCM has a component container, where software components can be deployed. The container offers a set of services that the components can use. These services include (but are not limited to) [[Notification system|notification]], [[authentication]], [[persistence (computer science)|persistence]] and [[transaction processing]]. These are the most-used services any distributed system requires, and, by moving the implementation of these services from the software components to the component container, the complexity of the components is dramatically reduced.
Line 177:
; Data-typing: CORBA provides flexible data typing, for example an "ANY" datatype. CORBA also enforces tightly coupled datatyping, reducing human errors. In a situation where Name-Value pairs are passed around, it is conceivable that a server provides a number where a string was expected. CORBA Interface Definition Language provides the mechanism to ensure that user-code conforms to method-names, return-, parameter-types, and exceptions.
 
; High tunability: Many implementations (e.g. ORBexpress (Ada, C++, and Java implementation)<ref>{{cite web|title=ORBexpress : Real-time CORBA ORB|url=http://www.ois.com/Products/communications-middleware.html}}</ref> and OmniORB (open source C++ and Python implementation))<ref>{{cite web|title=omniORB : Free CORBA ORB|url=http://omniorb.sourceforge.net|work=sourceforge.net|accessdateaccess-date=9 January 2014}}</ref> have options for tuning the threading and connection management features. Not all ORB implementations provide the same features.
 
; Freedom from data-transfer details: When handling low-level connection and threading, CORBA provides a high level of detail in error conditions. This is defined in the CORBA-defined standard exception set and the implementation-specific extended exception set. Through the exceptions, the application can determine if a call failed for reasons such as "Small problem, so try again", "The server is dead" or "The reference does not make sense." The general rule is: Not receiving an exception means that the method call completed successfully. This is a very powerful design feature.
Line 184:
 
== Problems and criticism ==
While CORBA delivered much in the way code was written and software constructed, it has been the subject of criticism.<ref name="CORBA_trouble">{{cite web |url=http://www.davidchappell.com/articles/article_Trouble_CORBA.html |archiveurlarchive-url=https://web.archive.org/web/20121203074323/http://www.davidchappell.com/articles/article_Trouble_CORBA.html |archivedatearchive-date=3 December 2012 |title=Trouble with CORBA |last=Chappel |first=David |date=May 1998 |accessdateaccess-date=15 March 2010 |publisher=davidchappel.com}}</ref>
 
Much of the criticism of CORBA stems from poor implementations of the standard and not deficiencies of the standard itself. Some of the failures of the standard itself were due to the process by which the CORBA specification was created and the compromises inherent in the politics and business of writing a common standard sourced by many competing implementors.
Line 192:
 
;Location transparency
:CORBA's notion of ___location transparency has been criticized; that is, that objects residing in the same [[address space]] and accessible with a simple [[function call]] are treated the same as objects residing elsewhere (different processes on the same machine, or different machines). This is a fundamental design flaw,<ref>{{cite journal|last=Waldo|first=Jim|author2=Geoff Wyant |author3=Ann Wollrath |author4=Sam Kendall |title=A Note on Distributed Computing|journal=Sun Microsystem Laboratories|date=November 1994|url=http://www.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/smli_tr-94-29.pdf|accessdateaccess-date=4 November 2013}}</ref>{{Failed verification|date=November 2017}} as it makes all object access as complex as the most complex case (i.e., remote network call with a wide class of failures that are not possible in local calls). It also hides the inescapable differences between the two classes, making it impossible for applications to select an appropriate use strategy (that is, a call with 1[[µs]] latency and guaranteed return will be used very differently from a call with 1s latency with possible transport failure, in which the delivery status is potentially unknown and might take 30s to time out).
;Design and process deficiencies
:The creation of the CORBA standard is also often cited for its process of [[design by committee]]. There was no process to arbitrate between conflicting proposals or to decide on the hierarchy of problems to tackle. Thus the standard was created by taking a union of the features in all proposals with no regard to their coherence.<ref name="ACM_fall"/> This made the specification complex, expensive to implement entirely, and often ambiguous.
Line 201:
:Through its history, CORBA has been plagued by shortcomings in poor ORB implementations. Unfortunately many of the papers criticizing CORBA as a standard are simply criticisms of a particularly bad CORBA ORB implementation.
 
:CORBA is a comprehensive standard with many features. Few implementations attempt to implement all of the specifications,<ref name="ACM_fall">{{cite journal |first=Michi |last=Henning |url=http://queue.acm.org/detail.cfm?id=1142044 |title=The Rise and Fall of CORBA |publisher=[[Association for Computing Machinery]] |journal=[[ACM Queue]] |volume=4 |issue=5 |date=30 June 2006 |accessdateaccess-date=15 March 2010}}</ref> and initial implementations were incomplete or inadequate. As there were no requirements to provide a reference implementation, members were free to propose features which were never tested for usefulness or implementability. Implementations were further hindered by the general tendency of the standard to be verbose, and the common practice of compromising by adopting the sum of all submitted proposals, which often created APIs that were incoherent and difficult to use, even if the individual proposals were perfectly reasonable.{{Citation needed|date=February 2007}}
 
:Robust implementations of CORBA have been very difficult to acquire in the past, but are now much easier to find. The SUN Java SDK comes with CORBA built-in. Some poorly designed implementations have been found to be complex, slow, incompatible and incomplete. Robust commercial versions began to appear but for significant cost. As good quality free implementations became available the bad commercial implementations died quickly.
Line 270:
*{{cite book |first=Thomas J. |last=Mowbray |first2=Raphael C. |last2=Malveau |title=CORBA Design Patterns |publisher=John Wiley & Sons |ISBN=0-471-15882-8 |url-access=registration |url=https://archive.org/details/corbadesignpatte00mowb }}
*{{cite book |first=Robert |last=Orfali |first2=Dan |last2=Harkey |first3=Jeri |last3=Edwards |title=Instant CORBA |url=https://archive.org/details/instantcorba00orfa |url-access=registration |publisher=John Wiley & Sons |ISBN=0-471-18333-4}}
* {{cite book |last=Harmon |first=Paul |first2=William |last2=Morrissey |year=1996 |title=The Object Technology Casebook |publisher=John Wiley & Sons |ISBN=0-471-14717-6 |authorlinkauthor-link=Paul Harmon (management author) |url-access=registration |url=https://archive.org/details/objecttechnology00harm }}
 
== External links ==