[ Pobierz całość w formacie PDF ]
.Ka¿dy u¿yty tu jêzyk wymaga odwzorowania.Patrz¹c z perspektywy historycznej,pierwsze pojawi³y siê odwzorowania jêzyków C i Smalltalk, zaœ dzisiajnajbardziej rozpowszechnione i rozwijane s¹ prawdopodobnie odwzorowania dlajêzyków C++ i Java.Nie ma potrzeby tworzenia uniwersalnego wsparcia o pe³nej funkcjonalnoœci dlawszystkich jêzyków, jeœli np.wersja Emacs Lisp mo¿e byæ u¿yta tylko wprogramie klienta.Mo¿e siê okazaæ, ¿e ³atwiej u¿yæ jêzyków dynamicznych lubskryptowych, takich jak np.Python lub Lisp do obs³ugi obiektów w dynamiczniewzywanych interfejsach (DII, czyli Dynamic Invoked Interface), poniewa¿ nierozpoznaje siê w nich typów wartoœci w fazie dzia³ania programu — co jestca³kowicie zgodne z DII.Jedno odwzorowanie jêzyka Python o nazwie PyORBitwygl¹da ca³kowicie wydajnie tylko w zastosowaniu dla DII.Formalne specyfikacje odwzorowañ podane przez konsorcjum OMG dotycz¹nastêpuj¹cych jêzyków:Ada,C,C++,COBOL,Java,Smalltalk,Common LispJe¿eli ktoœ ma zamiar u¿ywaæ któregokolwiek z powy¿szych odwzorowañ, to wartopobraæ pe³n¹ dokumentacjê ropozpowszechnian¹ przez konsorcjum OMG w postacidokumentów w formatach Adobe PDF i Postscript(http://www.omg.org/technology/documents/formal/corba_language_mapping_specifica.htm).Istniej¹ tak¿e odwzorowania dla innych jêzyków, które nie zosta³y oficjalniezaakceptowane przez MOG, a by³y opracowane w sposób nieco mniej sformalizowanyprzez zainteresowane organizacje.Nale¿¹ do nich:Odwzorowanie jêzyka Eiffel na IDL w architekturze CORBA,Odwzorowanie IDL na jêzyk Python (http://orbit-python.sault.org/),Odwzorowanie IDL na jêzyk Erlang(http://www.erlang.se/doc/doc-4.7.3/lib/orber-2.0/doc/html/ch_erl_map.html),Obs³uga jêzyka Haskell w architekturze CORBA(http://www.cse.unsw.edu.au/~chak/haskell/gnome/gnome-small/node11.html),Odwzorowanie jêzyka Perl w architekturze CORBA(http://people.redhat.com/otaylor/corba/orbit.html),Implementacja architektury CORBA po stronie klienta Emacs o nazwie corba.el(http://www.lysator.liu.se/~lenst/corba.el).Sk³adniki odwzorowania jêzykaOdwzorowanie zapewnia œrodki s³u¿¹ce do wyra¿ania nastêpuj¹cych informacji wdanym jêzyku:wszystkich podstawowych typów danych wystêpuj¹cych w IDL,wszystkich zbudowanych typów danych wystêpuj¹cych w IDL,odwo³añ do sta³ych zadeklarowanych w IDL,odwo³añ do obiektów zadeklarowanych w IDL,wezwañ operacji, ³¹cznie z transmisj¹ parametrów i odbiorem wyników,wyj¹tków, ³¹cznie z tymi, które opisuj¹, co siê dzieje przy obs³udze wyj¹tku,oraz transmisji parametrów opisuj¹cych wyj¹tki,dostêpu do atrybutów,sygnatur dla operacji zdefiniowanych w ORB, takich jak np.w DII adapterówobiektów itp.Dobre odwzorowanie pozwala programistom na dostêp do wszystkich funkcji ORB iwyra¿enie ich w sposób wygodny dla danego jêzyka programowania.Je¿eli jêzyknie obs³uguje sam z siebie funkcjonalnoœci IDL, tak jak np.obs³uga wyj¹tków wjêzyku C, to odwzorowanie mo¿e byæ w takim przypadku nieco zagmatwane.Celem normalizacji odwzorowania jest zapewnienie, ¿e ten sam kod mo¿e byæstosowany w dowolnym poœredniku ORB.Oprócz tego, bardzo irytuj¹ca by³abysytuacja, gdyby np.kod w jêzyku C++ przeznaczony do poœrednika omniORB niemóg³ byæ zastosowany z poœrednikiem TAO i ca³a aplikacja wymaga³by gruntownejprzeróbki.Odwzorowania dla jêzyka CW tym podrozdziale zapoznamy siê z ró¿nymi odwzorowaniami IDL dla jêzyka C.Wiele z nich wykorzystuje IDL zastosowany w aplikacji obs³uguj¹cejwypo¿yczalniê p³yt DVD.W rzeczywistoœci poznamy jedynie niewielki u³amek tego,co jest wyra¿ane za pomoc¹ standardowego odwzorowania jêzyka C, ale nawet topoka¿e sposób dzia³ania ca³oœci.Podstawowe odwzorowania typów danych IDLPodstawowe odwzorowania typów danych wystêpuj¹cych w architekturze CORBA natypy jêzyka C s¹ nastêpuj¹ce:Typ IDLOdwzorowanie typu w CshortCORBA_shortunsigned shortCORBA_unsigned_shortlongCORBA_longunsigned longCORBA_unsigned_longlong longCORBA_long_longunsigned long longCORBA_unsigned_long_longfloatCORBA_floatdoubleCORBA_doublelong doubleCORBA_long_doublebooleanCORBA_booleancharCORBA_charwcharCORBA_wcharZamiast korzystaæ z konstrukcji w rodzaju long some_long_variable, w programachtrzeba u¿ywaæ konstrukcji CORBA_long some_long_variable.Powoduje to u¿yciespecyficznego typu danych wymaganego w architekturze CORBA, a nie pozostawieniewyboru dla konkretnej implementacji jêzyka C.Ten problem mo¿e nie byæ a¿ takbardzo wa¿ny w przypadku 32-bitowej architektury wykorzystuj¹cej procesoryfirmy Intel, gdzie wiêkszoœæ typów jest w zasadzie zgodna z typami stosowanymiw CORBA, ale na pewno warto o nim pamiêtaæ przy przejœciu do procesorów64-bitowych, gdzie typy „rodzime” s¹ przewa¿nie tak¿e 64-bitowe
[ Pobierz całość w formacie PDF ]