°³¿ä
COMÀÌ »ý°Ü³­ ¹è°æ°ú Á¤ÀÇ¿¡ ´ëÇØ °£´ÜÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.
ÄÄÆ÷³ÍÆ® ÇÁ·Î±×·¡¹Ö
º£ÀÌÁ÷À» ¾Æ½Ã³ª¿ä? ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®»ç¿¡¼­´Â GW-Basic, Quick-Basicµî Á¦Ç°¸í¿¡ BasicÀ» ºÙ¿©¼­ ÅØ½ºÆ® ±â¹Ý ¿î¿µÃ¼Á¦ÀÎ DOS(Disk-Operating System) ȯ°æ¿¡¼­ »ç¿ëµÇ¾î ¿À´Ù°¡ ¿î¿µÃ¼Á¦°¡ À©µµ¿ì ȯ°æÀ¸·Î ¿Å°Ü¿À¸é¼­ À©µµ¿ì ¹öÀüÀÎ Visual Basic 1.0À» 1991³â¿¡ ¹ßÇ¥ÇÏ¿´½À´Ï´Ù. »ó¾÷¿ëÀüÀÇ º£ÀÌÁ÷(BASIC:Beginner's All-purpose Symbolic Instruction Code)Àº 1964³â ¹Ì±¹ ´ÙÆ®¸Ó½º ´ëÇп¡¼­ Àü»êÇÐÀ» Àü°øÇÏÁö ¾ÊÀº ºñÀü°ø ÇлýµéÀÇ ÇÁ·Î±×·¡¹Ö ±³À°À» ¸ñÀûÀ¸·Î Á¦ÀÛÇÑ ´ëÈ­Çü ¾ð¾î¿´½À´Ï´Ù. MSÀÇ Visual Basic¿ª½Ã Ãʺ¸ÀÚµéÀÌ ½±°Ô ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù´Â ÃëÁö´Â ±×´ë·Î ¿´½À´Ï´Ù. ÀÌ·¯ÇÑ Visual Basic¿¡¼­´Â VBX¶ó´Â °ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ¾ú´Âµ¥¿ä. ¿¹¸¦ µé¸é ¿É¼Ç±×¸¯½º °è»ê±â¸¦ VBX·Î ¸¸µé¾ú´Ù¸é Ãʺ¸ÀÚ´Â ÀÌ VBX¸¦ Ãß°¡ÇÏ´Â ÀÛ¾÷¸¸À¸·Î ÀÚ½ÅÀÇ ÇÁ·Î±×·¥¾È¿¡¼­ ¿É¼Ç±×¸¯½º °è»ê±â¸¦ Ȱ¿ëÇÒ ¼ö ÀÖ¾úÁö¿ä. ±»ÀÌ Àڽŵµ ¿É¼Ç±×¸¯½º °è»ê±â¸¦ ¸¸µé Çʿ䰡 ¾ø½À´Ï´Ù. MS³ª ¶Ç´Â ´Ù¸¥ ½áµåÆÄƼ °³¹ßȸ»ç¿¡¼­ VBX¸¦ °³¹ßÇØÁÖ¸é »ç¿ëÇϱ⸸ ÇÏ¸é µÇ¾úÁÒ. ÀÌ·± VBX°¡ OCX(OLE Cntrolextensions)¶ó´Â °ÍÀ¸·Î ´ëüµÇ¾ú½À´Ï´Ù. ¿Ö º¯Çذ¬À» ±î¿ä? VBXó·³ ÄÄÆ÷³ÍƮȭ ½ÃÄѼ­ À̸¦ Visual Basic¿¡¼­¸¸ÀÌ ¾Æ´Ï¶ó ´Ù¸¥ ¾ð¾î, ¶Ç´Â ¿¢¼¿À̳ª ¿öµå¿¡¼­µµ ÀçȰ¿ë¼ºÀ» ±Ø´ëÈ­Çϱâ À§Çؼ­ÀÔ´Ï´Ù. ¶ÇÇÑ ±â¼úÀûÀ¸·Î´Â 16bit ±âÁØ¿¡¼­ 32bit±âÁØÀ¸·Î ÀÛ¼ºµÈ´Ù´Â °ÍÀÌÁÒ. Windows3.X¿¡¼­ Windows95·Î À©µµ¿ìÁî Ç÷§ÆûÀÇ Ä¿´Ù¶õ º¯È­¿Í ¸Â¹°¸° °Ì´Ï´Ù.

¨ç OCX´Â ¹«¾ùÀϱî¿ä?
À̾߱⠵ǾúµíÀÌ OCX´Â ±âÁ¸ÀÇ 16ºñÆ®ÀÇ VBX ´ë½Å 32ºñÆ®·Î ±¸¼ºµË´Ï´Ù. ÀÌ »õ·Î¿î ÄÁÆ®·Ñ Ç¥ÁØ ¹æ½ÄÀº ±âÁ¸¿¡´Â ºñÁÖ¾ó º£ÀÌÁ÷ ÇÁ·Î±×·¥¿¡¸¸ ±¹ÇѵǾî ÀÖ´ø °ÍÀ» À©µµ¿ì ½Ã½ºÅÛ ¸®¼Ò½º·Î ¼­·Î °øÀ¯ÇÒ ¼ö ÀÖµµ·Ï OLE ±â´ÉÀÌ Ãß°¡µÈ ¹æ½ÄÀ̶ó°í ÀÌÇØÇÏ½Ã¸é µË´Ï´Ù. ÀÌó·³ OCX°¡ À©µµ¿ì ½Ã½ºÅÛ ¸®¼Ò½ºÀÇ °øÀ¯¸¦ ±â¹ÝÀ¸·Î ¼­·ÎÀÇ °øÀ¯°¡ °¡´ÉÇÔÀ¸·Î ºñÁÖ¾ó º£ÀÌÁ÷¿¡¼­ ¸¸µç ÄÁÆ®·ÑÀ» ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­µµ µ¿ÀÏÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. ÀڱⰡ ÇÊ¿äÇÑ ºÎºÐÀÇ ÄÁÆ®·ÑÀ» Á÷Á¢ Á¦ÀÛÇϰí, ´Ù¸¥ ÇÁ·Î±×·¥¿¡¼­ ÀÌ ÄÁÆ®·ÑÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ´Â ¶ÇÇÑ À©µµ¿ì»Ó¸¸ÀÌ ¾Æ´Ï¶ó ÀÎÅͳÝÀ̶ó´Â °Å´ëÇÑ ¸ÁÀ» ÅëÇØ¼­µµ °øÅëÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ±æÀ» ¸¸µé¾î ÁÖ´Â ¹æ½ÄÀÌ µÇ¾ú½À´Ï´Ù. À̰ÍÀÌ OCX°¡ ¸¸µé¾îÁö°Ô µÈ °¡Àå Áß¿äÇÑ ÀÌÀ¯¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¨è ActiveX¶õ ¹«¾ùÀϱî¿ä?
ActiveX´Â ´ÜÁö OCXÀÇ À̸§À» º¯°æÇÑ °Í¿¡ ºÒ°úÇÕ´Ï´Ù. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿¡¼­ °ø½Ä ¹ßÇ¥ÇÑ ActiveX¶ó´Â °ÍÀº ±âÁ¸ÀÇ OCX¿Í º°¹Ý Â÷À̸¦ °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù. ´Ù¸¸ ÀÎÅͳÝÀÇ Ç¥Áؾȿ¡ ÇØ´çÇÏ´Â °³³äÀûÀÎ Àǹ̿¡¼­ °³¸íÇϸ鼭 ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®ÀÇ ¸ñÇ¥¸¦ ¾Ë¸®±â À§ÇÑ ¹æ¹ýÀΰÅÁÒ.

¨é OLE(Object Linking Embedding)¶õ?
OLE(Object Linking Embedding) : ´ë»óÀÌ µÇ´Â ÆÄÀÏÀ̳ª ÇÁ·Î±×·¥À» ¿¬°áÇÏ¿© ³¢¿ö ³Ö´Â ¹æ¹ýÀ» °¡¸®Åµ´Ï´Ù. ¿öµå ÇÁ·Î±×·¥¿¡¼­ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ ÀÖ´Â µµÇ¥³ª ±×¸²µéÀ» °³Ã¼ »ðÀÔÀ» ÅëÇØ¼­ ³¢¿ö ³Ö´Â ¹æ½ÄÀÌ OLEÀÇ ÇÑ ´ëÇ¥ÀûÀÎ ¿¹ÀÔ´Ï´Ù. À©µµ¿ì 3.1·ÎºÎÅÍ Ç¥ÁØ ±â´ÉÀ¸·Î Á¦°øµÇ¾ú½À´Ï´Ù. OLE¿¡´Â Å©°Ô ¸µÅ©¿Í ÀÓº£µùÀÇ ±â¼úÀÌ Àִµ¥ ÀÌ Áß ¸µÅ©´Â ¿øÁ¤º¸°¡ º¯°æµÇ¸é ±×°ÍÀ» »ç¿ëÇÑ ¹®¼­¿¡µµ º¯°æÀÌ ¹Ý¿µµÇ´Â °ÍÀ» ¸»Çϸç, ÀÓº£µå´Â ¹®¼­¸¦ ÆíÁýÇÏ´Â °æ¿ì ÀÚµ¿À¸·Î µ¥ÀÌÅ͸¦ ÀÛ¼ºÇÏ´Â ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù.

[±×¸² 1-1] MS ¿öµå¿¡¼­ÀÇ °³Ã¼ »ðÀÔ

[±×¸² 1-2] MS ¿öµå¿¡¼­ ¿¢¼¿Ã­Æ®»ðÀÔ

OLE´Â °´Ã¼(Object)¶Ç´Â ¾îÇø®ÄÉ¿¡¼ÇÀ̶ó°íµµ ÇÒ ¼ö Àִµ¥ ÀÌ °´Ã¼°£ÀÇ µ¥ÀÌŸ ±³È¯¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÑ ³ë·ÂÀÇ °á°ú¹°ÀÔ´Ï´Ù. ±âº»ÀûÀ¸·Î ¾îÇø®ÄÉÀ̼ǰú ¾îÇø®ÄÉÀ̼ÇÀº °¢ÀÚ°¡ µ¶¸³ÀûÀÎ °ø°£¿¡¼­ µ¶¸³ÀûÀ¸·Î ½ÇÇàµÇµµ·Ï µÇ¾î ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¾îÇø®ÄÉÀ̼ǵ鰣¿¡ Ctrl+C¿Í Ctrl+V·Î ¹®ÀÚ¿­À» ¼­·Î ÁÖ°í ¹Þ´Â ±â¼úÀº ¸¶¹ý¿¡ ÇØ´çµÇ´Â ÀÏÀÔ´Ï´Ù. ¾î·°Å³ª ÀÌó·³ ¾îÇø®ÄÉÀ̼ǰ£ÀÇ µ¥ÀÌÅÍ ±³È¯¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇÏ¿© Clipboard¿Í DDE(Dynamic Data exchange)¸¦ ÀÌ¿ëÇÏ¿´´Âµ¥ Clipboard´Â »ç¿ëÇϱⰡ °£ÆíÇØ¼­ ³Î¸® »ç¿ëµÇ°í ÀÖÁö¸¸, DDE±â¼úÀº OLE±â¼úÀÇ µîÀå°ú ÇÔ²² Á¡Â÷ ÀÚÃ븦 °¨Ãß°Ô µÇ¾ú½À´Ï´Ù. 1990³â´ë ÈĹݿ¡ ³ª¿Â OLE±â¼úÀº ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ Object¸¦ »ðÀÔÇÏ´Â ±â¼ú·Î¼­ ÇöÀç±îÁöµµ ±¤¹üÀ§ÇÏ°Ô »ç¿ëµÇ°í ÀÖÀ¸¸ç OLE¸¦ Èí¼öÇÏ¿© ¸¸µé¾îÁø °ÍÀÌ COMÀÔ´Ï´Ù. COM±â¼úÀÌ ´«¿¡ º¸ÀÌÁö ¾Ê´Â ¾ÆÅ°ÅØÃÄÀûÀÎ ¼º°ÝÀÌ °­ÇÏ´Ù¸é, ActiveX±â¼úÀº COM±â¼úÀ» ºñÁÖ¾óÇÑ È¯°æÀ¸·Î ±¸Ã¼È­½ÃŲ °ÍÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¨ê ÄÄÆ÷³ÍÆ® ÇÁ·Î±×·¡¹Ö
ÄÄÆ÷³ÍÆ®ÀÇ »çÀüÀûÀÎ Àǹ̴ '±¸¼º¿ä¼Ò'¸¦ À̾߱âÇÕ´Ï´Ù. ±×·¯¸é ÄÄÆ÷³ÍÆ® ÇÁ·Î±×·¡¹ÖÀ̶õ ¹«¾ùÀϱî¿ä? ¿¹¸¦ µé¾î ÀÚµ¿Â÷´Â ¿©·¯ °¡Áö ºÎǰµéÀÌ ¸ð¿©¼­ ÇϳªÀÇ ÀÚµ¿Â÷°¡ ¿Ï¼ºµÇµíÀÌ ÇÁ·Î±×·¥ÀÇ ¿©·¯ °¡Áö ºÎǰÀÇ ¿ªÇÒÀ» ÇÏ´Â ÄÄÆ÷³ÍÆ®¸¦ ÀÌ¿ëÇÏ¿© ÇϳªÀÇ ÇÁ·Î±×·¥À» Á¦ÀÛÇÏ´Â ¹æ¹ýÀ» °¡¸®Å°´Â °ÍÀÔ´Ï´Ù. ÇöÀç¿Í °°Àº ±â´ÉÀÌ »ó´çÈ÷ ¸¹Àº ÇÁ·Î±×·¥À» Á¦ÀÛÇÒ °æ¿ì ±â°£°ú ºñ¿ëÀÇ ¿©·¯ °¡Áö ¹®Á¦°¡ »êÀçÇØ Àֱ⠶§¹®¿¡ ÇÁ·Î±×·¡¸Ó°¡ óÀ½ºÎÅÍ ¸ðµç °ÍÀ» Á¦ÀÛÇÒ ¼ö ¾øÀ¸¹Ç·Î ÀÌ·± ¹®Á¦µéÀ» ÇØ°áÇÏ´Â ¹æ¹ýÀÌ ¹Ù·Î ÄÄÆ÷³ÍÆ®¸¦ ÀÌ¿ëÇÏ´Â ÇÁ·Î±×·¡¹ÖÀÎ °ÍÀÔ´Ï´Ù. Á¶°¢Á¶°¢ ºÎǰó·³ ÄÄÆ÷³ÍƮȭÇÏ¿© ¼­·Î ÇÕüÇÏ¸é µÇ´Ï±ñ¿ä. ±×·¯±â¿¡ ÄÄÆ÷³ÍÆ®´Â ¼­·Î°£ÀÇ »óÈ£ ±³·ù°¡ °¡´ÉÇÑ ÀåÁ¡À» Áö´Ï°í ÀÖ½À´Ï´Ù. °¢°¢ ´Ù¸¥ ÄÄÆ÷³ÍÆ®°£ÀÇ ±³·ù¿Í ÇϳªÀÇ ÄÄÆ÷³ÍÆ® ¾È¿¡ ´Ù¸¥ ÄÄÆ÷³ÍÆ®¸¦ Æ÷ÇÔÇÒ ¼öµµ ÀÖÀ¸¸ç ¿ÜºÎ¿¡ ÀÖ´Â ´Ù¸¥ ÄÄÆ÷³ÍÆ®¿ÍÀÇ ±³·ù°¡ °¡´ÉÇÕ´Ï´Ù. ±×¸®°í ±â´ÉÀÌ º¯°æµÉ °æ¿ì¿¡´Â »ç¿ëµÈ ÄÄÆ÷³ÍÆ®¸¸ º¯°æÇÏ¸é ±¸ÃàµÇ¾îÁ® ÀÖ´Â ÇÁ·Î±×·¥¿¡ ±× °á°ú°¡ ¹Ý¿µµÇ´Â ¿©·¯ °¡Áö ÀåÁ¡À» °¡Áø °ÍÀÌ ÄÄÆ÷³ÍÆ®¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹ÖÀÇ ÀåÁ¡ÀÎ °ÍÀÔ´Ï´Ù. ÄÄÆ÷³ÍÆ®´Â ´Ü¼øÈ÷ Àç»ç¿ëÇÒ ¼öÀÖ°Ô Çß´Ù°í ÇØ¼­ ÄÄÆ÷³ÍƮȭÇß´Ù°í ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. ¿¹¸¦ µé¸é DLL¿¡ ¿ÀǵǾî ÀÖ´Â API¸¦ »ç¿ëÇϸé DLLÀ» ·Îµå¸¸ Çϸé DLL¿¡ µé¾îÀÖ´Â ±â´ÉÀ» ÀçÀÌ¿ëÇÒ ¼ö ÀÖÁö¸¸ ´Ü¼øÇÏ°Ô ÀÌ·¸°Ô API¸¦ °øÀ¯ÇÏ´Â ¹æ¹ýÀº ÄÄÆ÷³ÍÆ®¶ó°í º¸±â´Â Èûµì´Ï´Ù. ±× ÀÌÀ¯´Â ÀçÀÌ¿ë °¡´É¼ºÀÌ ¶³¾îÁö±â ¶§¹®ÀÔ´Ï´Ù.ºÎǰȭ°¡ ÁøÇàµÇ·Á¸é ¸ÕÀú ºÎǰÀ» ¸¸µç ÀÌ¿Í ºÎǰÀ» »ç¿ëÇÏ´Â À̸¦ Æ÷ÇÔÇÑ ½ÃÀå¿¡¼­ÀÇ ±Ô°ÝÈ­°¡ ÁøÇàµÇ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ±×·¸Áö¾Ê°í DLL·Î Äڵ常 ºÐ¸®µÇ´Â Á¤µµ¶ó¸é ¼­ºê·çƾÀ» ´Ù¸¥ÆÄÀÏ·Î ÀúÀåÇß´Ù´Â °Í°ú º°¹Ý ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. ÄÄÆ÷³ÍÆ®°¡ µÇ±âÀ§Çؼ­´Â ÄÄÆ÷³ÍÆ® »ç¿ëÀÚ¿Í ÄÁ¼¾¼­½º°¡ ÀÌ·ç¾îÁ®¾ß ÇÕ´Ï´Ù. ±×·¯¹Ç·Î ÄÄÆ÷³ÍÆ®¶ó°í ºÒ¸®±â À§Çؼ­´Â MS»ç°¡ Á¦¾ÈÇÏ´Â ±Ô°Ý¿¡ ¸Â°Ô DLLÀ» Á¦ÀÛÇϰųª ȤÀº ±×·¯ÇÑ DLLÀ» »ç¿ëÇÏ¿©¾ßÇÕ´Ï´Ù. ±× ±Ô°ÝÀº VBX, OCX, ActiveXÄÄÆ÷³ÍÆ®µîÀ¸·Î ±â¼úÀû ¹ßÀüÀ» °ÅµìÇÏ¿© ÇöÀç´Â COMÀ¸·Î ÅëÀϵǾú½À´Ï´Ù. ÀÌ·¸µí ¿ÀÇǽº ÇÁ·Î±×·¥³¢¸®ÀÇ ¹®¼­¸¦ °áÇÕÇϱâ À§ÇÑ ±â¼ú¿¡¼­ ½ÃÀÛÇÏ¿© Áö±ÝÀÇ ÄÄÆ÷³ÍÆ®´Â ³×Æ®¿öÅ©, ¾ð¾î, Çϵå¿þ¾î»ó°ü¾øÀÌ Á¶¸³°¡´ÉÇÑ ºÎǰÀ¸·Î °Åµì³ª°í ÀÖ½À´Ï´Ù. ÄÄÆ÷³ÍÆ®ÀÇ Á¶°Ç CBDÀÇ °³³äÀº ¿ÀºêÁ§Æ® ÁöÇâ ÇÁ·Î±×·¡¹Ö, Áï, OOP¿¡¼­ ¿Ô½À´Ï´Ù. ¸ðµâ¼³°è, ĸ½¶È­, »ç¾ç°ú ±¸ÇöÀÇ ºÐ¸®µîÀÇ OOPÀÇ ±âº»°³³äÀº CBD¿¡ ±×´ë·Î °è½ÂµÇ¾ú½À´Ï´Ù. µû¶ó¼­ ÀÌ µÎ °³³äÀº È¥µ·Çϱ⠽±½À´Ï´Ù¸¸ ÄÄÆ÷³ÍÆ®´Â ¿ÀºêÁ§Æ®º¸´Ùµµ ´õ µ¶¸³ÀûÀÌ°í ±³È¯°¡´ÉÇÑ ºÎǰÀ» ¸»ÇÕ´Ï´Ù. ÄÄÆ÷³ÍÆ® ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ °³³äÀûÀÎ ÀÌÇØ¸¦ µ½±â À§Çؼ­ OOP(Object Oriented Programming)¿¡ ´ëÇÑ °³³äÀ» Âü°íÇϼ¼¿ä.

COM
¨ç COMÀÇ Åº»ý
±âº»ÀûÀ¸·Î´Â ¸ÖƼŽºÅ·°ú ÇÁ·Î¼¼½º°£ÀÇ Åë½ÅÀ» À§ÇØ Á¦¾ÈµÈ °ÍµéÀÌ ¹Ù·Î DLL, RPC, DDE¿Í°°Àº °³³äÀÔ´Ï´Ù.

DLL(dynamic Link Library) µ¿Àû¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÑ ÇÁ·Î¼¼½º°£ÀÇ °øÀ¯¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ¸·Î UNIX¿¡¼­ »ç¿ëÇÏ´Â °øÀ¯¶óÀ̺귯¸®¿Í °øÀ¯¸Þ¸ð¸®¿Í °°Àº ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù, ÇöÀçÀÇ À©µµ¿ì¸¦ ±¸¼ºÇÏ´Â ÆÄÀϵéÀÇ »ó´çºÎºÐÀ» Â÷ÁöÇϰí ÀÖÀ¸¸ç »ç¿ëÀÚ°¡ Á÷Á¢ Á¦ÀÛÇÏ¿© »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
RPC(Remote Process Communication) ÇÁ·Î¼¼½º°£ÀÇ ¿ø°ÝÈ£ÃâÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀ¸·Î ´Ù¸¥ ¿î¿µÃ¼Á¦¿¡¼­µµ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù, ¿äÁò ºÐ»êȯ°æ±â¼úÀÇ ¹ßÀü°ú ´õºÒ¾î °³³äÀûÀÎ Çâ»óÀ» ÀÌ·ç°í ÀÖ½À´Ï´Ù.
DDE(Dynamic Data Exchange) ÇÁ·Î¼¼½º°£ÀÇ µ¥ÀÌŸ¸¦ µ¿Àû󸮸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ¸·Î ±âÁ¸ÀÇ Á¦À۵Ǿî ÀÖ´Â ÇÁ·Î±×·¥ÀÇ ÇÁ·Î¼¼½º¿Í »õ·Î¿î ÀÀ¿ëÇÁ·Î±×·¥°£ÀÇ µ¥ÀÌŸ ±³È¯¿¡ ÁÖ·Î »ç¿ëµÇ¾ú½À´Ï´Ù.

COM¿¡ ´ëÇØ¼­ À̾߱â ÇÏÀÚ¸é ¸ÕÀú DDE¿Í OLE¸¦ ¸»ÇÏÁö ¾ÊÀ» ¼ö ¾ø½À´Ï´Ù. DDE´Â Ŭ¸³º¸µå¸¦ »ç¿ëÇÏ´Â °Íó·³, Windows¿¡¼­ ÀϺΠµ¥ÀÌÅ͸¦ Á÷Á¢ ±³È¯ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀ¸·Î DDE ÇÁ·Î±×·¡¹ÖÀ» ÇØº» °æÇèÀÌ ÀÖ´Â »ç¶÷µéÀº ¾Ë ¼ö ÀÖÁö¸¸ À©µµ¿ì¿¡¼­ Á¦°øÇϰí ÀÖ´Â DDE¸¦ ÅëÇØ µ¥ÀÌÅÍÀÇ ±³È¯À» ¼öÇàÇÏ¸é ¼Óµµ¿Í µ¥ÀÌÅÍÀÇ ¼Õ½ÇÀÇ ¹®Á¦°¡ ¹ß»ýÇÕ´Ï´Ù. ÀÌ¿¡ OLE·Î ¹ßÀüµÇ´Âµ¥ ÀÌ´Â OLE ¼­¹ö ÇÁ·Î±×·¥ÀÇ µ¥ÀÌÅ͸¦ OLE Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À¸·Î º¹»çÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. °£´ÜÇÏ°Ô ¼³¸íÇÏÀÚ¸é OLE ÄÁÆ®·ÑÀ» ÀúÀåÇÒ¶§ ¼­¹ö ¾ÖÇø®ÄÉÀ̼ÇÃø¿¡ ¸µÅ©¸ðµåµ¥ÀÌŸ°¡ ÀúÀåµÇ°í µ¥ÀÌÅÍÀÇ ¸µÅ© Á¤º¸¸¸ÀÌ »ðÀ﵃ °÷ÀÇ ÆÄÀÏ¿¡ º¸°üµË´Ï´Ù. ÀÓº£µå ¸ðµå µ¥ÀÌÅÍ´Â OLE ÄÁÅ×ÀÌ³Ê ÄÁÆ®·ÑÃø¿¡¼­ °ü¸®µÇ´Âµ¥ ÀÛ¼ºµÈ ¸ðµç µ¥ÀÌÅÍ´Â »ðÀ﵃ ÆÄÀÏ¿¡ º¸°üµË´Ï´Ù. ¼­¹ö ¾ÖÇø®ÄÉÀ̼ǿ¡ ÀÖ´Â µ¥ÀÌÅÍ´Â ¿©·¯ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ÂüÁ¶ÇÒ ¼ö ÀÖÁö¸¸ ÄÁÅ×ÀÌ³Ê ÄÁÆ®·ÑÃøÀÇ µ¥ÀÌŸ´Â ´Ù¸¥ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ ÂüÁ¶ÇÒ ¼ö ¾ø½À´Ï´Ù. MS»ç´Â Windows3.1 OLE¸¦ OLE2·Î ¾÷µ¥ÀÌÆ®Çϸ鼭 OLE Automation°ú OLE ControlsÀÇ ±â´ÉÀ» Ãß°¡ÇßÀ¸¸ç, Windows95ÀÇ Shell ÇÁ·Î±×·¥ÀΠŽ»ö±â(Explorer.exe)´Â OLE2 ±â¼úÀ» ±â¹ÝÀ¸·Î ÇØ¼­ ±¸ÇöÇß½À´Ï´Ù. ±×¸®°í OLE Controls´Â ÀÎÅÍ³Ý È®Àå °¡´ÉÇϵµ·ÏÇϸ鼭 ActiveX Controls·Î º¯°æÇÕ´Ï´Ù. ÃÖ±Ù¿¡ OLE±â¼úÀº MS»çÀÇ DNAÇÁ·ÎÁ§Æ®¿Í ÇÔ²² COMÀ¸·Î ¸í¸íµÇ¸é¼­ sinks, in-place activation, structured storageµîÀÌ Ãß°¡µÇ¸ç, Windows2000¿¡ °¡¼­´Â COMÀÇ ¼­ºñ½º¿Í ±â´ÉÀ» È®ÀåÇÑ COM+·Î ÁøÈ­ÇÏ°Ô µË´Ï´Ù.

¨è COMÀÇ ±¸Á¶
COMÀÇ ÀϹÝÀûÀÎ ±¸Á¶´Â Win32 DLL Çü½Ä°ú EXE Çü½ÄÀ¸·Î ±¸¼ºµË´Ï´Ù. DLL°ú EXE·Î ±¸¼ºµÇ±â ¶§¹®¿¡ ƯÁ¤¾ð¾î¿¡ ±¹ÇѵǴ °ÍÀÌ ¾Æ´Ñ ¾ð¾î µ¶¸³ÀûÀ̸ç, ¹ÙÀ̳ʸ® ÇüÅ·Π¿©·¯ °¡Áö ÇÁ·Î±×·¥°ú ÇÁ·Î±×·¡¹Ö Åø¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. COMÀÇ ½ÇÁ¦ »ç¿ë¿¡¼­´Â COM¿¡ Æ÷ÇԵǾî Àִ Ŭ·¡½º ¸Þ¼­µå¸¦ ½ÇÇà½Ã۱â À§ÇÑ ÀÎÅÍÆäÀ̽ºÀÇ »ç¿ëÀÌ °¡Àå Áß¿äÇÑ ºÎºÐÀÌ µË´Ï´Ù. ÀÌ·± COMÀº À©µµ¿ì ·¹Áö½ºÆ®¸®¿¡¼­ ¼­¹ö·Î µî·ÏµÇ¾î ¿ÜºÎ ÇÁ·Î±×·¥¿¡¼­ Ŭ¶óÀÌ¾ðÆ®·Î COMÀ» ºÒ·¯µé¿© »ç¿ëÇÒ ¼ö ÀÖ´Â ¼­¹öÀÇ ±â´ÉÀ» ¼öÇàÇÏ´Â °ÍÀÔ´Ï´Ù.

¨é COM ÀÎÅÍÆäÀ̽º
ÄÄÆ÷³ÍÆ®´Â ¿©·¯ °´Ã¼·Î ±¸¼ºÀÌ µË´Ï´Ù. ÀÌ ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇϱâ À§Çؼ­´Â ¼ÓÇØÀÖ´Â °´Ã¼°¡ ¾î¶² µ¥ÀÌŸ¸¦ °¡Áö°í ÀÖ°í ¾î¶² ÇÔ¼ö°¡ ÀÖ´ÂÁö¸¦ ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. COM¿¡ ¼ÓÇØÀÖ´Â °´Ã¼¸¶´Ù ÇÁ·ÎÆÛƼ¿Í ¸Þ½îµå¸¦ ¾Ë¸®±â À§ÇÑ ¹æ¹ýÀ¸·Î »ç¿ëÀÚ¿¡°Ô ÀÎÅÍÆäÀ̽º(Interface)¸¦ Á¦°øÇÕ´Ï´Ù. »ç¿ëÀÚ´Â »ç¿ëÀÚÀÇ ÇÁ·Î±×·¥¿¡ COM¿¡¼­ Á¦°øµÇ´Â ÀÎÅÍÆäÀ̽º¸¦ ImportÇϰí ÀÎÅÍÆäÀ̽º¸¦ ÅëÇÏ¿© COM ³»ºÎÀÇ °´Ã¼¸¦ »ç¿ëÇÕ´Ï´Ù. COMÀÇ °³Ã¼°£ Åë½Å¿¡´Â ±âº»ÀûÀ¸·Î µÎ °¡ÁöÀÇ ÀÎÅÍÆäÀ̽ºÀÎ IUnknown°ú IDispatch°¡ »ç¿ëµË´Ï´Ù.

IUnknown ¸ðµç COM°³Ã¼´Â IUnknown ÀÎÅÍÆäÀ̽º¸¦ ¹Ýµå½Ã ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. IUnknown ÀÎÅÍÆäÀ̽º´Â ¼¼ °¡Áö ±âº»ÀûÀÎ ¸Þ¼­µåÀÎ QueryInterface, AddRef, Release¸¦ Á¤ÀÇÇϴµ¥ AddRef¿Í Release ¸Þ¼­µå´Â °³Ã¼ÀÇ »ý¼º, ¼Ò¸êÀ» °ü¸®Çϸç COM °³Ã¼ ÀÚ½ÅÀÇ ÂüÁ¶È¸¼ö¸¦ Áõ°¡½ÃŰ°Å³ª °¨¼Ò½ÃŰ´Â ±â´ÉÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ÂüÁ¶ ȸ¼ö°¡ 0À¸·Î µÇ¸é ±× °³Ã¼´Â ¼Ò¸êÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. QueryInterface´Â ƯÁ¤ ÀÎÅÍÆäÀ̽º¿¡ °üÇÏ¿© ±× °³Ã¼¿¡ ÁúÀǸ¦ ´øÁö´Â ¿ªÇÒÀ» Çϰí ÀÖ½À´Ï´Ù. »ç¿ëÇϰíÀÚ ÇÏ´Â ÄÄÆ÷³ÍÆ®ÀÇ ÀÎÅÍÆäÀ̽ºÀÇ Á¤º¸¸¦ ¾Ë¾Æ³¾ ¼ö Àִµ¥ ÀÌ ¸Þ¼­µå´Â ÁúÀÇµÈ ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ½Äº°ÀÚ¸¦ ÀÎÀÚ·Î ¹Þ¾Æ¼­ ±× ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ °£Á¢Æ÷ÀÎÅ͸¦ ¸®ÅÏ °ªÀ¸·Î µ¹·ÁÁÖ°Ô µË´Ï´Ù. ¸¸¾à ¿äûµÈ ÀÎÅÍÆäÀ̽º°¡ ±× °³Ã¼°¡ Á¦°øÇÏÁö ¾Ê´Â °ÍÀ̶ó¸é ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù.
IDispatch IDispatch ÀÎÅÍÆäÀ̽º´Â ÀÚµ¿È­(Automation)À» Áö¿øÇϱâ À§ÇØ IUnknown ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ ÆÄ»ýµÈ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ¸Þ¼­µå³ª ¼Ó¼º¿¡ ÇØ´çÇÏ´Â µð½ºÆÐÄ¡ ½Äº°ÀÚ¸¦ ¾Ë¾Æ³»¾î ÀÚµ¿È­ ÄÄÆ÷³ÍÆ®¿¡¼­ Á¦°øÇÏ´Â ¼Ó¼ºÀ̳ª ¸Þ¼­µå¿¡ Á¢±ÙÇÏ´Â µîÀÇ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÃʱâÀÇ ¹ÙÀεùÀ» »ç¿ëÇÏ¿© °³Ã¼¿¡ Á¢±ÙÇϰíÀÚ ÇÒ ¶§¿¡´Â IUnknown ÀÎÅÍÆäÀ̽º°¡ »ç¿ëµÇ¸ç, ÈıâÀÇ ¹ÙÀεùÀ» »ç¿ëÇÏ¿© °³Ã¼¿¡ Á¢±ÙÇϰíÀÚ ÇÒ ¶§¿¡´Â IDispatch ÀÎÅÍÆäÀ̽º°¡ »ç¿ëµË´Ï´Ù.


¨ê Automation
AutomationÀº »ç¿ëÀÚµéÀÌ ±âÁ¸ÀÇ ÇÁ·Î±×·¥ÀÇ ³»¿ë°ú ±â´ÉÀÇ ÀåÁ¡À» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ±â¼ú·Î½á ÀÎÅÍÆäÀ̽º¿¡ ±â¹ÝÀ» µÐ Ç¥ÁØ ¼ÒÇÁÆ®¿þ¾î ¾ÆÅ°ÅØÃ³ÀÎ COM(Component Object Model)¿¡ ±â¹ÝÀ» µÎ°í ÀÖ½À´Ï´Ù. ±×¸®°í AutomationÀº ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®·Î ±¸¼ºµÇ´Âµ¥ Automation Ŭ¶óÀÌ¾ðÆ®¸¦ ÈçÈ÷ Automation ÄÁÆ®·Ñ·¯¶ó°íµµ ÇÕ´Ï´Ù. Automation ¼­¹ö´Â ¼­ºñ½º¸¦ Á¦°øÇϰí Automation ÄÁÆ®·Ñ·¯´Â ¼­¹ö¿¡ ¿¬°áÇÏ¿© ¼­¹öÀÇ ±â´ÉÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù. °í¼öPlus´Â ¼­ºñ½º¸¦ Á¦°øÇÏ´Â Automation ¼­¹ö°¡ µÇ°í ¿©·¯ºÐÀÌ ÀÛ¼ºÇÏ½Ã°Ô µÉ GOM Ŭ¶óÀÌ¾ðÆ®´Â Automation ÄÁÆ®·Ñ·¯°¡ µË´Ï´Ù.

Automation¿¡¼­ °´Ã¼µéÀÇ ¼Ó¼º°ú ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â ¹æ¹ý¿¡´Â µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. Çϳª´Â dispatch ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇÏ´Â °ÍÀ̰í Çϳª´Â vtableÀ» ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ µÑÀº ¹ÙÀεù(binding)ÀÇ Â÷ÀÌÀä. ¹ÙÀεùÀº »çÀüÀûÀÎ Àǹ̷Π"µ¿¿©¸Å´Â ¹­´Â"ÀÇ Àǹ̷ΠÄÄÆ÷³ÍÆ®¸¦ ¾ðÁ¦ µ¿¿©¹­¾î¼­ ±×µéÀ» »ç¿ëÇÒ ¼ö Àִ°¡ ÀÔ´Ï´Ù. dispatch ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ´Â Èıâ¹ÙÀεù(late binding)°ú vtableÀ» ÀÌ¿ëÇÏ´Â Ãʱâ¹ÙÀεù(Early Binding)À̶ó°í ÇÕ´Ï´Ù.

Ãʱâ¹ÙÀεù(Early Binding) vTable¹ÙÀεù, ¹Ýµå½Ã ŸÀÔ¶óÀ̺귯¸® Á¦°ø

dim obj As AddBack
Set obj = New AddBack
obj.someMethod

ÀÎÅÍÆäÀ̽º ÁÖ¼Ò´Â ÀÎÅÍÆäÀ̽º°¡ Áö¿øÇÏ´Â ÇÔ¼öµé¿¡ ´ëÇÑ ÁÖ¼Ò°ª Å×À̺íÀ» °¡¸®Åµ´Ï´Ù. ÀÌ Å×À̺íÀ» vtableÀ̶ó°í ÇÕ´Ï´Ù. COM °´Ã¼´Â Ŭ¶óÀÌ¾ðÆ®¿¡ °´Ã¼ÀÇ vtable¸¦ Á¦°øÇÔÀ¸·Î½á °´Ã¼¿¡ ´ëÇÑ Á÷Á¢ÀûÀÎ Á¢±ÙÀ» Á¦°ø ÇÕ´Ï´Ù. ½±°Ô ¸»ÇÏÀÚ¸é Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÛ¼ºÇÏ´Â ´Ü°è¿¡¼­ ÄÄÆ÷³ÍÆ® Á¤º¸¸¦ ³»Æ÷(import)ÇÏ¿© Ŭ¶óÀÌ¾ðÆ® ³»ºÎ°´Ã¼Ã³·³ »ç¿ëÇÏ´Â ¹æ½ÄÀ» Early Binding À̶ó ÇÕ´Ï´Ù.
Èıâ¹ÙÀεù(Late Binding) IDispatch ÀÎÅÍÆäÀ̽º Áö¿ø

dim obj As Object
Set obj = CreateObject("AddBack.AddBack.1") :
obj.someMethod

dispatch interface (dispinterface)´Â ±¸¼º ¸Þ¼Òµå¿Í ¼Ó¼ºÀº DispID ¶ó°í ºÎ¸£´Â °íÀ¯ÇÑ ID·Î ½Äº° µË´Ï´Ù. »ç¿ëÀÚ´Â IDispatch ÀÎÅÍÆäÀ̽ºÀÇ GetIDOfNames¸¦ ÅëÇØ ¸Þ¼Òµå³ª ¼Ó¼ºÀÇ DispID¸¦ ±¸Çϰí À̸¦ ÀÌ¿ë Invoke¸¦ È£ÃâÇÏ¿© ¸Þ¼Òµå³ª ¼Ó¼ºÀ» È£ÃâÇÕ´Ï´Ù. ÀÌ ¹æ½ÄÀ» Late Binding À̶ó ÇÕ´Ï´Ù. Late Binding ¹æ½ÄÀº ½ÇÇà½Ã ŸÀÔÀ» °áÁ¤ÇÒ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖÀ¸³ª ¼Óµµ°¡ ´Ê¾îÁö´Â °áÁ¡ÀÌ ÀÖ°í vtableÀº ¼Óµµ°¡ ºü¸£°í ÄÄÆÄÀÏ ½Ã ¹®¹ý üũ°¡ °¡´ÉÇϳª ½ÇÇà½Ã ŸÀÔÀ» °áÁ¤ÇÒ ¼ö ¾ø´Â ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. ±×·¡¼­ Microsoft ¿¡¼­´Â ÀÌ µÎ °¡Áö ¹æ½ÄÀÎ Early Binding, LateBinding ¸ðµÎ¸¦ Áö¿øÇϵµ·Ï ÇÏ´Â °ÍÀ» ±ÇÇϰí ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀ» dual interface¶ó ÇÕ´Ï´Ù. ¸ðµç °í¼öPlusÀÇ GOM °´Ã¼µéÀº ÀÌ dual interface¸¦ Áö¿øÇϰí ÀÖÀ¸¹Ç·Î »ç¿ëÀÚ´Â »ç¿ë¾ð¾î°¡ Áö¿øÇÑ´Ù¸é Early Binding, Late Binding ¹æ½Ä ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


¨ë ŸÀÔ ¶óÀ̺귯¸®(Type Libraries)
ŸÀÔ ¶óÀ̺귯¸®´Â COM °´Ã¼ÀÇ ±â´É¿¡ °üÇÑ Á¤º¸¸¦ Á¦°øÇÏ´Â ÆÄÀÏ ÀÔ´Ï´Ù. ÀÚ¼¼ÇÏ°Ô ¸»ÇÏ¸é °´Ã¼¸¦ ±¸¼ºÇϴ Ŭ·¡½ºµéÀÇ Á¤º¸¸¦ Æ÷ÇÔÇÑ ÆÄÀÏÀÔ´Ï´Ù. ŸÀÔ ¶óÀ̺귯¸®´Â ½ÇÁ¦ °´Ã¼µéÀ» ÀúÀåÇÏ´Â °ÍÀÌ ¾Æ´Ï°í °´Ã¼µéÀÇ Á¤º¸¸¸À» ÀúÀåÇÕ´Ï´Ù. GOM ¿¡¼­µµ p2.tlb¶ó´Â ŸÀÔ ¶óÀ̺귯¸®¸¦ Á¦°øÇϸç ÀÌ ÆÄÀÏÀº ÀÚ·á½Ç¿¡¼­ ´Ù¿î ¹ÞÀ¸½Ç ¼ö ÀÖ½À´Ï´Ù. ŸÀÔ ¶óÀ̺귯¸®¸¦ º¸´Â ¹æ¹ýÀº °¢ °³¹ßÅø¿¡¼­ Á¦°øÇϰí ÀÖ½À´Ï´Ù. VB¿¡¼­´Â Object Browser, VC¿¡¼­´Â OLE/COM Object Viewer, Delphi´Â Delphi IDE ÀÚü¿¡¼­ TLB ÆÄÀÏÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù.

[±×¸² 2-1] Delphi¿¡¼­ º¸´Â ŸÀÔ¶óÀ̺귯¸®

Áö±Ý±îÁö COM¿¡ ´ëÇÑ °£·«ÇÑ ¼Ò°³·Î À̾߱âó·³ Àо½Ã¸é µË´Ï´Ù. Ãʺ¸ÀÚ¿¡°Ô´Â »ý¼ÒÇÑ ÄÄÇ»ÅÍ¿ë¾îÀÌ°í ¾î·Á¿î °³³äÀÓ¿¡´Â Ʋ¸²¾ø½À´Ï´Ù¸¸ ÃæºÐÈ÷ ½ÀµæÇϼż­ ÀÚ½ÅÀÇ ³ëÇϿ츦 ´ãÀº Àü·«À» ¸¸µå½Ã±æ ¹Ù¶ø´Ï´Ù. ´ÙÀ½Àº GOM¿¡ ´ëÇÑ À̾߱âÀÔ´Ï´Ù.