³×¹øÂ° ¸¶´ç.
CORBA Ȱ¿ë ¹æ¾È ¹× ¹Ì·¡
7¸· CORBA ±¸Ãà °¡À̵å
¼ö³â°£ ±¹³»ÀÇ Àü»ê ȯ°æÀ» Á¢ÇÏ¸é¼ Ç×»ó
´À³¢´Â Á¡Àº ´ë´Ù¼öÀÇ °³¹ßÀÚµéÀÌ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÃßÁøÇϰųª ±âÁ¸ÀÇ
½Ã½ºÅÛÀ» ¾÷±×·¹À̵åÇÒ ¶§ °³¹ßµÉ ½Ã½ºÅÛ¿¡ ´ëÇÑ ±â´ë¶§¹®ÀÎÁö´Â ¸ô¶óµµ
±âÁ¸ÀÇ ½Ã½ºÅÛÀ̳ª Àû¿ëÇÏ·Á´Â ½ÇÁ¦ »óȲ¿¡ ´ëÇØ¼´Â ¼ÒȦÈ÷ ´Ù·é´Ù´Â
»ç½ÇÀÌ´Ù.
½ÇÁ¦ ÀÌ·¯ÇÑ ½Ç¼ö·Î ÀÎÇØ ºÒÇÊ¿äÇÑ °æºñ¸¦
ÁöÃâÇÏ´Â »ç·Ê°¡ Çã´ÙÇÏ´Ù. ¿¹¸¦
µé¸é, ÇöÀç
µ¥ÀÌŸ¿Í ÇâÈÄ ¿¹»óµÇ´Â µ¥ÀÌŸ¸¦ ó¸®ÇÏ´Â µ¥ ÃæºÐÇÑ µ¥ÀÌŸº£À̽º
½Ã½ºÅÛÀ¸·Î´Â I»çÀÇ
Á¦Ç°À̸é ÃæºÐÇÔ¿¡µµ ±»ÀÌ ºñ½Ñ °¡°ÝÀÇ ´Ù¸¥ Á¦Ç°À» ±¸ÀÔÇϰí ÇØ´ç
Á¦Ç°ÀÇ ±â´ÉÀ» 10%µµ
Ȱ¿ëÇÏÁö ¸øÇÏ´Â °æ¿ì°¡ Çã´ÙÇÏ´Ù. ÀÌ·¯ÇÑ
»óȲÀÇ ¹è°æ¿¡´Â " ¾îÂ÷ÇÇ ³» µ·µµ ¾Æ´Ñµ¥ ¹¹,
¾îÂ÷ÇÇ ³ªÁß¿¡ ±¦È÷ ¹®Á¦°¡ »ý±â¸é
°ñÄ¡ ¾ÆÇÁ´Ï±î ÃÖ°í·Î ±â´ÉÀÌ ¸¹°í ºñ½Ñ °É·Î »çÁö ¹¹!
" ¶ó´Â ½ÄÀÇ ºÐÀ§±âµµ ÀÖ°ÚÁö¸¸
±× ¹è°æ¿¡´Â ±¸ÃàÇÏ·Á´Â ȯ°æÀ» Á¤È®È÷ ÀÌÇØÇÏÁö ¸øÇϴµ¥ ÀÖ´Ù.
¿Ö³ÄÇϸé Á¤»óÀûÀÎ ¿£Áö´Ï¾î°¡ ÇöÀçÀÇ
±¸Ãà ȯ°æÀ» Á¤È®È÷ ÀÌÇØÇϰí ÀÖ´Ù¸é ´ç¿¬È÷ ±×¿Í °°Àº °ú¼Òºñ ±¸¸Å´Â
ÇÏÁö ¾ÊÀ» °ÍÀ̱⠶§¹®ÀÌ´Ù.
CORBA´Â ÀÛÀº ±Ô¸ðÀÇ
ȯ°æº¸´Ù´Â ´ë±Ô¸ð ºÐ»ê ȯ°æ¿¡ ÀûÇÕÇÏ´Ù. CORBA¸¦
ÀûÀº ±Ô¸ð¿¡ ´Â Àû¿ëÇÒ ¼ö ¾ø´Ù¶ó´Â ¸»Àº ¾Æ´Ï´Ù.
´ÜÁö ´Ù¾çÇÑ Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î·Î
ÀÌ·ç¾îÁø ´ë±Ô¸ð ºÐ»ê ȯ°æ¿¡¼ ´õ¿í Áø°¡¸¦ ¹ßÈÖÇÑ´Ù´Â ÀǹÌÀÌ´Ù.
µû¶ó¼ ÀÌ·¯ÇÑ ´ë±Ô¸ð ½Ã½ºÅÛÀ»
±¸ÃàÇÏ·Á¸é °¡Àå Áß¿äÇÑ ºÎºÐÀÌ Çö »óȲÀ» ºÐ¼®ÇÏ´Â °úÁ¤ÀÌ´Ù.
ÀÌ °úÁ¤ÀÇ ¼ºÆÐ°¡ ½Ã½ºÅÛ ±¸ÃàÀÇ
¼ºÆÐ¸¦ Á¿ìÇØµµ °ú¾ðÀº ¾Æ´Ï´Ù. µû¶ó¼
7¸·¿¡¼´Â
CORBA¸¦ »ç¿ëÇÏ´Â
ÀÌÀ¯¸¦ ºñ·ÔÇÏ¿© »ç¿ë ½Ã³ª¸®¿À , ±¸Ãà
¹æ¹ý·Ð µî ´ë±Ô¸ð ½Ã½ºÅÛ ±¸Ãà¿¡ ÇÊ¿äÇÑ »çÇ׵鿡 ´ëÇØ Á¤¸®ÇØ º»´Ù.
1Àå CORBA¸¦
»ç¿ëÇÏ´Â ÀÌÀ¯
¾Õ¼ CORBA Ç¥ÁØ¿¡
´ëÇØ ÀÚ¼¼È÷ »ìÆìº¸¾Ò´Ù. ±×·¸´Ù¸é
µµ´ëü CORBA¸¦
»ç¿ëÇÏ´Â ÀÌÀ¯°¡ ¹«¾ùÀϱî? ´Ù½Ã
¸»ÇØ, CORBA¸¦
»ç¿ëÇØ¼ ¾ò´Â À̵æÀº ¹«¾ùÀϱî? ½ÇÁ¦
CORBA¸¦
»ç¿ëÇÏ¿© ¾ò´Â À̵æÀ» ½Ã½ºÅÛ °³¹ßÀÚ¿Í °³¹ßµÈ ½Ã½ºÅÛÀ» ÀÌ¿ëÇÏ´Â
»ç¿ëÀÚ Ãø¸é¿¡¼ »ìÆìº¸ÀÚ.
CORBA´Â ½Ã½ºÅÛ
ÅëÇÕ ±â¼úÀ̱⠶§¹®¿¡ º¹ÀâÇÑ ½Ã½ºÅÛµéÀ» ó¸®ÇØ¾ß ¸¸ ÇÏ´Â ½Ã½ºÅÛ
°³¹ßÀÚµéÀÌ °¡Àå ¸¹Àº È¿°ú¸¦ ¾ò´Â´Ù. À̵éÀÌ
¾òÀ» ¼ö ÀÖ´Â È¿°ú´Â ´ÙÀ½°ú °°´Ù.
½Ã½ºÅÛÀ» »õ·Ó°Ô µðÀÚÀÎÇϰųª ±âÁ¸ÀÇ
½Ã½ºÅÛÀ» È®ÀåÇÒ °æ¿ì, °¡Àå
¹®Á¦°¡ µÇ´Â ºÎºÐÀÌ ¹Ù·Î ±âÁ¸ÀÇ ½Ã½ºÅÛµéÀ» ¾î¶»°Ô »ç¿ëÇÒ °ÍÀΰ¡
ÇÏ´Â °ÍÀÌ´Ù. ½ÇÁ¦·Î,
±âÁ¸¿¡ ±¸ÃàµÇ¾î ÀÖ´Â °ü°èÇü
µ¥ÀÌŸº£À̽ºÀÇ Àç»ç¿ëÀ̳ª »ç¿ëÇÏ´ø À©µµ¿ì ÅøÀÇ Àç»ç¿ë ¹®Á¦µéÀº
°¡Àå ºó¹øÈ÷ ¹ß»ýÇÏ´Â »óȲÀÌ´Ù. ÀÌ·¯ÇÑ
»óȲ¿¡¼ CORBA´Â
±âÁ¸ÀÇ ½Ã½ºÅÛÀ» º¯°æÇÏÁö ¾Ê°í ±×´ë·Î »ç¿ëÇÏ°Ô ÇØ ÁØ´Ù.
ÀÌ´Â CORBAÀÇ
IDLÀ» ÀÌ¿ëÇÏ¿©
±âÁ¸ ½Ã½ºÅÛ°ú Åë½ÅÀ» ÇϱâÀ§ÇÑ ²®µ¥±â °´Ã¼¸¦ ÀÛ¼ºÇÔÀ¸·Î¼ ½±°Ô
±¸ÇöÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ
±â¼úÀ» 'CORBA Æ÷Àå(Wrapping)
±â¼ú' À̶ó ÇÑ´Ù(
ÀÌ ±â¼ú¿¡ ´ëÇØ¼´Â MowbrayÀÇ
'The Essential CORBA'¶ó´Â
Ã¥¿¡¼ ÀÚ¼¼È÷ ´Ù·ç°í ÀÖ´Ù).
½Ã½ºÅÛ °³¹ßÀÚµéÀº CORBA°´Ã¼¸¦
´Ù·ç±â À§ÇØ ¿©·¯°¡Áö ±â´ÉÀ» ÇÊ¿ä·Î ÇÑ´Ù. °¡·É,
µ¥ÀÌŸº£À̽º³ª Æ®·»Á§¼Ç ,
µ¿½Ã¼º Á¦¾î µîÀº º¹ÀâÇÑ ½Ã½ºÅÛÀ»
±¸ÃàÇÒ ¶§ ÇʼöÀûÀÎ ±â´ÉÀÌ´Ù. ½Ã½ºÅÛ
°³¹ßÀÚ´Â ÀÌ·¯ÇÑ ±â´ÉµéÀ» ÀÏÀÏÀÌ ÀÛ¼ºÇÒ Çʿ䰡 ¾ø´Ù.
¿Ö³ÄÇϸé CORBA
´Â CORBA
°´Ã¼ ¼ºñ½º¸¦ ÅëÇØ CORBA°´Ã¼¸¦
´Ù·ç´Â µ¥ ÇÊ¿äÇÑ ¼ºñ½ºµéÀ» Á¦°øÇϱ⠶§¹®ÀÌ´Ù.
½Ã½ºÅÛ °³¹ßÀÚµéÀº CORBA
¼ºñ½º¸¦ ÅëÇØ °íµµÀÇ »ý»ê¼ºÀ»
º¸Àå¹ÞÀ» ¼ö ÀÖ´Ù.
CORBA ÀÀ¿ë ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â °´Ã¼µéÀº IDLÀ̶ó´Â ÀÎÅÍÆäÀ̽º Á¤ÀǾ ÅëÇØ Á¤ÀǵȴÙ. ÀÌ µé °´Ã¼´Â IDL ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ¼ ´Ù¾çÇÑ ±¸Çö ¾ð¾î·Î º¯È¯µÈ´Ù. ºñ·Ï CORBA °´Ã¼µéÀÌ ¼·Î ´Ù¸¥ ±¸Çö ¾ð¾î·Î ÀÛ¼ºµÇ´õ¶óµµ ÀÌ µé °´Ã¼´Â ¼·Î °£¿¡ ¼ºñ½º¸¦ ±³È¯ÇÒ ¼ö ÀÖ´Ù. ¿Ö³ÄÇϸé CORBA¿¡¼ Áö¿øÇÏ´Â °øÅëÀÇ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. ¿¹¸¦ µé¾î C++·Î ÀÛ¼ºµÈ CORBA Ŭ¶óÀÌ¾ðÆ® °´Ã¼¿Í ÀÚ¹Ù·Î ÀÛ¼ºµÈ CORBA ±¸Çö °´Ã¼´Â °øÅëÀÇ ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© Åë½ÅÇÒ ¼ö ÀÖ´Ù. ÀÌó·³ CORBA¸¦ »ç¿ëÇÏ¸é ±¸Çö ¾ð¾î¿¡ »ó°ü¾øÀÌ ÀÛ¼ºµÈ ÀÀ¿ë ÇÁ·Î±×·¥ÀÎ ÄÄÆ÷³ÍÆ®¸¦ Àç»ç¿ëÇÒ ¼ö ÀÖ´Ù.
¶ÇÇÑ IDL ÀÚü°¡ °´Ã¼ÁöÇâ °³³äÀ» Áö¿øÇϱ⠶§¹®¿¡ »ó¼Ó µîÀ» ÅëÇØ IDL·Î Á¤ÀÇÇÑ
ÀÎÅÍÆäÀ̽º¸¦ Àç»ç¿ëÇÒ ¼ö ÀÖ´Ù.
CORBA´Â 700¿©
°³°¡ ³Ñ´Â ȸ»çµé¿¡ ÀÇÇØ¼ ÇÕÀÇµÈ »ê¾÷°è Ç¥ÁØÀÌ´Ù.
»Ó¸¸ ¾Æ´Ï¶ó IDL
¾ð¾î´Â ISO±¹Á¦
Ç¥ÁØÀ¸·Î Á¦Á¤µÉ Àü¸ÁÀÌ´Ù. µû¶ó¼
CORBA¸¦
»ç¿ëÇÑ ½Ã½ºÅÛÀ̶ó´Â Àǹ̴ ±¹Á¦ Ç¥ÁØÀ» µû¸¥ ½Ã½ºÅÛÀ̶ó´Â °ÍÀÌ´Ù.
°á±¹ °³¹ßÀÚ´Â CORBA
Ç¥ÁØÀÌ Á¦°øÇÏ´Â ÅëÀϼº,
È®À强,
°³¹æ¼º µî ´Ù¾çÇÑ ÀÌÁ¡À» ¾òÀ»
¼ö ÀÖ´Ù.
½Ã½ºÅÛ °³¹ßÀÚ »Ó¸¸ ¾Æ´Ï¶ó ±¸ÃàµÈ ½Ã½ºÅÛÀ»
»ç¿ëÇÏ´Â »ç¿ëÀÚ¿Í »ç¿ë ±â°üµéµµ CORBA¸¦
ÅëÇØ ¸¹Àº À̵æÀ» ¾òÀ» ¼ö ÀÖ´Ù. ´ÙÀ½Àº
´ëÇ¥ÀûÀÎ À̵æÀÌ´Ù.
CORBA´Â »ê¾÷°è
Ç¥ÁØÀ̱⠶§¹®¿¡ ºü¸¥ ½Ã°£¿¡ Àú·ÅÇÑ ÅõÀÚ ºñ¿ëÀ¸·Î °æÀï·Â ÀÖ´Â ½Ã½ºÅÛÀ»
È®º¸ÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
±¸ÇöµÈ CORBA Ŭ¶óÀ̾ðÆ®
°´Ã¼¿Í ±¸Çö °´Ã¼´Â ³×Æ®¿÷»óÀÇ ¾î´À °÷¿¡¼¶óµµ À§Ä¡ÇÒ ¼ö ÀÖ´Ù.
µû¶ó¼ »ç¿ëÀÚÀÇ ¿ä±¸»çÇ׿¡ ¸ÂÃç
´Ù¾çÇÑ ±Ô¸ð·Î ½Ã½ºÅÛÀ» ±¸¼ºÇÒ ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó º¹ ¼öÀÇ ¼ÒÇÁÆ®¿þ¾î·Î
ºÎÅÍ ÄÄÆ÷³ÍÆ®¸¦ ±¸¼ºÇϰí À̸¦ ÀûÀýÈ÷ ¹èÄ¡ÇÏ¿© Ȱ¿ëÇÒ ¼ö ÀÖ´Ù.
º¹ÀâÇÏ°í ´Ù¾çÇÑ ½Ã½ºÅÛµéÀ» CORBA¸¦
±â¹ÝÀ¸·Î ÅëÇÕÇÔÀ¸·Î½á °ü¸® ¹× ¿î¿µÀÌ ½¬¾îÁö¸ç °æºñµµ Àû°Ô µç´Ù.
2Àå ¾î¶²
CORBAÁ¦Ç°À»
¼±ÅÃÇÒ °ÍÀΰ¡?
¾Õ ¸·¿¡¼ »ìÆìº» °Íó·³ CORBA¸¦
±¸ÇöÇÑ ¸¹Àº Á¦Ç°µéÀÌ Á¸ÀçÇÑ´Ù. µû¶ó¼
À̵é Á¦Ç°µé Áß¿¡¼ °¡Àå ÀûÇÕÇÑ Á¦Ç°À» ¼±ÅÃÇϱâ À§ÇÑ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù.
¹°·Ð, Àý´ëÀûÀÎ
°¡À̵å´Â ¾øÁö¸¸ À̵é Á¦Ç°ÀÌ CORBA¸¦
±¸ÇöÇÑ °ÍÀ̱⠶§¹®¿¡ ¾ó¸¶³ª CORBA Ç¥ÁØÀ»
Ãæ½ÇÈ÷ ¹Ý¿µÇÏ´Â °¡ÇÏ´Â Á¡°ú ¿©·¯ºÐÀÌ ±¸ÃàÇÒ È¯°æÇÏ¿¡¼ ÇÊ¿ä·Î
ÇÏ´Â ¼ºñ½ºµéÀ» Ãæ½ÇÈ÷ Áö¿øÇÏ´Â °¡°¡ Áß¿äÇÑ ¿ä¼Ò·Î ÀÛ¿ëÇÑ´Ù.
´ÙÀ½Àº ÀÌ µé °í·Á »çÇ×µéÀ» Á¤¸®ÇÑ
°ÍÀÌ´Ù.
°¡Àå ¸ÕÀú °í·ÁÇØ¾ß ÇÒ »çÇ×Àº ÇØ´ç Á¦Ç°ÀÌ
¾ó¸¶³ª Ãæ½ÇÈ÷ CORBA Ç¥ÁØÀ»
Áö¿øÇÏ´Â °¡ÀÌ´Ù. ´ÙÀ½Àº
Á¡°ËÇØ¾ß ÇÒ Ç׸ñµéÀÌ´Ù.
1. CORBA ÄÚ¾Æ ±â´ÉÀ» ¾ó¸¶³ª Ãæ½ÇÈ÷ Áö¿øÇÏ´Â °¡?
2. ORB ±¸¼º¿ä¼Ò¸¦ ¾ó¸¶³ª Ãæ½ÇÈ÷ Áö¿øÇÏ´Â °¡?
CORBA Ç¥ÁØ¿¡ ´ëÇÑ
°í·Á »çÇ× ¿Ü¿¡ Ãß°¡ÀûÀÎ °í·Á »çÇ×ÀÌ ÇÊ¿äÇÏ´Ù.
¿¹¸¦ µé¸é,
±âÁ¸ÀÇ ±¸ÃàµÈ ½Ã½ºÅÛÀÌ ´Ù¸¥
ȸ»çÀÇ CORBA Á¦Ç°À̶ó¸é
±âÁ¸ÀÇ ½Ã½ºÅÛ°ú »õ·Î¿î ½Ã½ºÅÛÀ» ¿¬µ¿Çϱâ À§Çؼ IIOP
Áö¿ø¿©ºÎ°¡ Áß¿äÇÑ ¼±Åà ¿ä¼ÒÀÏ
°ÍÀÌ´Ù. ¶ÇÇÑ
±âÁ¸ÀÇ ½Ã½ºÅÛÀÌ DCE·Î
±¸ÃàµÈ ½Ã½ºÅÛÀ̶ó¸é »õ·Î¿î CORBAÁ¦Ç°Àº
DCE ESIOP¸¦
Áö¿øÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÀÌó·³
ÃÖÁ¾ÀûÀ¸·Î °¡Àå Áß¿äÇÑ °ÍÀº CORBA¸¦
Àû¿ëÇÏ·Á´Â ȯ°æ¿¡¼ ¿ä±¸ÇÏ´Â °ÍÀÌ ¹«¾ùÀΰ¡¸¦ ¾Ë¾Æ³»´Â °ÍÀÌ´Ù.
3Àå CORBA ±¸Ãà ¹æ¹ý·Ð
ÀÌ Àå¿¡¼´Â CORBA¸¦
ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â ÀýÂ÷ ¹× ¹æ¹ý·Ð¿¡ ´ëÇØ Á¤¸®ÇØ º»´Ù.
¹°·Ð, ¿©±â¼
¼Ò°³ÇÏ´Â ÀýÂ÷ ¹× ¹æ¹ý·ÐÀÌ Àý´ëÀûÀÎ °ÍÀº ¾Æ´Ï´Ù.
±×·¯³ª ¸¹Àº »ç·Ê¸¦ ºÐ¼®Çϰí
Á¤¸®ÇÏ¸é¼ °øÅëÀûÀÎ »çÇ×µéÀ» Ãß·Á³½ °ÍÀ̱⠶§¹®¿¡ CORBA
±â¹ÝÀÇ ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â µ¥
¸¹Àº µµ¿òÀ» ÁÙ °ÍÀÌ´Ù.
3.1. CORBA¸¦ ÀÌ¿ëÇÑ
ÀüÇüÀûÀÎ °³¹ß °úÁ¤ ÀÌÇØ
´Ü°è1) ¹®Á¦
Á¤ÀÇ ¹× ¿ä±¸ ºÐ¼®
ÀÏ´Ü °¡Àå ¸ÕÀú ÇØ¾ß ÇÒ ÀÛ¾÷Àº ±¸ÃàÇϰíÀÚ
ÇÏ´Â µµ¸ÞÀÎÀÇ Çö½ÇÀ» Á÷½ÃÇÏ´Â °ÍÀÌ´Ù. À̸¦
À§ÇØ Çö½Ç µµ¸ÞÀο¡¼ ÇÊ¿ä·Î ÇÏ´Â ¿ä±¸ »çÇ×À» ºÐ¼®ÇÏ°í ¹®Á¦¸¦ Á¤ÀÇÇÑ´Ù.
À̶§ ÀϹÝÀûÀÎ °ÍÀ¸·Î ¿ä±¸ »çÇ×
¸í¼¼¿Í »ç¿ë ½Ã³ª¸®¿À¸¦ Á¤¸®ÇÑ´Ù. ±×¸®°í
ÀÌµé ¿ä±¸ »çÇ×À» ÇØ°áÇÏ´Â ½Ã½ºÅÛÀ» ±¸ÃàÇϱâ À§ÇÑ ¹æ¹ýÀ» °áÁ¤ÇÑ´Ù.
ÀÌ·¯ÇÑ ±¸Ãà ¹æ¹ýÀ» °áÁ¤Çϱâ À§ÇØ ¸ÕÀú
CORBA¸¦ Àû¿ëÇÑ´Ù´Â
»ý°¢¿¡¼ ¹þ¾î³ª ÇöÀçÀÇ °øÅëÀûÀÎ °³¹ß ȯ°æÀÎ ³×Æ®¿÷ ȯ°æ¿¡¼ ÀÌÁ¾ÀÇ
Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾î ȯ°æ¿¡ ¹«°üÇÑ º¹ÀâÇÑ ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â µ¥
ÇÊ¿äÇÑ ±âº» ÇÁ·¹ÀÓ¿÷À» ¼±ÅÃÇÑ´Ù°í ÇÒ ¶§ ÇÊ¿äÇÑ ¸î °¡Áö ±âÁØ¿¡
´ëÇØ »ý°¢ÇØ º¸ÀÚ.
¸ÕÀú , ÀÌ ÇÁ·¹ÀÓ¿÷Àº »ç¿ëÇϱ⠽¬¿ö¾ß ÇÑ´Ù.
ªÀº ±â°£¿¡ ½±°Ô ½ÀµæÇÒ ¼ö ÀÖ°í °£´ÜÇÑ
»ç¿ë¹ýÀ» °®°í ÀÖ¾î¾ß ÇÑ´Ù.
µÑ° , ÀÌ ÇÁ·¹ÀÓ¿÷Àº À¯¿¬ÇØ¾ß ÇÑ´Ù.
´Ù¾çÇÑ Ç¥ÁØÀ» Áö¿øÇÏ°í ¼·Î ´Ù¸¥ ÀÀ¿ë
ÇÁ·Î±×·¥À̳ª ¸ðµ¨¿¡ »ó°ü¾øÀÌ »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
¼¼Â° , ÀÌ ÇÁ·¹ÀÓ¿÷Àº È®À强ÀÌ ÀÖ¾î¾ß ÇÑ´Ù.
Àû¿ëÇÏ·Á´Â ºÐ¾ß¿¡ ÇÊ¿äÇÑ ±â´ÉÀ» ±¸ÇöÇÏ¿©
½±°Ô È®ÀåÇÒ ¼ö ÀÖ¾î¾ß ÇÏ¸ç »õ·Î¿î Ç¥ÁØÀ¸·Î ½±°Ô ÀüÀÌµÉ ¼ö ÀÖ¾î¾ß
ÇÑ´Ù.
³Ý°, ÀÌ ÇÁ·¹ÀÓ¿÷Àº °áÇÕ·ÂÀÌ ÀÖ¾î¾ß ÇÑ´Ù.
WWW³ª OLE,
OpenDoc°°ÀÌ ±âÁ¸ÀÇ »õ·Î¿î ±â¼ú°ú
ÇâÈÄ ÃâÇöÇÏ´Â ±â¼úµé°ú ½±°Ô °áÇÕÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÑ´Ù.
ÀÌ·¯ÇÑ ±âÁØ¿¡ ÀÇÇØ¼ ¿ì¸®´Â ±âÁ¸ÀÇ DCE³ª
CORBA, OLEµî
¿©·¯°¡Áö ÇÁ·¹ÀÓ¿÷À» °í·ÁÇÒ ¼ö ÀÖ´Ù. ¹°·Ð
¿ì¸®´Â ´ç¿¬È÷ CORBA¸¦
»ç¿ëÇϱâ·Î °áÁ¤ÇÒ °ÍÀÌ´Ù.
´Ü°è2) ºÐ¼®°ú
µðÀÚÀÎ
ÀÏ´Ü ¹®Á¦ Á¤Àǰ¡ ³¡³µÀ¸¸é ÀÛ¼ºµÈ ¿ä±¸
»çÇ× ¸í¼¼¿Í »ç¿ë ½Ã³ª¸®¿À¿¡ ±âÃÊÇÏ¿© ºÐ¼®°ú µðÀÚÀÎÀ» ½ÃÀÛÇÑ´Ù.
ÀϹÝÀûÀ¸·Î OMT°°Àº
°´Ã¼ ÁöÇ⠺м®°ú ¼³°è ±â¹ýÀ» »ç¿ëÇÑ´Ù. ½ÇÁ¦
ÀÌµé ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº »ó´çÈ÷ ¸¹Àº ½Ã°£°ú ³ë·ÂÀ» ÅõÀÚÇØ¾ß
ÇÑ´Ù. ƯÈ÷
ÀÌµé ¹æ¹ýÀº ¿ÏÀüÈ÷ ¸ö¿¡ ¹èÀÏ ¶§±îÁö »ç¿ëÇÏÁö ¾ÊÀ¸¸é Á¤È®È÷ ÀÌÇØÇϱâ
Èûµé´Ù. ÇÏÁö¸¸
ÀÌµé ¹æ¹ý Áß ¿ì¸®´Â ¸ÕÀú ÇØ´ç ½Ã½ºÅÛ¿¡¼ ÇÊ¿äÇÑ °´Ã¼¸¦ Á¤ÀÇÇϰí
ÀÌµé °´Ã¼ÀÇ ¾ÖÆ®¸®ºäÆ®¿Í ¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ¸ç °´Ã¼µé »çÀÌÀÇ ¿¬°ü¼ºÀ»
Á¤ÀÇÇÑ´Ù.
´Ü°è3) IDLÁ¤ÀÇ
ÀÏ´Ü ºÐ¼®°ú µðÀÚÀÎÀÌ °áÁ¤µÇ¸é ÀÌ µðÀÚÀÎ
¸í¼¼¿¡ µû¶ó CORBA IDL ÀÎÅÍÆäÀ̽º¸¦
ÀÛ¼ºÇÑ´Ù.
´Ü°è4) IDLÀ»
ÇÁ·Î±×·¥ ¾ð¾î·Î ÄÄÆÄÀÏ
ÀÏ´Ü ÀÛ¼ºµÈ CORBA
IDLÆÄÀÏÀº ¿øÇÏ´Â ÇüÅÂÀÇ °³¹ß ¾ð¾î·Î
ÄÄÆÄÀÏ ÇÒ ¼ö ÀÖ´Ù. Âü°í·Î
´ÙÀ½Àº ÇöÀç CORBAÁ¦Ç°µé¿¡¼
Áö¿øÇÏ´Â ¾ð¾î¸¦ Á¤¸®ÇÑ °ÍÀÌ´Ù.
À̵é Áö¿ø ¾ð¾î Áß ÇöÀç °³¹ßÆÀ¿¡¼ »ç¿ëÇϰųª
»ç¿ëÇÒ ¾ð¾î·Î ÄÄÆÄÀÏÀ» ÇÑ´Ù. ¸¸¾à
°³¹ß ÈÄ ´Ù¸¥ ¾ð¾î·Î ¹Ù²Û´Ù°í ÇØµµ ´ÜÁö ÇØ´ç IDL
ÆÄÀÏÀ» ´Ù½Ã ÄÄÆÄÀÏ ÇÏ¸é µÈ´Ù.
´Ü°è5) ¿øÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ ·ÎÁ÷ Ãß°¡
IDL ÄÄÆÄÀÏÀ» ÅëÇØ
»ý¼ºµÈ ÆÄÀÏÀ» ¹ÙÅÁÀ¸·Î ¿øÇÏ´Â °´Ã¼ÀÇ ¸Þ¼Òµå¿Í ·ÎÁ÷À» ±¸ÇöÇÑ´Ù.
´Ü°è6) ÇØ´ç ½Ã½ºÅ۵鿡 °³¹ßµÈ ±¸¼º¿ä¼Ò ¹èÄ¡
°³¹ßµÈ ±¸Çö °´Ã¼µéÀ» ¿øÇÏ´Â ½Ã½ºÅÛ ±¸¼º
¹æÄ§¿¡ µû¶ó ¹èÄ¡ÇÑ´Ù.
´Ü°è7) ½Ã½ºÅÛ ±¸µ¿
±¸ÃàµÈ ½Ã½ºÅÛÀ» °¡µ¿ÇÑ´Ù.
½ÇÁ¦ ÀÌ °úÁ¤Àº »ó´çÈ÷ Á÷¼±ÀûÀÌ´Ù.
ÀÌ·¯ÇÑ Á÷¼±ÀûÀÎ °³¹ß ¹æ¹ýÀ» "ÆøÆ÷½Ä
°³¹ß"À̶ó°í ÇÑ´Ù. ±×·¯³ª
½ÇÁ¦ °³¹ß °úÁ¤Àº ÇÁ·ÎÅäŸÀÌÇÎÀ̶ó ºÒ¸®´Â ¹æ¹ýÀ» »ç¿ëÇÏ´Â °ÍÀÌ
ÀϹÝÀûÀÌ´Ù. ÇÁ·ÎÅäŸÀÌÇÎ
¹æ¹ýÀº °¢ °³¹ß »çÀÌŬÀ» ¿©·¯ ¹ø ¼öÇàÇÏ¸é¼ ½Ã½ºÅÛÀ» °³¹ß,
¾ÈÁ¤È½ÃŰ´Â °ÍÀÌ´Ù.
µû¶ó¼ À§ÀÇ °¢ ´Ü°èµéÀº Çʿ信
µû¶ó ¿©·¯ ¹ø µÇÇ®ÀÌ µÇ°Å³ª ÀÌÀü ´Ü°è·Î µÇµ¹¾Æ °¥ ¼ö ÀÖ´Ù.
3.2. ½ÇÁ¦ ±¸Çö
°úÁ¤ ¿¹
´ÙÀ½Àº ±â¾÷¿¡¼ ÀÚ±ÝÀ» °ü¸®ÇÏ´Â °¡»óÀÇ
½Ã³ª¸®¿À¸¦ ÅëÇØ CORBA¸¦
±â¹ÝÀ¸·Î ÇÑ ½Ã½ºÅÛÀÇ °³¹ß °úÁ¤À» ÃßÀûÇØ º»´Ù.
´Ü°è1) ¹®Á¦
Á¤ÀÇ ¹× ¿ä±¸ ºÐ¼®
1) ¹®Á¦ Á¤ÀÇ
±¸ÃàÇÏ·Á´Â ¸ñÇ¥ ½Ã½ºÅÛÀº ±â¾÷ÀÇ Àڱݰü¸®¿¡
ÇÊ¿äÇÑ ¸ðµç ±â´ÉÀ» Á¦°øÇÔÀ» ¸ñÇ¥·Î ÇÑ´Ù.
2) ¿ä±¸ »çÇ× ¸í¼¼
3) »ç¿ë ½Ã³ª¸®¿À
Áö±Ý±îÁö ¼³Á¤ÇÑ ¿ä±¸ »çÇ×°ú »ç¿ë ½Ã³ª¸®¿À¸¦
¹ÙÅÁÀ¸·Î ÇÑ Àüü ½Ã½ºÅÛÀÇ ¹°¸®ÀûÀÎ ±¸¼ºÀº [±×¸²7-1]°ú
°°´Ù. ¿ø°ÝÁöÀÇ
ÀÚ±Ý ´ã´çÀÚµéÀÇ PC¿Í
Áß¾ÓÀÇ ÄÄÇ»ÅͰ¡ ¿¬°áµÇ¾î ÀÖ´Â ´Ü¼øÇÑ ±¸Á¶Áö¸¸ ÇöÀç ´ëºÎºÐÀÇ ÀºÇàÀ̳ª
Áõ±Çȸ»ç, ¶Ç´Â
öµµ ¿¹¸Å µî ´Ù¾çÇÑ °÷¿¡¼ »ç¿ëÇϰí ÀÖ´Â ±¸Á¶ÀÌ´Ù.

[±×¸²7-1]
¸ñÇ¥ ½Ã½ºÅÛÀÇ ±¸¼º
ÀÚ±Ý ´ã´çÀÚ´Â ¼·Î ÇÕÀÇµÈ ÇüÅ·ΠÀÚ±ÝÀÇ »óÅ Á¤º¸¸¦ ÆÄÀÏ¿¡ ÀúÀåÇÑ´Ù.
ÀÌ ÆÄÀÏÀº ÆÄÀÏ Àü¼Û ÇÁ·ÎÅäÄÝÀ» ÅëÇØ Àü¼ÛµÈ´Ù.
Àü¼ÛµÈ ÆÄÀÏÀº µ¥ÀÌŸº£À̽º¿¡ °»½ÅµÉ ¶§±îÁö Áß¾Ó ÄÄÇ»ÅÍ¿¡ ÀúÀåÇÑ´Ù.
Áß¾Ó ÄÄÇ»ÅÍÀÇ ÀÛ¾÷ ÇÁ·Î±×·¥Àº ÀÌ ÆÄÀÏÀ» Àаí ÇØ´ç Á¤º¸¸¦ µ¥ÀÌŸº£À̽º¿¡ °»½ÅÇÑ´Ù. ÀÌ ÀÛ¾÷ ÇÁ·Î±×·¥Àº ¹èÄ¡ ¹æ½ÄÀ¸·Î ÀÛ¾÷ÇÑ´Ù.
ÀÚ±Ý °ü¸®ÀÚ´Â ½ºÇÁ·¹µå½ÃÆ®¿¡ ÀÚ±Ý ÇöȲÀ» ±â·ÏÇØ µÎ°í ÀÖ´Ù.
º¸°í¸¦ À§ÇØ ºñÁÖ¾ó º£ÀÌÁ÷À¸·Î ÀÛ¼ºµÈ CORBAŬ¶óÀÌ¾ðÆ®¸¦ ¼öÇàÇÑ´Ù.
ÀÌ Å¬¶óÀÌ¾ðÆ®´Â Áß¾ÓÀÇ ÄÄÇ»ÅÍ¿¡¼ ¼öÇàÁßÀÎ CORBA ±¸Çö °´Ã¼ ¼¹ö¿¡°Ô ¼ºñ½º¸¦ ¿äûÇÑ´Ù. À̶§ ½ºÇÁ·¹µå½ÃÆ®¿¡ Á¤º¸°¡ ÇÔ²² Àü´ÞµÈ´Ù.
ÇØ´ç CORBA¼¹ö´Â
Á÷Á¢ µ¥ÀÌŸº£À̽º¸¦ °»½ÅÇÑ´Ù.
ÀÌ·¯ÇÑ ¹æ¹ýµé ¿Ü¿¡µµ ¿©·¯ °¡Áö ´ë¾ÈÀÌ
Á¸ÀçÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª
¾Õ¼ ¾ð±ÞÇÑ ¿©·¯ °¡Áö ÀÌÀ¯¿¡ ÀÇÇØ¼ ¿ì¸®´Â CORBA¸¦
ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀ» ±¸ÃàÇϱâ·Î ÇÑ´Ù.
´Ü°è2) ºÐ¼®°ú
µðÀÚÀÎ
ÀÌ ´Ü°è¿¡¼ ¿ì¸®´Â ¿øÇÏ´Â °´Ã¼µéÀÇ ¾ÖÆ®¸®ºäÆ®¿Í
¸Þ¼Òµå¸¦ Á¤ÀÇÇÏ°í ¸¸¾à °´Ã¼µé »çÀÌÀÇ ¿¬°ü¼ºÀÌ ÇÊ¿äÇϸé ÀÌµé »çÀÌÀÇ
°ü°è¸¦ ¼³Á¤ÇÑ´Ù. °¡Àå
ÀϹÝÀûÀ¸·Î °´Ã¼¸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀº ÀÌÀü ´Ü°è¿¡¼ ¾òÀº ¹®Á¦ Á¤ÀÇ¿Í
¿ä±¸ »çÇ× ¸í¼¼¿¡¼ ¸í»ç·Î µÈ °ÍÀ» Ã߸®´Â °ÍÀÌ´Ù.
ÀÚ±Ý ´ã´çÀÚ , ÀÚ±Ý
, Á¤ºÎ ºÎó
, µ¥ÀÌŸº£À̽º
, ÄÄÇ»ÅÍ,
...
À̰͵éÀÌ ¹Ù·Î ÇØ´ç ½Ã½ºÅÛ¿¡¼ ÇÊ¿ä·Î
ÇÏ´Â °´Ã¼µéÀÌ´Ù. ½ÇÁ¦
Å« ÇÁ·ÎÁ§Æ®¿¡¼´Â ÀÌµé °´Ã¼¸¦ ¹ÙÅÁÀ¸·Î °´Ã¼ ´ÙÀ̾î±×·¥À̳ª µ¥ÀÌŸ
ÇÃ·Î¿ì ±×¸²(DFD, Data Flow Diagram) µî
´Ù¾çÇÑ ºÐ¼®°ú µðÀÚÀÎ ¹æ¹ýÀ» µ¿¿øÇÏ¿© ±¸ÇöÇϰíÀÚ ÇÏ´Â ½Ã½ºÅÛÀ»
¼³°èÇÑ´Ù. ½ÇÁ¦
ÀÌ °úÁ¤Àº ½Ã½ºÅÛ ±¸ÃàÀÇ ¼º°ø ¿©ºÎ¸¦ °¡´ÆÇÒ ¸¸Å Áß¿äÇÏ´Ù.
±×·¯³ª ÀÌ ´Ü°è¿¡¼ ÇÊ¿äÇÑ °ÍÀº
°´Ã¼ ÁöÇ⠺м®°ú ¼³°è ¹æ¹ý ±× ÀÚü ±â¼ú°ú CORBA¸¦
ºñ·ÔÇÏ¿© ¿©·¯ °¡Áö ±â¼ú°ú ±¸Ãà °æÇèÀÌ ÀÖ´Â »ç¶÷µéÀÇ ³ëÇÏ¿ìÀÌ´Ù.
º»ÀÎÀÇ °ßÇØ·Î´Â ÀÌ µÎ ±â´ÉÀ»
°¡Áø ¿£Áö´Ï¾î°¡ CORBAÇÁ·ÎÁ§Æ®ÀÇ
¸®´õ·Î¼ ÀûÇÕÇÏ´Ù°í »ý°¢ÇÑ´Ù.
ÀÏ´Ü ºÐ¼®°ú µðÀÚÀÎ °úÁ¤À» ÅëÇØ ½Ã½ºÅÛ
±¸ÃàÀ» À§ÇÑ CORBA ÀÎÅÍÆäÀ̽º·Î¼
"ÀÚ±Ý"À̶õ °´Ã¼¿Í ƯÁ¤ ÀÚ±ÝÀÇ Á¤º¸¸¦ Áß¾ÓÀÇ µ¥ÀÌŸº£À̽º¿¡
°»½ÅÇϱâ À§ÇØ update¶õ
¸Þ¼Òµå¸¦ Á¤ÀÇÇÑ´Ù.
- °´Ã¼ À̸§ : fund
- ¾ÖÆ®¸®ºäÆ® : fund_name
- ¸Þ¼Òµå :
update( passwd , fund_size , bid_price , offer_price)
´Ü°è3) IDLÁ¤ÀÇ
¾Õ¼± Á¤ÀÇ¿¡ µû¶ó CORBA
IDLÀ» ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÑ´Ù.
// fund.idl
intreface fund {
attribute string fund_name;
boolean update (
in string passwd,
in long fund_size,
in long bid_price,
in long offer_price ) ;
};
´Ü°è4) IDLÀ»
ÇÁ·Î±×·¥ ¾ð¾î·Î ÄÄÆÄÀÏ
ÀÏ´Ü ¸ðµç IDL ÆÄÀÏÀÌ
ÀÛ¼ºµÇ¸é ÀÌÁ¨ ±¸Çö ¾ð¾î°¡ µîÀåÇÒ Â÷·ÊÀÌ´Ù.
´Ùµé ÁÖÁöÇÏ´Ù½ÃÇÇ IDLÀº
´Ü¼øÇÑ Á¤ÀÇ ¾ð¾îÀÌÁö C³ª
C++°°ÀÌ ±¸Çö
¾ð¾î°¡ ¾Æ´Ï´Ù. µû¶ó¼
IDL Á¤ÀÇ ÆÄÀÏÀ»
C³ª C++
¶Ç´Â ÀÚ¹Ù°°Àº ±¸Çö ¾ð¾î·Î ÄÄÆÄÀÏÀ»
ÇØ¾ß ÇÑ´Ù.
´ÙÀ½°ú °°ÀÌ CORBA
IDLÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇÏ¿© ÄÄÆÄÀÏÇÑ´Ù.
C:> idl fund.idl
ÄÄÆÄÀÏ ÈÄ ´ÙÀ½ÀÇ ÄÚµåµéÀÌ »ý¼ºµÈ´Ù.
½ÇÁ¦ ÀÌ ÄÚµå´Â OrbixÀÇ
IDL ÄÄÆÄÀÏ·¯°¡
»ý¼ºÇس½ ÆÄÀϵéÀÌ´Ù. Orbix Desktop ¹öÀüÀº
CORBA-OLEÀÎÅÍÆäÀ̽º¸¦
À§ÇØ winidlÀ̶ó´Â
º°µµÀÇ ÄÄÆÄÀÏ·¯¸¦ Á¦°øÇÑ´Ù. ÀÌ
ÄÄÆÄÀÏ·¯´Â ÇØ´ç IDLÆÄÀÏÀ»
COMÀÇ ODLÆÄÀÏ·Î
º¯È¯ÇÏ´Â µî OLE¸¦
ÅëÇØ CORBA°´Ã¼¸¦
ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.
ÀÌ ÆÄÀÏÀº fund ÀÎÅÍÆäÀ̽ºÀÇ
Ŭ¶óÀÌ¾ðÆ® °´Ã¼°¡ ±¸Çö °´Ã¼¿¡ Á¢±ÙÇÏ°Ô ÇØÁØ´Ù.
´Ù½Ã ¸»ÇØ ¿ø°ÝÁö¿¡¼ ÇØ´ç ¼¹ö
ÄÄÇ»ÅÍ·ÎÀÇ ³×Æ®¿÷ ±â´É°ú °´Ã¼¿¡ ¹ÙÀεùÇÏ´Â ±â´É µî ºÐ»êȯ°æ¿¡¼
°´Ã¼¸¦ Á¶ÀÛÇÏ´Â µ¥ ÇÊ¿äÇÑ ±âº» ±â´ÉµéÀÌ Æ÷ÇԵǾî ÀÖ´Ù.
ÀÌ ÆÄÀÏÀº fund.hh
¶ó´Â °øÅëÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÑ´Ù.
#include "fund.hh"
fund::fund (char *IT_OR) {
m_pptr = new fund_dispatch (IT_OR, this,(CORBA_Object*)this);
}
fund::fund (ObjectReference *IT_OR) {
m_pptr = new fund_dispatch (IT_OR, this,(CORBA_Object*)this);
}
#ifndef fundForwC
#define fundForwC
CORBA_ObjectRef fund_getBase(void *IT_p){
return (fund*) IT_p;}
void fund_release (fund_ptr IT_p, CORBA_Environment &IT_env) {
CORBA_release(IT_p, IT_env);}
void fund_release (fund_ptr IT_p) {
fund_release (IT_p, CORBA_IT_chooseDefaultEnv ()); }
fund_ptr fund_nil (CORBA_Environment &) {
return fund:: _nil ();}
fund_ptr fund_nil () {
return fund_nil (CORBA_IT_chooseDefaultEnv ());}
fund_ptr fund_duplicate (fund_ptr IT_p, CORBA_Environment &IT_env) {
return (fund::_duplicate(IT_p, IT_env)); }
fund_ptr fund_duplicate (fund_ptr IT_p) {
return fund_duplicate (IT_p, CORBA_IT_chooseDefaultEnv ()); }
#endif
fund_ptr fund::_duplicate(fund_ptr obj, CORBA_Environment& IT_pEnv) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
if (!obj) {
return (obj);
}
fund_ptr IT_obj = obj->__duplicate (IT_env);
return IT_obj;
}
fund* fund:: _bind (const char* IT_markerServer, const char* host,
const CORBA_Context &IT_c,
CORBA_Environment &IT_env) {
return (fund*)CORBA_Factory.New (IT_markerServer, IT_env, IT_c, host,
fund_IMPL, fund_IR);
}
fund* fund:: _bind (CORBA_Environment &IT_env) {
return _bind (NULL,NULL,CORBA_Context(), IT_env); }
fund* fund:: _bind (const char* IT_markerServer, const char* host, CORBA_Environment &IT_env) {
return _bind (IT_markerServer, host, CORBA_Context (), IT_env); }
fund* fund::_narrow (CORBA_Object* IT_obj, CORBA_Environment &IT_pEnv) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
if (CORBA_is_nil (IT_obj)) {
return fund:: _nil();
}
fund* IT_p = (fund*)CORBA_Object::_castDown (IT_obj, fund_IR, IT_env);
IT_p = IT_p ? IT_p->__duplicate(IT_env) : NULL;
if ((IT_env) &&(!strcmp(IT_env.exception()->id(), "CORBA::BAD_PARAM")) && (((CORBA_BAD_PARAM*)IT_env.exception())-> minor() == NARROW_FAILED)) {
IT_env.exception_free();
}
return IT_p;
}
void* fundProxyFactoryClass::New (char *IT_OR, CORBA_Environment&) {
return new class fund(IT_OR);}
void* fundProxyFactoryClass::New (ObjectReference *IT_OR, CORBA_Environment&) {
return new class fund(IT_OR);}
void* fundProxyFactoryClass::New2 () {return new class fund();}
void fundProxyFactoryClass::Delete (void * o) {if(o) delete (CORBA_Object *) o; }
void* fundProxyFactoryClass::IT_castUp (void *IT_p, char* IT_s, CORBA_Environment &IT_env) {
void *IT_l;
if (!CORBA__interfaceCmp (IT_s,fund_IR, IT_env))
return IT_p;
else if (IT_l=CORBA_ObjectFactoryClass::IT_castUp((CORBA_Object*) (( class fund* ) IT_p) , IT_s, IT_env))
return IT_l;
else return NULL;
}
CORBA_PPTR* fundProxyFactoryClass::pptr (void *IT_p) {
return ((class fund*)IT_p)->_pptr ();}
void fundProxyFactoryClass::baseInterfaces (_IDL_SEQUENCE_string& seq) {
add (seq, fund_IR);
CORBA_ObjectFactoryClass::baseInterfaces (seq);
}
void fund::fund_name (const char * fund_name, CORBA_Environment
&IT_pEnv) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
if (IT_env || m_isNull) {return;}
CORBA_Request IT_r (this, "_set_fund_name",IT_env,1,0);
if (!IT_r.isException (IT_env)) { IT_r.encodeStringOp (fund_name); }
IT_r.invoke(CORBA_Flags(0), IT_env);
if (IT_r.exceptionKind () == SYSTEM_EXCEPTION) {
IT_r.checkEnv (IT_env);
}
}
char * fund::fund_name (CORBA_Environment &IT_pEnv) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
if (IT_env || m_isNull) {
return ((char *) NULL);
}
CORBA_Request IT_r (this, "_get_fund_name",IT_env,1,0);
IT_r.invoke(CORBA_Flags(0), IT_env);
if (!IT_r.isException (IT_env)) {
char * fund_name;
IT_r.decodeStringOp(fund_name);
IT_r.checkEnv (IT_env);
return fund_name;
}
if (IT_r.exceptionKind () == SYSTEM_EXCEPTION) {
IT_r.checkEnv (IT_env);
}
return ((char *) NULL);
}
CORBA_Boolean fund:: update (const char * passwd, CORBA_Long fund_size, CORBA_Long bid_price, CORBA_Long offer_price, CORBA_Environment &IT_pEnv) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
if (IT_env || m_isNull) {
return 0;
}
CORBA_Request IT_r (this, "update",IT_env,1,0);
if (!IT_r.isException (IT_env)) {
IT_r.encodeStringOp (passwd);
IT_r << fund_size; IT_r << bid_price;
IT_r << offer_price;
}
IT_r.invoke (CORBA_Flags(0),IT_env);
if (!IT_r.isException (IT_env)) {
CORBA_Boolean IT_result;
IT_r >> IT_result;
IT_r.checkEnv (IT_env);
return IT_result;
}
if (IT_r.exceptionKind () == SYSTEM_EXCEPTION) {
IT_r.checkEnv (IT_env);
}
return 0;
}
fundProxyFactoryClass fundProxyFactory(1);
#ifndef fund_dispatch_impl
unsigned char fund_dispatch::dispatch (CORBA_Request &IT_r,
unsigned char, void *) {
IT_r.makeRuntimeException1 ("fund");
return 0;
}
#endif
ÀÌ ÆÄÀÏ¿¡´Â ±¸Çö °´Ã¼¿¡ ÇÊ¿äÇÑ °¢Á¾ ±â´ÉÀÌ
Æ÷ÇԵǾî ÀÖ´Ù. ÀÌ
ÆÄÀÏ ¿ª½Ã fund.hh ¶ó´Â
°øÅëÀÇ Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÑ´Ù.
#include "fund.hh"
#define fund_dispatch_impl
unsigned char fund_dispatch::dispatch (CORBA_Request &IT_r,
unsigned char IT_isTarget, void *IT_pp) {
if (!IT_pp) IT_pp = m_obj;
const char *IT_s = IT_r.getOperation ();
if (!strcmp (IT_s,"_get_fund_name")) {
char * fund_name;
CORBA_Environment IT_env (IT_r);
CORBA_Filter* IT_f = CORBA_Orbix.getFilter ();
if (!IT_r.tcAssert ("\Ro~_get_fund_name~>{0},N{}\"))
return 1;
if (IT_f)
IT_f->inRequestPostM (IT_r, IT_env);
if (!IT_r.isException (IT_env)) {
try {
fund_name = ((fund*)IT_pp)->fund_name(IT_env);
} catch (CORBA_SystemException &IT_exSys) {
IT_env.propagate (&IT_exSys);
} catch (CORBA_UserException &IT_exUsr) {
IT_env.propagate (&IT_exUsr);
}
}
if (!IT_r.isException (IT_env)) {
if (!IT_r.convertToReply ("\0\", IT_env)) return 1;
IT_r.encodeStringOp (fund_name);
CORBA_string_free (fund_name);
}
else IT_r.makeSystemException (IT_env);
return 1;
}
else if (!strcmp (IT_s,"_set_fund_name")) {
CORBA_Environment IT_env (IT_r);
CORBA_Filter* IT_f = CORBA_Orbix.getFilter ();
if (IT_r.tcAssert ("\Ro~_set_fund_name~+{0},>{v},N{}\")) {
char * fund_name;
IT_r.decodeStringOp(fund_name);
if (IT_f && !IT_r.isException (IT_env))
IT_f->inRequestPostM (IT_r, IT_env);
if (!IT_r.isException (IT_env)) {
try {
((fund*)IT_pp)->fund_name(fund_name, IT_env);
} catch (CORBA_SystemException &IT_exSys) {
IT_env.propagate (&IT_exSys);
} catch (CORBA_UserException &IT_exUsr) {
IT_env.propagate (&IT_exUsr);
}
}
CORBA_string_free (fund_name);
}
IT_r.replyNoResults (IT_env);
return 1;
}
else if (!strcmp(IT_s,"update")) {
CORBA_Boolean IT_result;
CORBA_Environment IT_env (IT_r);
CORBA_Filter* IT_f = CORBA_Orbix.getFilter ();
if (!IT_r.tcAssert ("\
Ro~update~+passwd{0},+fund_size{l},+bid_price{l},+offer_price{l},>{b},N{}\
"))
return 1;
char * passwd;
IT_r.decodeStringOp(passwd);
CORBA_Long fund_size;
IT_r >> fund_size;
CORBA_Long bid_price;
IT_r >> bid_price;
CORBA_Long offer_price;
IT_r >> offer_price;
if (IT_f && !IT_r.isException (IT_env))
IT_f->inRequestPostM (IT_r, IT_env);
if (!IT_r.isException (IT_env)) {
try {
IT_result = ((fund*)IT_pp)->update
( passwd, fund_size, bid_price, offer_price, IT_env);
} catch (CORBA_SystemException &IT_exSys) {
IT_env.propagate (&IT_exSys);
} catch (CORBA_UserException &IT_exUsr) {
IT_env.propagate (&IT_exUsr);
}
}
CORBA_string_free (passwd);
if (!IT_r.isException (IT_env)) {
if (!IT_r.convertToReply ("\b\", IT_env)) return 1;
IT_r << IT_result;
}
else IT_r.makeSystemException (IT_env);
return 1;
}
else if (IT_isTarget)
IT_r.makeRuntimeException2 ();
return 0;
}
#include "fundC.CPP"
ÀÌ Çì´õ ÆÄÀÏ¿¡´Â fund
°´Ã¼¸¦ ³×Æ®¿÷ »ó¿¡¼ »ç¿ëÇϱâ
À§ÇÑ °¢Á¾ Ŭ·¡½º Á¤Àǰ¡ Æ÷ÇԵǾî ÀÖ´Ù. ¸ÕÀú
°¢Á¾ CORBA ±â´ÉÀ»
Áö¿øÇϱâ À§ÇØ ¹Ì¸® ½Ã½ºÅÛ Å¬·¡½º Â÷¿ø¿¡¼ Á¤ÀǵǾî ÀÖ´Â CORBA.h¶ó´Â
Çì´õÆÄÀÏÀ» »ðÀÔÇÑ´Ù. ±×¸®°í
±âº»ÀûÀ¸·Î CORBAÀÇ
±âº» °´Ã¼¾Æ´äŸ(BOA, Basic Object Adapter)¸¦
»ç¿ëÇϱâ À§ÇØ BOAImpleÀ̶ó´Â
Ŭ·¡½º¸¦ »ó¼Ó¹ÞÀº fund°´Ã¼¿Í
½ÇÇàÁß¿¡ °´Ã¼¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï ÇϱâÀ§ÇØ TIE¶ó´Â
°´Ã¼¸¦ »ó¼Ó¹ÞÀº fund°´Ã¼¸¦
¼±¾ðÇϰí ÀÖ´Ù. ÀÌ
¿Ü¿¡µµ fund°´Ã¼ÀÇ
°´Ã¼ÂüÁ¶ÀÚ Á¶ÀÛÀ» À§ÇÑ Á¤ÀÇ µîÀÌ Æ÷ÇԵǾî ÀÖ´Ù.
#ifndef fund_hh
#define fund_hh
#include <CORBA.h>
#include <string.h>
#ifndef _fund_defined
#define _fund_defined
class fund_dispatch : public virtual CORBA_PPTR {
public:
fund_dispatch (void *IT_p, CORBA_Object* IT_o, const char *IT_m,
CORBA_LoaderClass *IT_l, char *IT_i, void* IT_im)
: CORBA_PPTR (IT_p,IT_o,IT_m,IT_l,IT_i,IT_im) {}
fund_dispatch (char *IT_OR, void *IT_p, CORBA_Object *IT_o)
: CORBA_PPTR (IT_OR,IT_p,IT_o) {}
fund_dispatch () {}
fund_dispatch (ObjectReference *IT_OR, void *IT_p, CORBA_Object *IT_o)
: CORBA_PPTR (IT_OR,IT_p,IT_o) {}
fund_dispatch (void *IT_p, CORBA_Object *IT_o, const char *IT_m,
char *IT_i, CORBA_Object* IT_ob, void* IT_im)
: CORBA_PPTR (IT_p,IT_o,IT_m,IT_i,IT_ob,IT_im) {}
virtual unsigned char dispatch (CORBA_Request &IT_r,
unsigned char IT_isTarget, void* IT_pp=NULL);
};
class fund;
#ifndef fundPtr
#define fundPtr
typedef fund* fund_ptr;
typedef fund* fundRef;
#endif
#ifndef fundForwH
#define fundForwH
CORBA_ObjectRef fund_getBase (void *);
void fund_release (fund *, CORBA_Environment &IT_env);
void fund_release (fund_ptr);
fund* fund_duplicate (fund_ptr, CORBA_Environment &IT_env);
fund* fund_duplicate (fund_ptr );
fund_ptr fund_nil (CORBA_Environment &IT_env);
fund_ptr fund_nil ();
#endif
#define fund_IMPL "fund"
class fund;
typedef fund fundProxy;
#define fund_IR "fund"
#define fund_IMPL "fund"
#ifndef fundPtr
#define fundPtr
typedef fund* fund_ptr;
typedef fund* fundRef;
#endif
class fund: public virtual CORBA_Object {
public:
fund (char *IT_OR);
fund (ObjectReference *IT_OR);
fund () : CORBA_Object (1) {}
protected:
fund_ptr __duplicate(
CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ()) {
CORBA_Object::__duplicate (IT_env);
return this;
}
public:
static fund_ptr _duplicate(
fund_ptr,
CORBA_Environment &IT_pEnv=CORBA_IT_chooseDefaultEnv ());
public:
static fund* _bind (const char* IT_markerServer, const char* host,
const CORBA_Context &IT_c,
CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ());
static fund* _bind (CORBA_Environment &IT_env);
static fund* _bind (const char* IT_markerServer=NULL, const char* host=NULL,
CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ());
static fund* _narrow (CORBA_Object* , CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ());
static fund_ptr _nil (CORBA_Environment &IT_pEnv=CORBA_IT_chooseDefaultEnv ()) {
CORBA_EnvExcRaiser IT_raise;
CORBA_Environment &IT_env = IT_raise.registerEnv (&IT_pEnv);
return (fund_ptr) CORBA_OBJECT_NIL;}
virtual void fund_name (const char * fund_name, CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ()) ;
virtual char * fund_name (CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ()) ;
virtual CORBA_Boolean update (const char * passwd, CORBA_Long fund_size, CORBA_Long bid_price, CORBA_Long offer_price, CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ()) ;
};
#ifndef fundVarH
#define fundVarH
#ifndef fundvPtr
#define fundvPtr
typedef fund* fund_vPtr;
typedef const fund* fund_cvPtr;
#endif
class fund_var : public CORBA__var
{
private:
unsigned char copyHelper (const fund_var &IT_s) {
{ _ptr = fund_duplicate (IT_s._ptr);
}
return 1;
}
public:
fund_var (const fund_var &IT_s) {(void) copyHelper (IT_s); }
fund_var () {_ptr = fund_nil (); }
fund_var (fund *IT_p) { _ptr = IT_p; }
fund_var &operator= (fund *IT_p) {
fund_release (_ptr);
_ptr = IT_p;
return (*this);
}
fund_var &operator= (const fund_var &IT_s) {
fund_release (_ptr);
_ptr = fund_duplicate (IT_s._ptr);
return (*this);
}
~fund_var () { fund_release (_ptr); }
fund* operator-> () {return _ptr; }
operator const fund_vPtr () const { return _ptr;}
operator fund_vPtr& () { return _ptr;}
protected:
fund *_ptr;
private:
fund_var &operator= (const CORBA__var &IT_s);
fund_var (const CORBA__var &IT_s);
fund_var &operator= (const CORBA__mgr &IT_s);
fund_var &operator= (const CORBA__SeqElem &IT_s);
fund_var (const CORBA__mgr &IT_s);
fund_var (const CORBA__SeqElem &IT_s);
};
#endif
#ifndef fundMgrH
#define fundMgrH
class fund_mgr : public CORBA__mgr
{
public:
fund_mgr () {
_ptr = fund_nil ();
_release = 1;
}
fund_mgr (const fund_mgr &IT_s) {
_ptr = fund_duplicate (IT_s._ptr);
_release = 1;
}
fund_mgr &operator= (fund *IT_p) {
if (_ptr && _release)
fund_release (_ptr);
_ptr = IT_p;
_release = 1;
return (*this);
}
fund_mgr &operator= (const fund_mgr &IT_s) {
if (_ptr && _release)
fund_release (_ptr);
_ptr = fund_duplicate(IT_s._ptr);
_release = 1;
return (*this);
}
fund_mgr &operator= (fund_var &IT_s) {
if (_ptr && _release)
fund_release (_ptr);
_ptr = fund_duplicate(IT_s);
_release = 1;
return (*this);
}
~fund_mgr () {
if (_release)
fund_release (_ptr);
}
unsigned char release () {
return _release;
}
void release (unsigned char rel) {
_release = rel;
}
operator int () const {
return (((CORBA_Object_ptr) _ptr) ? 1 : 0);
}
operator void* () const {
return _ptr;
}
operator CORBA_Object * () const {
return (CORBA_Object *) _ptr;
}
operator fund* () const { return (fund*) _ptr;}
fund *_ptr;
protected:
unsigned char _release;
};
#endif
#ifndef fundSeqElemH
#define fundSeqElemH
class fund_SeqElem : public CORBA__SeqElem
{
public:
fund_SeqElem (fund_ptr* IT_p, unsigned char rel) {
_ptr = IT_p;
_release = rel;
}
fund_SeqElem &operator= (fund_ptr IT_p) {
if (_ptr) {
if (*(_ptr) && _release)
fund_release (*(_ptr));
*(_ptr) = IT_p;
}
return (*this);
}
fund_SeqElem &operator= (const fund_SeqElem &IT_s) {
if (_ptr && IT_s._ptr) {
if (*(_ptr) && _release)
fund_release (*(_ptr));
*(_ptr) = fund_duplicate(*(IT_s._ptr));
}
return (*this);
}
operator fund_ptr () const {
return _ptr ? (fund_ptr) (*_ptr) : fund_nil();
}
fund_ptr operator->() const { return *_ptr;}
protected:
fund_ptr *_ptr;
unsigned char _release;
};
#endif
#define TIE_fund(X) fund##X
#define DEF_TIE_fund(X) \
class fund##X : public virtual fund {\
X* m_obj;\
public:\
fund##X (X *objp, const char* m="", CORBA_LoaderClass *l=0)\
: fund(), CORBA_Object (), m_obj(objp) {\
m_pptr = new fund_dispatch \
(( fund*)this,(CORBA_Object*)this,m,l,fund_IR,m_obj);\
}\
fund##X (CORBA_Object *IT_p, const char* IT_m="", void *IT_q=0)\
: fund(), CORBA_Object () { \
m_pptr = new fund_dispatch \
(( fund*)this,(CORBA_Object*)this,IT_m,fund_IR,IT_p,IT_q); \
m_obj = (X*)(m_pptr->getImplObj ()); \
}\
virtual ~fund##X () {\
if (_okToDeleteImpl ()) delete m_obj; } \
virtual void* _deref () {\
return m_obj; }\
virtual void fund_name (const char * fund_name, CORBA_Environment &IT_env) {\
m_obj->fund_name(fund_name,IT_env); }\
virtual char * fund_name (CORBA_Environment &IT_env) {\
return m_obj->fund_name(IT_env); }\
virtual CORBA_Boolean update (const char * passwd, CORBA_Long fund_size,
CORBA_Long bid_price, CORBA_Long offer_price, CORBA_Environment &IT_env) {\
return m_obj->update ( passwd, fund_size, bid_price, offer_price,IT_env);\
}\
};
#define QUALS_fund \
virtual void fund_name (const char * fund_name, CORBA_Environment &IT_env) {\
m_obj->fund_name(fund_name,IT_env); }\
virtual char * fund_name (CORBA_Environment &IT_env) {\
return m_obj->fund_name(IT_env); }\
virtual CORBA_Boolean update (const char * passwd, CORBA_Long fund_size, CORBA_Long bid_price, CORBA_Long offer_price, CORBA_Environment &IT_env) {\
return m_obj->update ( passwd, fund_size, bid_price, offer_price,IT_env);\
}\
class fundProxyFactoryClass : public virtual CORBA_ObjectFactoryClass {
public:
fundProxyFactoryClass (unsigned char IT_p=0)
: CORBA_ProxyFactory (fund_IR, IT_p) {}
virtual void* New (char *IT_OR, CORBA_Environment&);
virtual void* New (ObjectReference *IT_OR, CORBA_Environment&);
virtual void* New2 ();
virtual void Delete (void *);
virtual void* IT_castUp (void *IT_p, char* IT_s, CORBA_Environment &IT_env=CORBA_IT_chooseDefaultEnv ());
virtual CORBA_PPTR* pptr (void *IT_p);
virtual void baseInterfaces (_IDL_SEQUENCE_string&);
};
extern fundProxyFactoryClass fundProxyFactory;
#endif
#endif
ÀÌ ÆÄÀÏÀº ±¸Çö °´Ã¼ÀÇ Çì´õ ÆÄÀÏÀÌ´Ù.
#ifndef fund_ih
#define fund_ih
#include "fund.hh"
class fund== {
public:
virtual void fund_name (const char * fund_name, CORBA_Environment &IT_env=CORBA_default_environment) ;
virtual char * fund_name (CORBA_Environment &IT_env=CORBA_default_environment) ;
virtual CORBA_Boolean update (const char * passwd, CORBA_Long fund_size, CORBA_Long bid_price,
CORBA_Long offer_price, CORBA_Environment &IT_env=CORBA_default_environment) ;
};
#endif
ÀÌ ÆÄÀÏ¿¡´Â ½ÇÁ¦ ±¸Çö °´Ã¼ÀÇ Äڵ尡 À§Ä¡ÇÑ´Ù.
½ÇÁ¦ ¿©±â¼ Á¦°øµÇ´Â °ÍÀº ÀÛ¼ºÇؾß
ÇÒ ÅÛÇø´ÀÌ´Ù. ¿¹¸¦
µé¸é, ¿©·¯ºÐÀº
ÀÌ ÅÛÇø´ÀÇ update()¿¡
RDBMS¸¦ Á¶ÀÛÇϰųª
ODBMS¸¦ Á¶ÀÛÇÏ´Â
µî ¿øÇÏ´Â Äڵ带 ÀÛ¼ºÇØ ³Ö¾î¾ß ÇÑ´Ù.
#include "fund.ih"
void fund==:: fund_name (const char * fund_name, CORBA_Environment &IT_env) {
// ¿øÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
}
char * fund==:: fund_name (CORBA_Environment &IT_env) {
// ¿øÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
}
CORBA_Boolean fund==:: update (const char * passwd, CORBA_Long fund_size, CORBA_Long bid_price, CORBA_Long offer_price, CORBA_Environment &IT_env) {
// ¿øÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
}
´Ü°è5) ¿øÇÏ´Â
ÀÀ¿ë ÇÁ·Î±×·¥ ·ÎÁ÷ Ãß°¡
ÀÏ´Ü Å¬¶óÀÌ¾ðÆ®¿Í ±¸Çö °´Ã¼»çÀÌÀÇ CORBA
Åë½Å ±â´ÉÀ» Á¦°øÇÏ´Â ÆÄÀϵéÀ»
»ý¼ºÇÑ ´ÙÀ½ÀÇ ÀÛ¾÷Àº ÇÁ·Î±×·¡¸ÓÀÇ ¸òÀÌ´Ù.
´ÙÀ½ [±×¸²7-2]´Â
CORBA ÇÁ·Î±×·¡¸Ó¿¡°Ô
¹«½¼ Ãß°¡ Äڵ尡 ÇÊ¿äÇÑÁö º¸¿©ÁØ´Ù. CORBA
fund ±¸Çö ¼¹ö °´Ã¼´Â Áß¾ÓÀÇ ÄÄÇ»ÅÍ¿¡
À§Ä¡ÇÑ´Ù. ´ÙÀ̾ó
¾÷À¸·Î ¿¬°áµÇ¾î ÀÖ´Â ÀÚ±Ý ´ã´çÀÚµéÀº ±×µéÀÇ PC¿¡¼
fund ±¸Çö
¼¹ö °´Ã¼ÀÇ update ¸Þ¼Òµå¸¦
È£ÃâÇÔÀ¸·Î¼ ¿øÇÏ´Â ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
[ ±×¸²7-2
] ¸ñÇ¥ ½Ã½ºÅÛ¿¡¼ÀÇ CORBA°´Ã¼
¸ÕÀú Ŭ¶óÀÌ¾ðÆ®¿¡ Ãß°¡ÀûÀ¸·Î ÇÊ¿äÇÑ ÄÚµå
ºÎºÐÀ» »ý°¢Çغ¸ÀÚ.
- CORBA-OLE±â´ÉÀ»
ÀÌ¿ëÇÏ¿© ºñÁÖ¾ó º£ÀÌÁ÷À̳ª ±âŸ ÇÁ·ÐÆ® °³¹ßµµ±¸¸¦ ÅëÇØ ¼ºñ½º¸¦
Á÷Á¢ È£ÃâÇÒ ¼ö ÀÖ´Â »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ °³¹ßÇÑ´Ù.
- Ŭ¶óÀÌ¾ðÆ®´Â _bind()
¸Þ¼Òµå¸¦ ÅëÇØ fund
±¸Çö °´Ã¼¿¡ ¹ÙÀεùÇÑ´Ù.
À̶§ fund
±¸Çö °´Ã¼ÀÇ À̸§Àº fundUpdateÀÌ´Ù.
- ±¸Çö °´Ã¼¿¡ ¹ÙÀεùÇÑ
ÈÄ update() ¸Þ¼Òµå¸¦
È£ÃâÇÏ¿© ÇØ´ç ÀÚ±ÝÀÇ ³»¿ëÀ» °»½ÅÇÑ´Ù.
ÀÌ·¯ÇÑ Å¬¶óÀÌ¾ðÆ®´Â ±¸Çö °´Ã¼ÀÇ ³»¿ëÀÌ
¹Ù²î´õ¶óµµ ¸Þ¼Òµå È£Ãâ½Ã ÀÎÅÍÆäÀ̽º¸¸ º¯ÇÏÁö ¾Ê´Â´Ù¸é ÀüÇô ¹®Á¦°¡
¾ø´Ù. ¶ÇÇÑ
¼¹ö¿¡ »õ·Î¿î ¸Þ¼Òµå°¡ Ãß°¡µÇ¸é Ŭ¶óÀÌ¾ðÆ®´Â ÀÌ ¸Þ¼Òµå¸¦ ´Ü¼øÈ÷
È£ÃâÇÔÀ¸·Î¼ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù.
Ŭ¶óÀ̾ðÆ®ÀÇ ÄÚµå´Â ÁÖ·Î »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿Í
±¸Çö °´Ã¼ÀÇ ¸Þ¼Òµå¸¦ È£ÃâÇÏ´Â ÄÚµåÀÌ´Ù. ±×·¯³ª
¼¹ö¿¡´Â ÀÌ ¸Þ¼ÒµåÀÇ ½ÇÁ¦ ¼öÇà Äڵ尡 ±¸ÇöµÈ´Ù.
- ¼¹ö Äڵ忡¼ fund_i´Â
fund ÀÎÅÍÆäÀ̽ºÀÇ
±¸Çö °´Ã¼ÀÌ´Ù.
- fund_i ±¸Çö °´Ã¼´Â
Áß¾ÓÀÇ ÄÄÇ»ÅÍ¿¡¼ ¼öÇàµÇ¾î Ŭ¶óÀ̾ðÆ®ÀÇ ¸ðµç update()
¸Þ¼Òµå È£ÃâÀ» ¼öÇàÇÑ´Ù.
fund_i ±¸Çö °´Ã¼´Â CORBA
¼öÇà ¸ðµå¿¡ µû¶ó update()
¸Þ¼Òµå È£Ãâ¶§¸¶´Ù ¼öÇàµÇ°Å³ª ÇϳªÀÇ
±¸Çö °´Ã¼¸¦ °øÀ¯Çϰųª CORBA¿¡
ÀÇÇØ¼°¡ ¾Æ´Ï¶ó °ü¸®ÀÚ°¡ Á÷Á¢ ¼öÇà½ÃŰ´Â µî ´Ù¾çÇÏ°Ô °ü¸®µÉ ¼ö
ÀÖ´Ù.
- fund_i°´Ã¼ÀÇ update ¸Þ¼Òµå´Â ´ÙÀ½ÀÇ ±â´ÉÀ» ¼öÇàÇÑ´Ù.
: ¸ÕÀú passwd¸¦ °Ë»çÇÑ´Ù.
: passwd°¡ Á¤´çÇϸé
: passwd°¡ Á¤´çÇÏÁö
¾ÊÀ¸¸é false°ªÀ»
¹ÝȯÇÏ´Ù.
¸ðµç ÇÁ·Î±×·¥ÀÇ Äڵ尡 ÀÛ¼ºµÇ¸é ÇØ´ç
Äڵ带 ÄÄÆÄÀÏÇÏ¿© Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö ¹ÙÀ̳ʸ®¸¦ ÀÛ¼ºÇÑ´Ù.
´Ü°è6) ÇØ´ç
½Ã½ºÅ۵鿡 °³¹ßµÈ ±¸¼º¿ä¼Ò ¹èÄ¡
°³¹ßµÈ Ŭ¶óÀÌ¾ðÆ® ¹ÙÀ̳ʸ®´Â ÀÚ±Ý ´ã´çÀÚÀÇ
PC¿¡ ¼³Ä¡Çϰí
¼¹ö´Â Áß¾ÓÀÇ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡ÇÑ´Ù. À̶§
Áß¿äÇÑ Á¡Àº Áß¾ÓÀÇ ÄÄÇ»ÅÍ¿¡ ORB µ¥¸óÀÌ
À§Ä¡ÇØ¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. ¹°·Ð
µ¥¸ó ±¸Á¶ ÇüŰ¡ ¾Æ´Ï¶ó DAISó·³
Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö ¶óÀ̺귯¸® ÇüÅ·Π±¸¼ºµÇ¾î µ¥¸óÀÌ ÇÊ¿ä¾ø´Â CORBAÁ¦Ç°µµ
ÀÖ´Ù. ¶ÇÇÑ
±¸Çö °´Ã¼¸¦ CORBA ÀÎÅÍÆäÀ̽º
ÀúÀå¼Ò¿¡ µî·ÏÇØ¾ß ÇÑ´Ù.
¸¸¾à ÀÚ±Ý ´ã´çÀÚÀÇ ¼ö°¡ Áõ°¡ÇÏ¿© Áß¾ÓÀÇ
ÄÄÇ»ÅÍ¿¡ ÀÖ´Â ¼¹öÇϳª·Î 󸮰¡ Èûµé °æ¿ì ±âÁ¸ÀÇ Áß¾Ó ÄÄÇ»ÅÍ¿¡
fund ±¸Çö
°´Ã¼¸¦ Ãß°¡Çϰųª »õ·Î¿î ¼¹ö ÄÄÇ»ÅÍ¿¡ fund
±¸Çö °´Ã¼¸¦ Ãß°¡ÇÔÀ¸·Î¼ °£´ÜÇϰÔ
󸮴ɷÂÀ» È®ÀåÇÒ ¼ö ÀÖ´Ù. ÈÄÀÚÀÇ
°æ¿ì µÎ°³ÀÇ Áß¾Ó ÄÄÇ»ÅͰ¡ ÇϳªÀÇ µ¥ÀÌŸº£À̽º¸¦ °øÀ¯ÇÑ´Ù.
ÀÌó·³ °³¹ßµÈ ±¸¼º¿ä¼Ò¸¦ ¿øÇÏ´Â
½Ã½ºÅÛ¿¡ ¹èÄ¡ÇÑ´Ù.
´Ü°è7) ½Ã½ºÅÛ
±¸µ¿
ÈǸ¢ÇÏ°Ô ½Ã½ºÅÛÀÌ »ç¿ëµÇ´Â Áö ±¸µ¿½ÃÄÑ
º»´Ù. ¹®Á¦°¡
¹ß»ýÇÏ¸é ´ç¿¬È÷ ±¸Çö ÄÚµå ºÎºÐÀ» ¼öÁ¤ÇÑ´Ù.
7¸·À» ¸¶Ä¡¸ç
CORBA´Â ÄÄÆ÷³ÍÆ®
±â¹ÝÀÇ ½Ã½ºÅÛÀ» °³¹ßÇϰųª ±âÁ¸ÀÇ ½Ã½ºÅÛ¿¡ ±â¹ÝÇÑ »õ·Î¿î ½Ã½ºÅÛÀ»
±¸ÃàÇÒ ¶§ »ç¿ëµÈ´Ù. µû¶ó¼
CORBA¸¦ »ç¿ëÇÒ
¶§ ¾î¶² Á¦Ç°À» »ç¿ëÇÒ °ÍÀΰ¡´Â Áß¿äÇÑ °áÁ¤ »çÇ×ÀÌ´Ù.
ÀϹÝÀûÀ¸·Î CORBA
Á¦Ç°À» ¼±ÅÃÇÒ °æ¿ì 2°¡Áö
°í·Á »çÇ×ÀÌ Á¸ÀçÇÑ´Ù: CORBA Ç¥ÁØÀ»
¾ó¸¶³ª ÁؼöÇϴ°¡? ¿Í
ÇöÀçÀÇ ±¸Ãà ȯ°æ¿¡¼ ÇÊ¿äÇÑ °ÍÀÌ ¹«¾ùÀΰ¡?
.
ÀÏ´Ü CORBAÁ¦Ç°ÀÌ
¼±Á¤µÇ¸é À̸¦ ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀ» ±¸ÃàÇÑ´Ù.
ÀÌ ¶§, ÀϹÝÀûÀ¸·Î
°´Ã¼ÁöÇ⠺м®°ú ¼³°è, ±×¸®°í
ÇÁ·ÎÅäŸÀÌÇÎÀ̶ó´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿© ºü¸£°í ¹Ýº¹ÀûÀ¸·Î ½Ã½ºÅÛÀ»
°³¹ßÇÑ´Ù.