¹æ¸í·Ï ¿¡ ¼Ò°¨À» ³²°ÜÁֽʽÿä.
¿©·¯ºÐÀÇ ÀǰßÀÌ Ã¥ÀÇ ³»¿ëÀ» ´õ¿í dzºÎÇÏ°Ô ¸¸µé °Í ÀÔ´Ï´Ù.

ÄÚ¾Æ ÄÚ¹ÙÀÇ ¸ðµç ³»¿ëÀº º» ÀúÀÚ¿Í ¿µÇÑ ÃâÆÇ»ç ±×¸®µµ ¿©·¯ ȸ»çµé¿¡ ÀÇÇØ¼­ ¼ÒÀ¯µÇ¾î ÀÖÀ¾´Ï´Ù. º» ÀúÀÚÀÇ Çã¶ô¾øÀÌ ¹«´Ü º¹»ç ¹× ÀοëÀ» ±ÝÇÕ´Ï´Ù. ÀÌ »çÇ×À» À§¹Ý½Ã ¸ðµç ¹ýÀûÀΠåÀÓÀ» Áö¼Å¾ß ÇÕ´Ï´Ù.
[ ´ÙÀ½ | ÀÌÀü ]

³×¹øÂ° ¸¶´ç. 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 ±¸¼º¿ä¼Ò¸¦ ¾ó¸¶³ª Ãæ½ÇÈ÷ Áö¿øÇÏ´Â °¡?

  1. ÇÊ¿ä·Î ÇÏ´Â ¾ð¾î ¸ÅÇÎÀ» Áö¿øÇÏ´Â °¡?
  2. Çϳª ÀÌ»óÀÇ ¾ð¾î ¸ÅÇÎÀ» Áö¿øÇÏ´Â °¡?

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] ¸ñÇ¥ ½Ã½ºÅÛÀÇ ±¸¼º

  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Á¦Ç°ÀÌ ¼±Á¤µÇ¸é À̸¦ ÀÌ¿ëÇÏ¿© ½Ã½ºÅÛÀ» ±¸ÃàÇÑ´Ù. ÀÌ ¶§, ÀϹÝÀûÀ¸·Î °´Ã¼ÁöÇ⠺м®°ú ¼³°è, ±×¸®°í ÇÁ·ÎÅäŸÀÌÇÎÀ̶ó´Â ¹æ¹ýÀ» »ç¿ëÇÏ¿© ºü¸£°í ¹Ýº¹ÀûÀ¸·Î ½Ã½ºÅÛÀ» °³¹ßÇÑ´Ù.

- 2±³ - [ ´ÙÀ½ | ÀÌÀü ]