AUTO
[ID/PWã±â] [ȸ¿ø°¡ÀÔ]
´º½º¿Í Á¤º¸ (276)
ÀÚÀ¯ °Ô½ÃÆÇ (392)
°¡ÀÔ Àλç (1960)
°øÁö»çÇ× (5)
AJAX ÇнÀ (72)
ASP Áú¹® (71)
ASP ÇнÀ (271)
MYSQL ÇнÀ (73)
SQLSERVER ÇнÀ (337)
¿À¶óŬ ÇнÀ (66)
µ¥ÀÌŸº£À̽º ÇнÀ (29)
¾×¼Ç½ºÅ©¸³Æ® ÇнÀ (261)
¾×¼Ç½ºÅ©¸³Æ® Áú¹® (65)
ÆÛ¿Â Ç÷¡½Ã (204)
Ç÷¡½Ã ³×ºñ°ÔÀÌ¼Ç (59)
Ç÷¡½Ã ¼Ò½º (532)
Ç÷¡½Ã ¿¬±¸½Ç (536)
Ç÷¡½Ã Áú¹® (647)
Ç÷¡½Ã °ÔÀÓ (53)
Ç÷¡½Ã ÀÎÆ®·Î (44)
Ç÷¡½Ã ÀÌÆåÆ® (45)
ÀÚÀÛ Ç÷¡½Ã (83)
ű×,HTML Áú¹® (43)
ű×,HTML ÇнÀ (131)
ÀÚ¹Ù,JSP ÇнÀ (161)
ÀÚ¹Ù,JSP Áú¹® (70)
ÀÚ¹Ù½ºÅ©¸³Æ® ÇнÀ (223)
ÀÚ¹Ù½ºÅ©¸³Æ® ¼Ò½º (73)
ÀÚ¹Ù½ºÅ©¸³Æ® Áú¹® (79)
Æ÷Åä¼¥ Áú¹® (108)
Æ÷Åä¼¥ ÇнÀ (369)
Ãßõ À̹ÌÁö (239)
ÀÚÀÛ À̹ÌÁö (81)
ÆÛ¿Â À̹ÌÁö (445)
PHP Áú¹® (62)
PHP ÇÔ¼ö (2658)
PHP ÇнÀ (661)
ÇÁ·Î±×·¡¹Ö ÇнÀ (205)
ÀÎÅͳݼ­¹ö ÇнÀ (346)
ÀÎÅͳݼ­¹ö Áú¹® (22)
³×À̹ö ¼Ó ȨÇǵðÀÚÀδåÄÄ
´ÙÀ½ ¼Ó ȨÇǵðÀÚÀδåÄÄ
±¸±Û ¼Ó ȨÇǵðÀÚÀδåÄÄ
¿¥ÆÄ½º ¼Ó ȨÇǵðÀÚÀδåÄÄ
¾ßÈÄ ¼Ó ȨÇǵðÀÚÀδåÄÄ
³×ÀÌÆ® ¼Ó ȨÇǵðÀÚÀδåÄÄ
½ÎÀÌ¿ùµå ȨÇǵðÀÚÀδåÄÄ
¿¥¿¡½º¿£ ȨÇǵðÀÚÀδåÄÄ
  ȨÇǵðÀÚÀδåÄÄ > ¾×¼Ç½ºÅ©¸³Æ® ÇнÀ
   
  Ç÷¡½Ã MX¸¦ ÀÌ¿ëÇÑ SW °³¹ß / º¸¾È°ú Ç÷¡½Ã ¸®¸ðÆÃ
  ±Û¾´ÀÌ : ´ç½ÅÀÇ¿©     ³¯Â¥ : 05-02-21 12:16     Á¶È¸ : 6207    
   http://cafe.naver.com/q69/5071 (572)
¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ º¸¾ÈÀº ÇʼöÀûÀÎ ¿ä¼ÒÀÌ´Ù. À̹ø È£¿¡¼­´Â Ç÷¡½ÃÀÇ º¸¾È À̽´¿Í XML À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ´Â ¶Ç ´Ù¸¥ °­·ÂÇÑ ¹æ¹ýÀÎ Ç÷¡½Ã ¸®¸ðÆÃ¿¡ ´ëÇØ »ìÆìº»´Ù.

Áö³­ È£¿¡¼­ ¿ì¸®´Â Ç÷¡½Ã¿¡¼­ XMLÀ» ¾î¶»°Ô ´Ù·ç°í XML Åë½ÅÀ» ¾î¶»°Ô ÇÏ´ÂÁö¿¡ ´ëÇØ »ìÆìºÃ´Ù. ÇÏÁö¸¸ °£ÆíÇϸ鼭µµ ÈξÀ °­·ÂÇÑ ¹æ¹ýÀÌ Á¦°øµÇ´Âµ¥ ±×°ÍÀÌ ¹Ù·Î ¡®Ç÷¡½Ã ¸®¸ðÆÃ(Flash Remoting)¡¯ÀÌ´Ù.

Ç÷¡½Ã ¸®¸ðÆÃÀº ÁÖ·Î XML À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇϱâ À§ÇØ ç¿ëÇÏÁö¸? ´å³Ý ¸®¸ðÆÃ(.NET Remoting)À̳ª ÀÚ¹Ù RMI¿Í ºñ½ÁÇÏ´Ù. Áï, ¸®¸ðÆÃÀ» ÅëÇØ ¿ø°Ý(¼­¹ö »çÀ̵å)¿¡ ÀÖ´Â ¸Þ½îµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ³»ºÎÀûÀ¸·Î´Â SWF(Ç÷¡½Ã Ç÷¹À̾¼­ ¼öÇàµÇ´Â Ç÷¡½Ã ÆÄÀÏÀ» °¡¸®Å´)ÀÇ Åë½Å ±â´ÉÀ» Ç÷¡½Ã ¸®¸ðÆÃ ÄÄÆ÷³ÍÆ®¸¦ ÅëÇØ È®ÀåÇÑ °ÍÀ¸·Î, Åë½Å ÇÁ·ÎÅäÄÝ ÀÚü´Â Ç÷¡½ÃÀÇ °íÀ¯ÇÑ ¹æ¹ýÀ¸·Î ±¸ÇöµÇ¾î ÀÖ´Ù.

<±×¸² 1> Ç÷¡½Ã ¸®¸ðÆÃ °³³ä

Ç÷¡½Ã ¸®¸ðÆÃ
Ç÷¡½Ã ¸®¸ðÆÃÀº SOAP ±â¹ÝÀÇ À¥ ¼­ºñ½º¸¦ ÅëÇÕÇϱâ À§ÇÑ ¼­¹öÃø µµ±¸(½ÇÁ¦·Î À¥ ¼­¹ö¿ë ÇÊÅÍ·Î µ¿ÀÛÇÑ´Ù)ÀÌ´Ù(<±×¸² 1> ÂüÁ¶). ÄݵåÇ»Àü MX, ´å³Ý, ÀÚ¹Ù ¹öÀüÀÌ °¢°¢ µû·Î ÀÖÀ¸¸ç, EJB ±¸ÃàµÈ ¼­ºñ½º, ´å³Ý ¼­¹ö, ÄݵåÇ»Àü µîÀ¸·Î ±¸ÃàµÈ À¥ ¼­ºñ½º¸¦ Ç÷¡½Ã¿¡¼­ ±×´ë·Î ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï Çϱ⠶§¹®¿¡ À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ´Â Ç÷¡½Ã ¾ÖÇø®ÄÉÀ̼ÇÀ» ½±°Ô ±¸ÃàÇÒ ¼ö ÀÖ´Ù. Áï, ºñÁî´Ï½º ·ÎÁ÷Àº ¼­¹öÃø¿¡ À¥ ¼­ºñ½º·Î ±¸ÃàÇϰí Ŭ¶óÀ̾ðÆ®Ãø UI Ç÷¡½Ã·Î °³¹ßÇÏ·Á´Â °æ¿ì¿¡ °¡Àå ÁÁ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ¼­¹öÃø °³¹ßÀÚ´Â ¡®Flash Remoting MX¡¯¸¦ ¼³Ä¡ÇÏ´Â °Í ¿Ü¿¡ Ãß°¡ÀûÀÎ Äڵ带 ÀÛ¼ºÇØ¾ß ÇÏ´Â ÀÏÀº ¾ø´Ù.

ASP.NET À¥ ¼­ºñ½º¸¦ ¸¸µé°í Ç÷¡½Ã¿¡¼­ ÀÌ À¥ ¼­ºñ½º¸¦ È£ÃâÇÏ´Â °úÁ¤À» °£´ÜÇÏ°Ô »ìÆìº¸ÀÚ. ASP.NET ¼­¹öÃø¿¡ ¡®Flash Remoting MX for Microsoft .NET¡¯ÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù(Flash Remoting MX´Â »ó¿ë Á¦Ç°ÀÌÁö¸¸, ¸ÅÅ©·Î¹Ìµð¾î »çÀÌÆ®¿¡¼­ Æò°¡ÆÇÀ» ¹Þ¾Æ ÃæºÐÈ÷ Å×½ºÆ®ÇØ º¼ ¼ö ÀÖ´Ù). ÀϹÝÀûÀ¸·Î ´ÙÀ½ Æú´õ¿¡ ¼³Ä¡µÈ´Ù.

C:\Inetpub\wwwroot\flashremoting

Ç÷¡½Ã ¸®¸ðÆÃÀ» »ç¿ëÇϴ Ŭ¶óÀÌ¾ðÆ® SWF¸¦ °³¹ßÇϱâ À§Çؼ­´Â Ç÷¡½Ã¿¡ ¸®¸ðÆÃ ÄÄÆ÷³ÍÆ®(Flash Remoting Components)¸¦ ¼³Ä¡ÇØ¾ß ÇÑ´Ù(È¥µ·ÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù. Remoting MX´Â ¼­¹öÃø¿¡ ¼³Ä¡µÇ´Â ¿ä¼ÒÀ̸ç, ÀÚ¹Ù, ´å³Ý, ÄݵåÇ»Àü µîÀÇ ¹öÀüÀÌ µû·Î ÀÖ´Ù. Remoting ÄÄÆ÷³ÍÆ®´Â Ç÷¡½Ã¿¡ Ãß°¡·Î ¼³Ä¡µÇ´Â Ç÷¡½Ã Ŭ¶óÀÌ¾ðÆ® °³¹ß¿ë ÄÄÆ÷³ÍÆ®ÀÌ´Ù). ¸®¸ðÆÃ ÄÄÆ÷³ÍÆ®°¡ ¼³Ä¡µÇ¸é <È­¸é 1>ó·³ ¡®Remoting¡¯À̶õ ÄÄÆ÷³ÍÆ®°¡ ¼³Ä¡µÇ°í, ÀÌÇÏ¿¡ ¡®NetServices¡¯µîÀÇ °´Ã¼°¡ »ý±â´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.

<È­¸é 1> Ç÷¡½Ã ¸®¸ðÆÃ ÄÄÆ÷³ÍÆ® ¼³Ä¡ È®ÀÎ

¸ÕÀú ASP.NETÀ¸·Î °£´ÜÇÑ À¥ ¼­ºñ½º¸¦ ¸¸µé¾î º¸ÀÚ. ºñÁÖ¾ó ½ºÆ©µð¿À ´å³ÝÀ» ½ÃÀÛÇÏ°í ¡®HelloFlash¡¯¶õ À̸§À¸·Î À¥ ¼­ºñ½º ÇÁ·ÎÁ§Æ®¸¦ ¸¸µç´Ù(<È­¸é 2> ÂüÁ¶). ±×¸®°í, HelloWorld ¸Þ½îµåÀÇ ÁÖ¼®À» Á¦°ÅÇØ ºôµåÇÑ´Ù. <¸®½ºÆ® 1>ó·³ °¡Àå °£´ÜÇÑ À¥ ¼­ºñ½º¸¦ ¸¸µé°í ´ÙÀ½°ú °°ÀÌ WSDLÀ» È®ÀÎÇØ º¸ÀÚ.

http://localhost/HelloFlash/Service1.asmx?WSDL

ÀÌ WSDLÀº HelloFlash ÇÁ·ÎÁ§Æ®¿¡¼­ ³ëÃâµÇ´Â À¥ ¼­ºñ½º¿¡ ´ëÇÑ ¼³¸íÀ» ´ã°í ÀÖ´Ù(Ç÷¡½ÃÃø¿¡¼­ ÀÌ WSDLÀÌ »ç¿ëµÈ´Ù).

<È­¸é 2> À¥ ¼­ºñ½º ÇÁ·ÎÁ§Æ® ¸¸µé±â

<¸®½ºÆ® 1> Hello World À¥ ¼­ºñ½º

ÀÌÁ¦ ´ÙÀ½°ú °°Àº ¼ö¼øÀ¸·Î ÀÛ¾÷ÇØ HelloFlash Æú´õ¸¦ Ç÷¡½Ã ¸®¸ðÆÃÀÌ °¡´ÉÇϵµ·Ï Áغñ¸¦ ÇÑ´Ù.

1 Ç÷¡½Ã ¸®¸ðÆÃ Æú´õ(flashremoting)¿¡ ÀÖ´Â flashgateway.dll ÆÄÀÏÀ» HelloFlash/bin Æú´õ¿¡ º¹»çÇÑ´Ù.
2 HelloFlash Æú´õ µî·ÏÁ¤º¸¿¡¼­ º¸¾È ÅÇÀ» ´©¸£°í, ASPNET °èÁ¤À» Ãß°¡ÇÏ°í ¾²±â(Write) ±ÇÇÑÀ» Ãß°¡ÇÑ´Ù.
3 ºó apsx ÆäÀÌÁö¸¦ ¸¸µç´Ù(¿©±â¼­´Â default.aspx ÆäÀÌÁö¸¦ ¸¸µé¾ú´Ù).
4 web.config¿¡ ´ÙÀ½ÀÇ ³»¿ëÀ» Ãß°¡ÇÑ´Ù.

<httpModules>
<add name="GatewayController"
type="FlashGateway.Controller.GatewayController,flashgateway"/>
</httpModules>

HelloFlash Æú´õ°¡ Ç÷¡½Ã ¸®¸ðÆÃ¿¡ »ç¿ëµÉ ¼ö ÀÖ°Ô ÁغñµÆ´Ù. ÀÌÁ¦ Ç÷¡½Ã¸¦ ½ÃÀÛÇϰí, ù ÇÁ·¹ÀÓ¿¡ <¸®½ºÆ® 2>¿Í °°ÀÌ ¾×¼Ç½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÑ´Ù. getService() ¸Þ½îµå´Â ¡®http://localhost/HelloFlash/Service1.asmx?wsdl¡¯¿¡ ±â¼úµÈ WSDL ³»¿ëÀ» °¡Áö°í ÇÁ·Ï½Ã °´Ã¼¸¦ »ý¼ºÇÑ´Ù. »ý¼ºµÈ serv °´Ã¼¸¦ ÅëÇØ ´ÙÀ½°ú °°ÀÌ ¸Þ½îµå¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.

serv.HelloWorld();

À¥ ¸Þ½îµå¸¦ È£ÃâÇÏ¸é ¡°¸Þ½îµå À̸§_Result()¡±, ¡°¸Þ½îµå À̸§_Status()¡±ÀÇ ÄݹéÀÌ È£ÃâµÈ´Ù. ÀÌ ÄݹéÀ» ÅëÇØ ¸®ÅÏ °ªÀ» ¾òÀ» ¼ö ÀÖ´Ù.

function HelloWorld_Result(result)
{
   trace( result );
}

¼öÇà °á°ú´Â ¡°Hello, World¡±¶ó°í Ãâ·ÂµÇÁö¸¸ XML À¥ ¼­ºñ½º¸¦ °£´ÜÇÑ ¾×¼Ç½ºÅ©¸³Æ® ÄÚµå·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ¸®¸ðÆÃÀº ¹«Ã´ °­·ÂÇÑ ¹æ¹ýÀÌ µÈ´Ù(ATL/COMÀ¸·Î ¾î·Æ°Ô ¾×ƼºêX ÄÁÆ®·ÑÀ» ±¸ÇöÇÏ´Â °Í¿¡ ºñÇØ ÈξÀ ÀûÀº ºñ¿ëÀ¸·Î ºü¸£°Ô Ŭ¶óÀÌ¾ðÆ®¸¦ °³¹ßÇÒ ¼ö ÀÖ´Ù).

<¸®½ºÆ® 2> XML À¥ ¼­ºñ½º¸¦ È£ÃâÇÏ´Â ¾×¼Ç½ºÅ©¸³Æ®

³¯¾¾, Áõ±Ç, »óǰ Á¶È¸ µî º¯È­ÇÏ´Â µ¥ÀÌÅ͸¦ Á¶È¸Çϰųª ¼­¹ö¿Í »óÈ£ÀÛ¿ëÀ» ÇÏ´Â ¼­ºñ½º¸¦ ±¸¼ºÇÒ ¶§ Ç÷¡½Ã ¸®¸ðÆÃÀº ¸Å¿ì À¯¿¬Çϸ鼭µµ °­·ÂÇÑ ¹æ¹ýÀÌ µÈ´Ù. Ç÷¡½Ã ¸®¸ðÆÃÀº ADO¿Í ¿¬°áµÇ¾î ¼­¹ö ÃøÀÇ µ¥ÀÌÅ͸¦ ó¸®Çϰųª ¼­¹ö ÃøÀÇ ¾î¼Àºí¸®¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù. ÀÌ·± ±â´Éµµ À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ´Â °Í ¸øÁö¾Ê°Ô ´Ù¾çÇÑ ÀÀ¿ëÀÌ °¡´ÉÇÏ°Ô ÇÑ´Ù.

Ç÷¡½Ã º¸¾È : SWF´Â HTMLÀ̳ª ÀÚ¹Ù½ºÅ©¸³Æ®¿Í ´Ù¸£Áö ¾Ê´Ù?
¿£ÅÍÇÁ¶óÀÌÁî ¾ÖÇø®ÄÉÀ̼ǿ¡¼­ º¸¾ÈÀº »©³õÀ» ¼ö ¾ø´Â À̾߱âÀÌ´Ù. ¾ÖÇø®ÄÉÀ̼ÇÀÌ °ø°³ÀûÀ¸·Î ¹èÆ÷µÇ´Â ÀÎÅÍ³Ý È¯°æ¿¡¼­´Â ´õ´õ¿í ±×·¸´Ù. Ç÷¡½Ã °ü·Ã º¸¾È À̽´ Áß °¡Àå ¸ÕÀú ¶°¿À¸£´Â °ÍÀÌ ¹Ù·Î SWF µðÄÄÆÄÀÏ·¯(decompiler) - SWF ÆÄÀÏ¿¡¼­ ¸®¼Ò½º¿Í ¾×¼Ç½ºÅ©¸³Æ®¸¦ ÃßÃâÇÏ´Â µµ±¸¿¡ ´ëÇÑ °ÍÀÌ´Ù.

<È­¸é 3>Àº ´ëÇ¥ÀûÀÎ SWF µðÄÄÆÄÀÏ·¯(Sothink)ÀÇ ¼öÇà È­¸éÀÌ´Ù. ¸®¼Ò½º´Â ¹°·Ð ¾×¼Ç½ºÅ©¸³Æ®¸¦ ¿Ïº®ÇÏ°Ô µðÄÄÆÄÀÏÇÑ´Ù. º¸¾ÈÀÇ °üÁ¡¿¡¼­ º¼ ¶§ SWF´Â HTMLÀ̳ª ÀÚ¹Ù½ºÅ©¸³Æ®¿Í ´Ù¸£Áö ¾Ê´Ù. ¾×¼Ç½ºÅ©¸³Æ®¸¦ Æ÷ÇÔÇØ SWF°¡ °¡Áö°í ÀÖ´Â ³»¿ëÀº ¸ðµÎ ºÐÇØµÇ°í ÇØÃ¼µÉ ¼ö ÀÖ´Ù. SWF ÆÄÀÏ Æ÷¸ËÀÌ °ø°³µÇ¾î Àֱ⠶§¹®Àε¥, ¿øÃµÀûÀ¸·Î À̸¦ ¹æÁöÇÒ ¹æ¹ýÀº ¾ø´Ù(¹Ý¸é¿¡ FLA ÆÄÀÏÀº Æ÷¸ËÀÌ °ø°³µÇ¾î ÀÖÁö ¾Ê±â ¶§¹®¿¡ SWF¸¦ FLA·Î µðÄÄÆÄÀÏÇØ ÁÖ´Â µµ±¸´Â ¾ø´Ù).

<È­¸é 3> SWF µðÄÄÆÄÀÏ·¯ ¼öÇà È­¸é

ÀÏ´Ü, Ç÷¡½Ã °³¹ßÀÚ ÀÔÀå¿¡¼­ º¼ ¶§ ¾Ö½á ÀÛ¼ºÇØ ³õÀº Äڵ峪 ¸®¼Ò½º°¡ ³ëÃâµÈ´Ù´Â Ãø¸é¿¡¼­ ¸Å¿ì ¾ÈŸ±î¿ï ¼ö ÀÖ´Ù. Ç÷¡½Ã Àü¹®°¡µéÀº ÀÚ½ÅÀÇ Äڵ带 º¸È£ÇϰíÀÚ ÇÒ °æ¿ì ¹«ºñŬ¸³À» ³ª´©¾î µ¿ÀûÀ¸·Î ·ÎµåÇϵµ·Ï ±Ç°íÇϰí ÀÖÁö¸¸, ÀÌ ¹æ¹ý ¶ÇÇÑ µðÄÄÆÄÀÏÀ» ¾î·Æ°Ô ÇÒ »Ó µðÄÄÆÄÀÏ ÀÚü¸¦ ¿øÃµÀûÀ¸·Î ¸·À» ¼ö´Â ¾ø´Ù.

À̺¸´Ù ´õ ¹®Á¦°¡ µÇ´Â °ÍÀº ¾×¼Ç½ºÅ©¸³Æ®¿¡ Æ÷ÇԵǾî ÀÖ´Â ·ÎÁ÷À̳ª µ¥ÀÌÅͰ¡ ³ëÃâµÈ´Ù´Â Á¡ÀÌ´Ù. ¼­¹ö¿¡¼­ ÀÎÁõÀ» ¹Þ´Â SWF³ª ¼­¹ö¿Í »óÈ£ ÀÛ¿ëÀ» ÇÏ´Â °ÔÀÓÀ» Ç÷¡½Ã·Î Á¦ÀÛÇÒ ¶§´Â ¹Ýµå½Ã ÀÌ·± Á¡À» °í·ÁÇØ¾ß ÇÑ´Ù(¼­¹ö¿Í Åë½ÅÇÏ´Â ÇÁ·ÎÅäÄÝÀÌ ¸ðµÎ ³ëÃâµÈ´Ù). SWF ¾È¿¡ Áß¿äÇÑ µ¥ÀÌÅͳª ÆÐ½º¿öµå °°Àº ³»¿ëÀ» ³Ö¾î¼­´Â ¾È µÈ´Ù. ÀÌ ±Û¿¡¼­ ¼³¸íÇϰí ÀÖ´Â Ç÷¡½Ã Åë½ÅÀÇ ´Ù¾çÇÑ ¹æ¹ýµéÀÌ Áß¿äÇÑ ÀÌÀ¯ Áß Çϳª°¡ ¿©±â¿¡ ÀÖ´Ù. Áï, Áß¿äÇÑ ¾Ë°í¸®ÁòÀº ¼­¹ö¿¡ ±¸ÇöÇÔÀ¸·Î¼­ ¾ÇÀÇÀûÀÎ °ø°Ý¿¡ ´ëºñÇØ¾ß Çϸç, ÇÁ·ÎÅäÄÝ ³ëÃâÀ» °í·ÁÇØ ¼­¹ö¸¦ ¾ÈÀüÇÏ°Ô º¸È£ÇÒ ¹æ¹ýÀ» ¸¶·ÃÇØ¾ß ÇÑ´Ù.

Ç÷¡½Ã Åë½Å º¸¾È°ú SSL
¿ì¸®°¡ »ç¿ëÇÏ´Â ÀÎÅÍ³Ý »óÀÇ Åë½ÅÀº ¿±¼­¿Í °°´Ù. Áï, ¿±¼­°¡ Áö³ª´Â ±æ¿¡ ÀÖ´Ù¸é ´©±¸³ª ¿±¼­¿¡ ¾²¿©Áø ³»¿ëÀ» º¼ ¼ö ÀÖ´Ù. HTMLÀ̳ª SWF, ¸ÞÀÏ ¸ðµÎ ¸¶Âù°¡ÁöÀÌ´Ù(½ÉÁö¾î ´ëºÎºÐÀÇ ÀÎÅÍ³Ý »çÀÌÆ®¿¡¼­ ÀÔ·ÂÇÏ´Â ¾ÆÀ̵ð¿Í ÆÐ½º¿öµåµµ ÀüÇô ¾ÏȣȭµÇÁö ¾ÊÀº ä µ¹¾Æ´Ù´Ñ´Ù). ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ® »çÀÌ¿¡¼­ ´©±º°¡ ¸¶À½¸¸ ¸ÔÀ¸¸é ¼Õ½±°Ô µ¥ÀÌÅ͸¦ º¼ ¼ö ÀÖ´Ù. ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °ÍÀÌ SSL(Secure Socket Layer)ÀÌ´Ù. SSLÀº º°µµÀÇ Ãß°¡ÀûÀÎ °³¹ß ¾øÀÌ ¿ÏÀüÇÑ º¸¾ÈÀ» ±¸ÇöÇÑ´Ù(Áï, º¸³»´Â Ãø°ú ¹Þ´Â Ãø »çÀÌ¿¡¼­ µ¥ÀÌÅ͸¦ Áß°£¿¡ º¼ ¼ö ÀÖ´Ù ÇÏ´õ¶óµµ ÀüÇô ÇØµ¶ÇÒ ¼ö ¾ø´Ù).

Ç÷¡½Ã´Â HTTPS(HTTP + SSL)¸¦ Áö¿øÇÑ´Ù. »ç½Ç Ç÷¡½Ã ÀÚü°¡ SSLÀ» Áö¿øÇѴٱ⺸´Ù´Â ºê¶ó¿ìÀú°¡ Á¦°øÇÏ´Â SSLÀ» ÀÌ¿ëÇÑ´Ù°í ÇÏ´Â ÆíÀÌ ¸ÂÀ» °ÍÀÌ´Ù. ¿©·¯ºÐÀÌ SSLÀÌ Àû¿ëµÈ À¥ ÆäÀÌÁö¿¡¼­ SWF¸¦ ¹Þ¾Ò´Ù¸é ±×°ÍÀº SWF¿Í µ¥ÀÌÅÍ Àüü°¡ ¾ÏȣȭµÅ Àü¼ÛµÆÀ½À» ÀǹÌÇÑ´Ù. ÁÖÀÇÇÒ °ÍÀº SWF°¡ Àü¼Û Áß¿¡´Â ¾ÏȣȭµÈ´Ù´Â Á¡ÀÌ´Ù. Áï, SWF µðÄÄÆÄÀÏÀ» ¸·´Â °Í°ú SSLÀº ¾Æ¹«·± »ó°üÀÌ ¾ø´Ù.

SSLÀº °¡Àå ¾ÈÀüÇÑ Åë½Å º¸¾È ¹æ¹ýÀÌ´Ù. ´ëºÎºÐÀÇ ºê¶ó¿ìÀú°¡ 128ºñÆ® SSL ¾Ïȣȭ¸¦ Á¦°øÇϰí ÀÖ¾î ÃæºÐÈ÷ ¾ÈÀüÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. À¥ ¼­¹öÀÎ IIS(Internet Information Server)°¡ HTTPS¸¦ »ç¿ëÇÏ°Ô ÇÏ·Á¸é <È­¸é 4>¿Í °°ÀÌ °øÀÎ ÀÎÁõ±â°üÀ¸·ÎºÎÅÍ °øÀÎ ÀÎÁõ¼­¸¦ ¹Þ¾Æ¼­ IIS¿¡ ¼³Ä¡Çϰí, <È­¸é 5>ó·³ SSLÀ» »ç¿ëÇϵµ·Ï ¼³Á¤ÇÏ¸é µÈ´Ù(SSL ¼³Á¤Àº ÀÌ ±ÛÀÇ ¹üÀ§¸¦ ¹þ¾î³ª¹Ç·Î ÀÚ¼¼ÇÑ ¹æ¹ýÀº º£¸®»çÀΰú °°Àº °øÀÎ ÀÎÁõ±â°ü »çÀÌÆ®¸¦ Âü°íÇ϶ó).

<È­¸é 4> IIS¿¡ ¼­¹ö ÀÎÁõ¼­ ¼³Ä¡

<È­¸é 5> IIS¿¡ 128ºñÆ® SSL ¼³Á¤

Ç÷¡½Ã ¾Ïȣȭ Åë½Å
SSLÀ» »ç¿ëÇÒ ¼ö ¾øÀ» ¶§ ÃÖ¼ÒÇÑ µ¥ÀÌÅ͸¦ ¾ÏÈ£È­ÇØ º¸³»¾ß ÇÑ´Ù. ÀÎÁõ(authentication) °úÁ¤À» ¿¹·Î µé¾î »ìÆìº¸ÀÚ. ÆÐ½º¿öµå¿Í °°ÀÌ Áß¿äÇÑ µ¥ÀÌÅ͸¦ ±×´ë·Î Àü¼ÛÇØ¼­´Â ¾È µÈ´Ù. <È­¸é 6>Àº MD5¸¦ ±¸ÇöÇÑ ¿¹ÀÌ´Ù. ÇØ½Ã´Â µ¥ÀÌÅÍ Àüü¸¦ ¾ÏȣȭÇÏ´Â °ÍÀº ¾Æ´ÏÁö¸¸ ¾ÏȣȭµÈ °á°ú¸¦ °¡Áö°í ¿øº»À» ¾Ë ¼ö ¾ø´Ù´Â ´Ü¹æÇ⼺À» °¡Áö°í ÀÖ¾î ÀÎÁõ¿¡ ¸¹ÀÌ »ç¿ëµÈ´Ù(¼Ò½º´Â ¡®ÀÌ´ÞÀÇ µð½ºÄÏ¡¯¿¡ Æ÷ÇԵǾî ÀÖ´Ù).

<È­¸é 6> MD5 ÇØ½Ã ±¸Çö ¿¹

ÇØ½Ã ¹æ¹ýÀ» ÀÌ¿ëÇØ ´ÙÀ½°ú °°ÀÌ ÀÎÁõÀ» ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀÇ ÇÙ½ÉÀº ½ÇÁ¦ ÆÐ½º¿öµå¸¦ º¸³»Áö ¾Ê´Â´Ù´Â °ÍÀÌ´Ù.

1 SWF´Â ¼­¹ö¿¡ ÀÓÀÇÀÇ ¹®ÀÚ¿­ SÀ» ¿äûÇÑ´Ù.
2 SWF´Â ¼ö½ÅµÈ S¿¡ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÆÐ½º¿öµå¸¦ ºÙ¿©¼­ ÇØ½Ã ¾ÏÈ£È­ÇØ ¹®ÀÚ¿­ A¸¦ »ý¼ºÇÑ´Ù.
3 A¸¦ ¼­¹ö·Î Àü¼ÛÇÑ´Ù.
4 ¼­¹ö´Â SWF·Î º¸³½ S¿Í µ¥ÀÌÅͺ£À̽º¿¡¼­ ¾òÀº »ç¿ëÀÚ ÆÐ½º¿öµå¸¦ ºÙ¿©¼­ ÇØ½ÃÈ­ÇØ B¸¦ »ý¼ºÇÑ´Ù.
5 ¼­¹ö´Â A¿Í B°¡ ÀÏÄ¡ÇÏ´ÂÁö ¿©ºÎ¸¦ È®ÀÎÇÑ´Ù.

Ç÷¡½Ã·Î Á¦ÀÛµÈ ³×Æ®¿öÅ© °ÔÀÓÀÌ ÀÖ´Ù°í ÇÏÀÚ. SWF°¡ µðÄÄÆÄÀÏµÈ´Ù¸é ¼­¹ö¿Í Åë½ÅÇÏ´Â ÇÁ·ÎÅäÄÝÀÌ ¸ðµÎ °ø°³µÉ °ÍÀÌ´Ù. ÀÌ ¶§¹®¿¡ °ÔÀÓ ¼­¹ö°¡ ÇØÅ·µÈ´Ù¸é À̰ÍÀº ¾öû³­ ÀÏÀ» ¾ß±âÇÑ´Ù. µû¶ó¼­ Ç÷¡½Ã ¾Ïȣȭ°¡ ÇÊ¿äÇÏ´Ù. ´Ù½Ã ¸»ÇØ, ÇÁ·ÎÅäÄÝÀÌ ³ëÃâµÇ´õ¶óµµ ¾ÈÀüÇÏ°Ô Åë½ÅÇÒ ¹æ¹ýÀ» ¸¶·ÃÇØ¾ß Çϴµ¥ ¹Ù·Î ÇØ½Ã ¾Ïȣȭ¿Í °°Àº ¹æ¹ýÀÌ´Ù. ¿¹¸¦ µé¾î, ¼­¹ö·ÎºÎÅÍ Æ¯Á¤ÇÑ Å°¸¦ ¹ß±Þ¹Þ¾Æ Ç×»ó ÇØ´ç Ű·Î ¾ÏȣȭµÈ µ¥ÀÌÅ͸¦ ÁÖ°í¹Þ´Â´Ù¸é, Ŭ¶óÀÌ¾ðÆ® ¾ÏÈ£¿Í ¾Ë°í¸®Áò°ú ·ÎÁ÷À» ¾Ë´õ¶óµµ ¼­¹öÃø¿¡ ÀÖ´Â ·ÎÁ÷À» ¾Ë¾Æ³»Áö ¸øÇÏ°Ô µÇ¾î °ÔÀÓÀ» ÇØÅ·Çϱâ Èûµé¾îÁø´Ù.

´ÙÀ½Àº SHA1 ¾Ë°í¸®ÁòÀ» Å×½ºÆ®ÇÏ´Â ¾×¼Ç½ºÅ©¸³Æ®ÀÌ´Ù. MD5 ÇØ½Ãº¸´Ù SHA1 ¾Ë°í¸®ÁòÀÌ ÈξÀ ¾ÈÀüÇÑ °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖ´Ù(MD5 ¾Ë°í¸®Áò°ú SHA1 ¾Ë°í¸®ÁòÀ» ±¸ÇöÇÑ ¾×¼Ç½ºÅ©¸³Æ®´Â ¡®ÀÌ´ÞÀÇ µð½ºÄÏ¡¯¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç, Âü°íÀڷḦ ÅëÇØ¼­µµ ¾òÀ» ¼ö ÀÖ´Ù).

#include "sha1.as"
trace(b64_sha1("Hello, World"));

¾ÕÀÇ ¼öÇà °á°ú´Â ´ÙÀ½°ú °°´Ù.

kH0U+zrysNTxjC1Gq+iu3OFzZ70

¾ÕÀÇ ¾×¼Ç½ºÅ©¸³Æ®¿Í <¸®½ºÆ® 3>ÀÇ C# ÄÚµåÀÇ ¼öÇà °á°ú´Â ¶È°°´Ù. ÀÌ °á°ú¸¦ ÀÌ¿ëÇØ ¾Õ¼­ ¼³¸íÇÑ ÀÎÁõÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Ù. »ç½Ç ¿©±â¿¡´Â Á»´õ °³¼±µÈ ¹æ¹ýÀÌ ÇÊ¿äÇÏ´Ù. ¿¹¸¦ µé¾î, »çÀü(dictionary)¿¡ ÀÇÇÑ °ø°ÝÀ» ¸·±â À§ÇØ ¾Ïȣȭ µ¥ÀÌÅÍ¿¡ salt¸¦ Ãß°¡Çϰųª ÇØ½Ã¸¦ µÎ ¹ø Åë°úÇÏ°Ô ÇÏ´Â ¹æ¹ýµµ ÁÁÀº °³¼± ¹æ¹ýÀÌ´Ù.

<¸®½ºÆ® 3> C# SHA1 ¾Ë°í¸®Áò ±¸Çö ÄÚµå

´Ù¸¥ º¸¾È À̽´
´Ù¿î·ÎµåµÈ SWF°¡ ´Ù¸¥ ¼­¹ö(µµ¸ÞÀÎ)¿Í Åë½ÅÀ» ÇÏ´Â °ÍÀº ¾ÇÀÇÀûÀ¸·Î »ç¿ëµÉ °¡´É¼ºÀÌ À־ À̸¦ ¸øÇÏ°Ô ¸·°í ÀÖ´Ù(À̰ÍÀº ÀÚ¹Ù ¾ÖÇø´µµ ¸¶Âù°¡Áö´Ù). À̰ÍÀ» ±³Â÷ »çÀÌÆ® °ø°Ý(Cross-Site Attack) ¹æÁö¶ó°í Çϴµ¥, SWF´Â ´Ù¿î·ÎµåµÈ ¼­¹öÀÇ µµ¸ÞÀÎ ¾È¿¡ ÀÖ´Â ¼­¹ö¿Í Åë½ÅÀÌ °¡´ÉÇÏ´Ù. ¿¹¸¦ µé¾î, www.elasticware.com¿¡¼­ SWF°¡ ´Ù¿î·ÎµåµÆ´Ù¸é SWF´Â content.elasticware.com°ú Åë½ÅÀÌ °¡´ÉÇÏ´Ù(Áï, ÀÚ½ÅÀÌ ´Ù¿î·ÎµåµÈ ¼­¹ö ¹× °°Àº µµ¸ÞÀο¡ ÀÖ´Â ¼­¹ö¿Í Åë½ÅÀÌ °¡´ÉÇÏ´Ù).

Ç÷¡½Ã´Â »ç¿ëÀÚÀÇ ÆÄÀÏ ½Ã½ºÅÛ, Ä«¸Þ¶ó, ¸¶ÀÌÅ©·Î Æù¿¡ Á¢±ÙÀÌ °¡´ÉÇÏ´Ù. Á¢±Ù °¡´É ¿©ºÎ´Â »ç¿ëÀÚ ¼³Á¤¿¡ µû¸¥´Ù. »ç¿ëÀÚÀÇ ÆÄÀÏ ½Ã½ºÅÛ¿¡ Á¢±ÙÀº µ¶¸³ÀûÀÎ SWF ´ÜÀ§·Î Á¦ÇѵȴÙ. ÀϹÝÀûÀ¸·Î ¼³Á¤ Á¤º¸³ª »óÅ Á¤º¸¸¦ ÀúÀåÇÏ´Â ¸ñÀûÀ¸·Î »ç¿ëµÇ¸ç, ±âº» ÀúÀå °ø°£Àº 100KÀÌ´Ù. »ç¿ëÀÚ°¡ Å©±â¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ°í(<È­¸é 7> ÂüÁ¶), ÀúÀå¼ÒÀÇ Å©±â¿Í ÄíŰ ÀúÀå ¿©ºÎ¿¡ ´ëÇÑ °ÍÀº ºê¶ó¿ìÀú ¼³Á¤°ú ¹«°üÇÏ´Ù.

<È­¸é 7> Ç÷¡½Ã ¼³Á¤ ÀúÀå °ø°£

Ŭ¶óÀÌ¾ðÆ®¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ´Â ¹æ¹ýÀ¸·Î ¾×¼Ç½ºÅ©¸³Æ®¿¡¼­ SharedObject °´Ã¼¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½Àº SharedObject¸¦ »ç¿ëÇØ Ŭ¶óÀÌ¾ðÆ®¿¡ Ä«¿îÅ͸¦ ÀúÀåÇÏ°í ·ÎµåµÉ ¶§¸¶´Ù Áõ°¡½ÃŰ´Â ¿¹ÀÌ´Ù.

sObject = SharedObject.getLocal("counter"); // Àбâ
if( sObject != null )
{
   sObject.data.counter++; // ¿¬»ê
   _root.savedata = sObject.data.counter;
   sObject.flush(); // ÀúÀå
   trace(sObject.data.counter);
}

SWF¿¡¼­ ÀúÀåÇÑ ³»¿ëÀº ´ÙÀ½ Æú´õ¿¡ ÀúÀåµÇ´Âµ¥, °¢ SWF¸¶´Ù ±×¸®°í SharedObject¿¡¼­ ÀúÀåÇÏ´Â °´Ã¼ À̸§À¸·Î ³»¿ëÀ» ´ãÀº ÆÄÀÏÀÌ »ý¼ºµÈ´Ù.

C:\Documents and Settings\Administrator\Application Data\Macromedia\Flash Player


Ç÷¡½Ã º¸¾ÈÀÇ ÇÙ½ÉÀº SSL°ú µ¿ÀûÀÎ ¼­¹ö »çÀÌµå ¿¬°á·Î ¿ä¾àÇÒ ¼ö ÀÖ´Ù. Áï, Åë½Å º¸¾ÈÀ» À§ÇØ °¡´ÉÇÑ SSLÀ» »ç¿ëÇϰí, ¾×¼Ç½ºÅ©¸³Æ®°¡ ¿ÏÀüÈ÷ ³ëÃâµÈ´Ù´Â °¡Á¤ÇÏ¿¡ Áß¿äÇÑ ·ÎÁ÷Àº ¼­¹öÃø¿¡ ±¸ÇöÇÏ°í µ¥ÀÌÅ͸¦ ¾ÏȣȭÇÏ´Â º°µµÀÇ ·ÎÁ÷À» Ŭ¶óÀÌ¾ðÆ®¿Í ¼­¹ö¿¡ µû·Î ±¸ÇöÇÏ´Â °ÍÀ» ÃßõÇÑ´Ù.

¡®Flash.NET¡¯ÀÇ °¡´É¼º
Áö±Ý±îÁö 3ȸ¿¡ °ÅÃÄ ¼­¹öÃø(ASP.NET)°ú Ç÷¡½Ã(SWF) »çÀÌÀÇ ´Ù¾çÇÑ Åë½Å ¹æ¹ý°ú °³¹ß À̽´µé¿¡ ´ëÇØ »ìÆìºÃ´Ù. Ç÷¡½Ã´Â ¸®Ä¡ Ŭ¶óÀ̾ðÆ®ÀÇ °¡´É¼º»Ó¸¸ ¾Æ´Ï¶ó »ç½Ç»óÀÇ Ç÷§Æû µ¶¸³¼ºÀ» °®Ãß°í ÀÖ°í, ³ôÀº »ý»ê¼ºÀ» °¡Áö°í ÀÖ´Â ÈǸ¢ÇÑ Å¬¶óÀÌ¾ðÆ® °³¹ß µµ±¸ÀÌ´Ù. Ç÷¡½Ã¿Í ´å³ÝÀÇ ¸¸³²Àº À¯¿¬ÇÏ°í °í °¡¿ë¼ºÀÇ ½Ã½ºÅÛÀ» ±¸ÃàÇÏ´Â µ¥ ¼Õ»öÀÌ ¾øÀ¸¸ç, ƯÈ÷ XML À¥ ¼­ºñ½ºÀÇ È°¿ëÀº »ý»ê¼ºÀ» ³ôÀÌ´Â ¾ÆÁÖ ÁÁÀº ¹æ¹ýÀÌ´Ù.

´Ù¸¸, ±× Ȱ¿ëÀÇ À庮Àº ASP.NET °³¹ßÀÚ´Â Ç÷¡½Ã¸¦ ¸ð¸£°í, Ç÷¡½Ã µðÀÚÀ̳ʴ ASP.NET¿¡ Àͼ÷ÇÏÁö ¾ÊÀº ±â¼ú°£ÀÇ ¹®ÅÎÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, µ¥ÀÌÅÍ¿Í ºñÁî´Ï½º ·ÎÁ÷À» SWF¿¡ µÎÁö ¾Ê´Â °Í¸¸À¸·Îµµ ÈξÀ À¯¿¬ÇÑ °³¹ßÀ» ÇÒ ¼ö ÀÖ´Ù. ºñÁÖ¾ó º£ÀÌÁ÷°ú C++, J2EE¿Í ´å³Ý, È£½ºÆ®¿Í À¯´Ð½º ±×¸®°í À¯´Ð½º¿Í NTó·³ ±â¼ú°ú ±â¼ú »çÀÌÀÇ ´Ù¸®°¡ µÇ´Â ±â¼úÀÌ ÈξÀ Áß¿äÇÒ ¶§°¡ ¸¹´Ù. 1+1ÀÌ 2 ÀÌ»óÀÌ µÉ ¼ö ÀÖµíÀÌ Ç÷¡½Ã(Flash)+´å³Ý(.NET) ¿ª½Ã Flash.NET ±× ÀÌ»óÀÌ µÉ °ÍÀÌ´Ù. @

 

¿ÃÇØ 3¿ù ´å³Ý Á¤½Ä ¹öÀüÀÌ ¹ßÇ¥µÇ¸é¼­ C#ÀÌ »õ·Î¿î ¾ð¾î·Î ¶°¿À¸£°í Àִµ¥, ƯÈ÷ ³×Æ®¿öÅ© ºÎºÐ¿¡¼­ ±âÁ¸ÀÇ IOCP(IO Completion Port) ±â´ÉÀ» ¼Õ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ¸¸µé¾î ³õ¾Ò´Ù´Â Á¡¿¡¼­ ÁÖ¸ñÇÒ¸¸ ÇÏ´Ù.

±âÁ¸¿¡´Â ÀÌ ±â´ÉÀ» ÀÌ¿ëÇÏ·Á¸é Win sock 2 API¸¦ Á÷Á¢ È£ÃâÇØ¾ß ÇßÁö¸¸, C#¿¡¼­´Â ÀÌ ±â´ÉÀÌ BCL (Base Class Library) ¾È¿¡ Æ÷ÇԵǾî ÀÖ¾î ¼Õ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù. C#¿¡¼­´Â ±âº»ÀûÀ¸·Î ºñµ¿±â Åë½ÅÀ» Çϸé ÀÚµ¿À¸·Î IOCP¸¦ ÀÌ¿ëÇÑ´Ù. ÀÌ´Â C# »Ó¸¸ ¾Æ´Ï¶ó ´å³ÝÀÇ ±âº» ±â´ÉÀÎ °ÍÀÌ´Ù. ¶ÇÇÑ Ç÷¡½Ã´Â À̹ø¿¡ MX ¹öÀüÀÌ Ãâ½ÃµÇ¸é¼­ ¸¹Àº ±â´ÉÀÇ °³¼±ÀÌ ÀÖ¾ú´Ù. Ç÷¡½Ã 5ºÎÅÍ XML ¼ÒÄÏÀ» Áö¿øÇØ Áö¼ÓÀûÀ¸·Î ¿¬°áµÈ »óÅ¿¡¼­ ³×Æ®¿öÅ© Åë½ÅÀÌ °¡´ÉÇØÁ³À¸¸ç ¿Â¶óÀÎ °ÔÀÓÀ¸·Î±îÁö ¿µ¿ªÀ» ³ÐÈú ¼ö ÀÖ°Ô µÆ´Ù.

¾ÕÀ¸·Î ÃÑ 4ȸÀÇ ¿¬À縦 ÅëÇÏ¿© ¿Â¶óÀÎ °ÔÀÓ ¼­¹ö·Î¼­ÀÇ C#ÀÇ °¡´É¼ºÀ» ¾Ë¾Æº¸°í, °ÔÀÓ Å¬¶óÀÌ¾ðÆ®·Î¼­ Ç÷¡½ÃÀÇ °¡´É¼º¿¡ ´ëÇØ ¾Ë¾Æº¼ °ÍÀÌ´Ù. ±âÁ¸ ¿Â¶óÀÎ °ÔÀÓÀÇ °æ¿ì ÇÁ·Î±×·¥À» ´Ù¿î¹Þ¾Æ Ç÷¹ÀÌÇØ¾ß ÇßÀ¸³ª Ç÷¡½Ã·Î ¿Â¶óÀÎ °ÔÀÓÀ» ¸¸µé °æ¿ì, ½ºÆ®¸®¹Ö ¹æ½ÄÀ» ÀÌ¿ëÇÏ¿© º°µµÀÇ ´Ù¿î·Îµå¾øÀÌ ½Ç½Ã°£À¸·Î µ¥ÀÌÅ͸¦ ÁÖ°í¹ÞÀ½À¸·Î½á Áï½Ã Ç÷¹À̰¡ °¡´ÉÇÏ´Ù. Ãʺ¸ÀÚµµ ÇØ´ç ȨÆäÀÌÁö¿¡ Á¢¼ÓÇϱ⸸ ÇÏ¸é ¹Ù·Î Ç÷¹ÀÌÇÒ ¼ö Àֱ⠶§¹®¿¡ ´©±¸³ª ½±°Ô °ÔÀÓÀ» ½ÃÀÛÇÒ ¼ö ÀÖ´Ù.

ÇÊÀÚ´Â ÀÌ·¯ÇÑ Ç÷¡½Ã¿Í C#ÀÇ Æ¯Â¡¿¡ ÁÖ¸ñÇÏ¿© ±× °¡´É¼ºÀ» Å×½ºÆ®ÇÑ´Ù´Â Àǹ̿¡¼­ Æ÷Æ®¸®½º¿Í ºñ½ÁÇÑ °ÔÀÓÀÎ ¡®½ÉÇà Æ÷Æ®¸®½º(Simple Fortress)¡¯¸¦ ¸¸µé¾î º¸¾Ò´Ù. º°µµÀÇ ´Ù¿î·Îµå ¾øÀÌ URL ÁÖ¼Ò¸¸ ÀÔ·ÂÇϸé Ç÷¹ÀÌÇÒ ¼ö ÀÖÀ¸¸ç, À¥ ºê¶ó¿ìÀú ³»¿¡¼­ ½ÇÇàµÇ¹Ç·Î °ÔÀÓÀ» Çϸ鼭µµ ´Ù¸¥ ÀÛ¾÷âÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ´Ù. º»°ÝÀûÀÎ ¼³¸í¿¡ µé¾î°¡±â Àü¿¡, ÀÌ °ÔÀÓÀº ÇÊÀÚ°¡ ´å³Ý°ú Ç÷¡½Ã¿¡ ´ëÇÑ Å×½ºÆ®¿ëÀ¸·Î ¸¸µç °ÍÀ¸·Î »ó¾÷ÀûÀ¸·Î »ç¿ëÇÒ Àǵµ°¡ ¾øÀ¸¸ç, ÀÌ °ÔÀÓÀÇ °ÅÀÇ ¸ðµç À̹ÌÁö¿Í »ç¿îµå ÆÄÀÏÀº Æ÷Æ®¸®½º 2 °ø½Ä ȨÆäÀÌÁö¿¡¼­ ´Ù¿î¹Þ¾Æ »ç¿ëÇÑ °ÍÀÓÀ» ¹Ì¸® ¹àÇôµÐ´Ù.

½ÉÇà Æ÷Æ®¸®½º ¹Ì¸®º¸±â
¾ÕÀ¸·Î ¿ì¸®°¡ ¸¸µé °ÔÀÓÀÌ ¾î¶² °ÔÀÓÀÎÁö ÇÑ ¹ø º¸µµ·Ï ÇÏÀÚ. ¡®ÀÌ´ÞÀÇ µð½ºÄÏ¡¯ÀÇ ¾ÐÃàÀ» Ç®¸é Server¿Í Client µÎ °³ÀÇ Æú´õ°¡ ÀÖÀ» °ÍÀÌ´Ù. ÀÌÁß Server Æú´õ¿¡¼­ FortressServer.exe¸¦ ½ÇÇàÇÏ¸é ¼­¹ö°¡ ÀÛµ¿ÇÑ´Ù(ÀÌ ¼­¹ö ÇÁ·Î±×·¥Àº ´å³Ý ±â¹Ý ÇÏ¿¡¼­¸¸ ÀÛµ¿Çϱ⠶§¹®¿¡ ÃÖ¼ÒÇÑ ´å³Ý ÇÁ·¹ÀÓ¿öÅ©´Â ¼³Ä¡µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù). ±× ´ÙÀ½ Client Æú´õÀÇ fortress.html ÆÄÀÏÀ» ½ÇÇà½ÃŲ´Ù. <È­¸é 1>°ú <È­¸é 2>´Â ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ÀÛµ¿ È­¸éÀÌ´Ù.

 
<È­¸é 1> FortessServer.exe ½ÇÇàÈ­¸é   <È­¸é 2> Fortess.html ½ÇÇàÈ­¸é


À¥ ºê¶ó¿ìÀú È­¸é¿¡¼­ ¿øÇÏ´Â ID¸¦ ÀÔ·ÂÇÏ°í µé¾î°£°¡¸é <È­¸é 3>°ú °°Àº ´ë±â½Ç È­¸éÀÌ ³ª¿Â´Ù. ÀÌ °÷¿¡¼­ ÅÊÅ© Á¾·ù¿Í ÆÀÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. ÀÌ »óÅ¿¡¼­ ¶Ç ÇÑ ¹ø Fortress.html ÆÄÀÏÀ» ½ÇÇàÇØ¼­ »õ·Î¿î ID¸¦ ÀÔ·ÂÇÏ°í µé¾î¿À¸é µÎ ¸íÀÇ °ÔÀ̸Ӱ¡ ´ë±â½Ç¿¡ µé¾î¿Â »óŰ¡ µÈ´Ù.

 
<È­¸é 3> ´ë±â½Ç È­¸é   <È­¸é 4> °ÔÀÓ ½ÃÀÛ È­¸é


À̶§ µÎ °³ÀÇ À¥ ºê¶ó¿ìÀú¿¡¼­ µ¿½Ã¿¡ ¹è°æÀ½¾ÇÀÌ ³ª¿À¹Ç·Î ¾à°£ È¥¶õ½º·¯¿ï ¼öµµ ÀÖ´Ù. ¼­·Î ´Ù¸¥ ÆÀÀ» °í¸¥ ÈÄ, óÀ½¿¡ µé¾î¿Ô´ø »ç¶÷ÀÌ START ¹öưÀ» ´©¸£¸é °ÔÀÓÀÌ ½ÃÀ۵ȴÙ(<È­¸é 4>). °ÔÀÓ ¹æ¹ýÀº <Ç¥ 1>°ú °°´Ù.

<Ç¥ 1> °ÔÀÓ¹æ¹ý  
±â´É Ű
ÅÊÅ©ÀÇ À̵¿  È­»ìÇ¥ Á¿ì Ű
ÅÊÅ©ÀÇ °¢µµ Á¶Á¤  È­»ìÇ¥ »óÇÏ Å°
´ëÆ÷ ¹ß»ç  ½ºÆäÀ̽º ¹Ù¸¦ ´­·¯¼­ ÆÄ¿ö¸¦ Á¶Àý ÈÄ ¹ß»çÇÑ´Ù.

¸ÕÀú ÀÚ½ÅÀÇ Â÷·Ê°¡ µÇ¸é ÀÚ½ÅÀÇ ÅÊÅ© À§¿¡ ¡®READY!¡¯¶ó´Â ±ÛÀÚ°¡ ±ôºý°Å¸°´Ù. ±× »óÅ¿¡¼­ °¢µµ Á¶Á¤À̳ª À̵¿À» Çϸ鼭 Á¶ÀýÇÑ ÈÄ ½ºÆäÀ̽º ¹Ù¸¦ ±æ°Ô ´­·¶´Ù°¡ ¶¼¸é ´ëÆ÷°¡ ¹ß»çµÈ´Ù(<È­¸é 5>). ¼­·Î ¹ø°¥¾Æ °¡¸é¼­ ´ëÆ÷¸¦ ¹ß»çÇÏ´Â ¹æ½ÄÀ¸·Î °ÔÀÓÀ» ½±°Ô Çϱâ À§ÇÏ¿© Æø¹ßÀÇ ÆÄÆí¸¸ ´ê¾Æµµ »ý¸íÄ¡¸¦ ÁÙ°Ô ÇØ ³õ¾Ò´Ù. äÆÃµµ Áö¿øÇϹǷΠ´ëÈ­¸¦ ÀÔ·ÂÇØµµ µÈ´Ù(<È­¸é 6>). ÀÌÁ¦ ¾î¶² °ÔÀÓÀÎÁö »ìÆìºÃÀ¸´Ï º»°ÝÀûÀ¸·Î °ÔÀÓ Á¦ÀÛ¿¡ Âø¼öÇØ º¸ÀÚ. ¸ÕÀú ¼­¹öºÎÅÍ ¸¸µé¾î º¼ °ÍÀÌ´Ù.

 
<È­¸é 5> ´ëÆ÷¸¦ ¹ß»çÇÑ Àå¸é   <È­¸é 6> ´ëÈ­¸¦ ³ª´©´Â Àå¸é


ºñµ¿±â È£ÃâÀÇ ±âº»Àº µ¨¸®°ÔÀÌÆ®
¼­¹ö Á¦ÀÛ¿¡¼­ Áß¿äÇÑ Á¡Àº ´Ù¼öÀÇ »ç¿ëÀÚ¸¦ ó¸®ÇØ¾ß ÇÏ´Â µ¥ ÀÖ´Ù. ÇÑ ¸íÀÌ ¾Æ´Ï¶ó ¿©·¯ ¸íÀÌ µ¿½Ã¿¡ Á¢¼ÓÇϹǷΠ±×µéÀÇ ¿ä±¸¸¦ µ¿½Ã¿¡ ó¸®ÇØ Áà¾ß¸¸ ÇÑ´Ù. ±×·±µ¥ ÀϹÝÀûÀ¸·Î ÇÁ·Î±×·¡¹ÖÇÏ´Ù º¸¸é ÇÑ ¸íÀ» ó¸®Çϱâ À§ÇØ ±× ´ë´äÀ» ±â´Ù¸®´Ù°¡ ´Ù¸¥ »ç¶÷ÀÇ ¿ä±¸¸¦ ¸ø µé¾îÁÖ°Ô µÈ´Ù.

Áï ºí·°ÀÌ µÅ ¹ö·Á¼­ ´Ù¼öÀÇ »ç¿ëÀÚ¸¦ ó¸®ÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ ¶§ÀÇ ÇØ°áÃ¥ÀÌ ¹Ù·Î ¾²·¹µåÀÌ´Ù. ´å³Ý¿¡¼­´Â ÀÌ·¯ÇÑ ¾²·¹µå¸¦ ÀÌ¿ëÇÏ¿© ºñµ¿±â È£ÃâÀ» Áö¿øÇϴµ¥, À̸¦ ÀÌ¿ëÇÏ¿© ¸¹Àº »ç¿ëÀÚµéÀÇ ¿ä±¸¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù. ÀÌ´Â ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ µ¿±âÀûÀ¸·Î ±× ÇÔ¼öÀÇ È£ÃâÀÌ ³¡³¯ ¶§±îÁö ±â´Ù¸®´Â °ÍÀÌ ¾Æ´Ï¶ó ÇÔ¼ö¸¦ È£ÃâÇÏ¸é ±× ÇÔ¼ö´Â »õ·Î¿î ¾²·¹µå ¾È¿¡¼­ µ¹¾Æ°¡°í È£ÃâÀÚ ¶ÇÇÑ ±âÁ¸ ¾²·¹µå ³»¿¡¼­ µ¹¾Æ°¡¹Ç·Î µ¿½Ã¿¡ ÀÏÀ» ó¸®ÇÒ ¼ö ÀÖ°Ô µÈ´Ù.

<±×¸² 1> µ¿±â È£Ãâ°ú ºñµ¿±â È£Ãâ


<±×¸² 1>Àº ¼ÒÄÏÀÇ Accept¹®À» ¿¹·Î µé¾î µ¿±â È£Ãâ°ú ºñµ¿±â È£ÃâÀÇ Â÷ÀÌÁ¡À» ¼³¸íÇÑ ±×¸²ÀÌ´Ù. ÀÌ ºñµ¿±â È£ÃâÀÇ ÇÙ½É °³³ä¿¡´Â ¹Ù·Î µ¨¸®°ÔÀÌÆ®(delegate)¶ó´Â °ÍÀÌ ÀÚ¸®Àâ°í ÀÖ´Ù. ±×·¯¹Ç·Î µ¨¸®°ÔÀÌÆ®ÀÇ º»ÁúºÎÅÍ ÆÄ¾ÇÇÏ´Â °ÍÀÌ ºñµ¿±â È£ÃâÀÇ ¿ø¸®¸¦ ÀÌÇØÇÏ´Â ¹æ¹ýÀÏ °ÍÀÌ´Ù.

C# ¼¼°èÀÇ ºê·ÎÄ¿, µ¨¸®°ÔÀÌÆ®
C#À» ¹è¿ì´Â »ç¶÷µé¿¡°Ô ÀÖ¾î µ¨¸®°ÔÀÌÆ®´Â »ý¼ÒÇÑ °³³äÀÌ ¾Æ´Ò ¼ö ¾ø´Ù. µ¨¸®°ÔÀÌÆ®´Â C ¾ð¾îÀÇ ÇÔ¼ö Æ÷ÀÎÅÍ¿¡¼­ºÎÅÍ À¯·¡µÇ¾ú´Ù. C ¾ð¾î¿¡¼­´Â ÇÔ¼ö Æ÷ÀÎÅ͸¦ Àß ¾È ½èÀ¸¹Ç·Î »ý¼ÒÇÒ ¼öµµ ÀÖ´Ù. ¸ÕÀú µ¨¸®°ÔÀÌÆ®ÀÇ »çÀüÀûÀÎ Àǹ̸¦ »ìÆìº¸¸é ¡®´ë¸®ÀÚ¡¯ ¶Ç´Â ¡®À§ÀÓÇü¡¯ µîÀ¸·Î Á¤ÀÇÇϰí ÀÖ´Ù. µ¨¸®°ÔÀÌÆ®¶ó´Â °ÍÀÌ ¾î¶² ÇÔ¼ö¸¦ ´ë½ÅÇØ¼­ È£ÃâµÇ±â ¶§¹®¿¡ ±×·¸°Ô À̸§À» ºÙÀÎ µíÇÏ´Ù. ÀÌÇØ¸¦ µ½±â À§ÇØ ´ÙÀ½°ú °°Àº ±â»óû ½Ã³ª¸®¿À¸¦ »ìÆìº¸ÀÚ.

±â»óû¿¡¼­´Â ±â»óÁ¤º¸¸¦ ¼öÁýÇØ ±× Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â °÷¿¡ Àü´ÞÇÑ´Ù. ±×·±µ¥ ´©°¡ ¾ðÁ¦ ±×·¯ÇÑ Á¤º¸¸¦ ÇÊ¿ä·Î ÇÒÁö ¹Ì¸® ¾Ë¼ö ¾ø±â ¶§¹®¿¡ ±×·± º¸°í ½Ã½ºÅÛÀ» ¹Ì¸® ±¸ÃàÇØ ³õÀ» ¼ö ¾ø¾ú´Ù. ±×·¡¼­ ´ë½Å ±â»ó Á¤º¸ ºê·ÎÄ¿¸¦ °í¿ëÇØ ±×¿¡°Ô Á¤º¸¸¦ ÁÖ¸é, ±×°¡ Àڽſ¡°Ô ¿¬°áµÈ ±â»ó Á¤º¸¸¦ ÇÊ¿ä·Î ÇÏ´Â »ç¶÷µé¿¡°Ô ±× Á¤º¸¸¦ ÁÖ±â·Î Çß´Ù. ±×·¸°Ô ÇØ¼­ º¸°í ½Ã½ºÅÛÀ» ¿Ï¼ºÇÏ°Ô µÆ´Ù. ÀÌ¿¡ ½Å¹®»ç°¡ Á¦ÀÏ Ã³À½ ±× Á¤º¸¸¦ ´Þ¶ó°í ºê·ÎÄ¿¿¡°Ô ¿äûÀ» Çß´Ù. ºê·ÎÄ¿´Â ±× ¿äûÀ» ¹Þ¾ÆµéÀÌ°í ±â»óûÀ¸·ÎºÎÅÍ ±â»ó Á¤º¸¸¦ ¹Þ´Â´ë·Î ½Å¹®»ç¿¡°Ô ÀüÇØ ÁÖ±â·Î Çß´Ù.

<±×¸² 2> ±â»ó ºê·ÎÄ¿ ½Ã³ª¸®¿À


À̸¦ ±×¸²À¸·Î ³ªÅ¸³»¸é <±×¸² 2>¿Í °°´Ù. ±×·¯¸é À̸¦ ÄÚµùÀ¸·Î ³ªÅ¸³» º¸ÀÚ. ¹Ì·¡ÀÇ ÀÏÀº ¿¹ÃøÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ÀÌ¹Ì ¸ðµç °èȹÀº ´Ù ¼¼¿üÁö¸¸ ´©°¡ ±× °èȹ¿¡ Âü¿©ÇÒÁö´Â ¸ð¸¦ ¶§°¡ ÀÖ´Ù. ÇÁ·Î±×·¡¹ÖÀÇ ¼¼°è¿¡¼­µµ ´©°¡ ±× ÀÏ¿¡ Âü¿©ÇÏ°Ô µÉÁö ¸ð¸£´Â »óȲÀÌ Á¾Á¾ »ý±ä´Ù. ÀÌ·² ¶§ µ¨¸®°ÔÀÌÆ®¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù. Â÷ÈÄ¿¡ µ¨¸®°ÔÀÌÆ®¸¦ ÅëÇØ¼­ ±× ÀÏÀ» ÇÒ ¸Þ½îµå¸¸ ¿¬°á½ÃÄÑÁÖ¸é µÈ´Ù.

 <¸®½ºÆ® 1> ±â»ó º¸°í ½Ã½ºÅÛ

µ¨¸®°ÔÀÌÆ®ÀÇ ºñ¹ÐÀ» ÆÄÇìÄ¡ÀÚ
<¸®½ºÆ® 1>À» º¸¸é ÇÑ °¡Áö ±Ã±ÝÁõÀÌ ¶°¿À¸¦ ¼öµµ ÀÖ´Ù. ¸¶Áö¸· ÁÙÀ» ´Ù½Ã º¸ÀÚ.

Information broker =
    new Information(NewspaperCompany.Publish);


¿©±â¼­ ¿Ö new¶ó´Â Ű¿öµå¸¦ ½è´ÂÁö ±Ã±ÝÁõÀÌ ÀϾ °ÍÀÌ´Ù. new¶ó´Â °ÍÀº »õ·Î¿î Object¸¦ ÇÒ´çÇÒ ¶§¿¡¸¸ ¾²´Â Ű¿öµåÀε¥, ¿©±â¼­ »ç¿ëÇß´Ù´Â °ÍÀº ¸¶Ä¡ Ŭ·¡½º¸¦ ÇÒ´çÇÏ´Â °Í°ú ºñ½ÁÇÏ´Ù°í »ý°¢ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à ±×·¸°Ô »ý°¢Çß´Ù¸é ¸Â´Ù. µ¨¸®°ÔÀÌÆ®¶ó´Â °ÍÀÌ ¹Ù·Î Ŭ·¡½ºÀ̱⠶§¹®ÀÌ´Ù. µ¨¸®°ÔÀÌÆ®¸¦ ¡®À§ÀÓ[Çü]¡¯À̶ó°í ¹ø¿ªÇϵíÀÌ µ¨¸®°ÔÀÌÆ®´Â Ŭ·¡½º ŸÀÔÀÌ´Ù. ±×·¯¸é Ŭ·¡½º ¹Ùµð´Â ¾îµð¿¡ ÀÖ´Â °É±î? Ŭ·¡½º¶ó¸é ´ÙÀ½°ú °°ÀÌ µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

Class Information
{
   
}


ÇÏÁö¸¸ Ŭ·¡½ºÀÇ Á¤Àǰ¡ ´ÙÀ½°ú °°ÀÌ ÇÑ ÁÙ·Î µÇ¾î ÀÖ´Ù.

delegate void Information(int temparature, int humidity, string nephanalysis);


µµ´ëü ¹Ùµð´Â ¾îµð¿¡ Àִ°¡? »ç½Ç ÀÌ ÇÑ ÁÙ¿¡´Â ¹Ùµð¸¦ Æ÷ÇÔÇϰí ÀÖ´Ù(<±×¸² 3>). Áï ¸®ÅÏÇü°ú ÀÎÀÚÇü¿¡ ´ëÇÑ Á¤º¸°¡ Ŭ·¡½º ¹Ùµð°¡ µÇ´Â °ÍÀÌ´Ù.

<±×¸² 3> DeleBangÀÇ Å¬·¡½º ¹Ùµð


µ¨¸®°ÔÀÌÆ®°¡ Á¤¸» Ŭ·¡½ºÀÎÁö È®ÀÎÇØ º¸±â À§ÇÏ¿© Áß°£ ÄÚµå·Î È®ÀÎÇØ º¸ÀÚ. ´å³ÝÀ» ¼³Ä¡ÇÑ Æú´õ¿¡ ILDA SM.exe ÆÄÀÏÀÌ ÀÖ´Ù. ÀÌ´Â IL DisassemblerÀÇ ¾àÀÚ·Î ¸» ±×´ë·Î Áß°£ Äڵ带 disassembleÇØ ÁØ´Ù. À̸¦ ÅëÇØ ¾Õ¿¡¼­ ÄÄÆÄÀÏÇÑ Meteorological System.exe ÆÄÀÏÀ» ¿­¾î º¸¸é <È­¸é 7>ÀÌ ³ªÅ¸³­´Ù. <È­¸é 7>À» º¸¸é ±ÛÀÚ ¿·¿¡ ¾ÆÀÌÄܵéÀÌ Àִµ¥, À̵éÀÌ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö´Â <È­¸é 8>À» º¸¸é ¾Ë ¼ö ÀÖ´Ù.

<È­¸é 7> MeteorologicalSystem.exe¸¦ DisassembleÇÑ È­¸é


 

<È­¸é 8> ¾ÆÀÌÄÜ µµ¿ò¸»


À̸¦ ÅëÇØ¼­ º¸¸é InformationÀº Ŭ·¡½º¶ó´Â °Í°ú .ctor, BeginInvoke, EndInvoke, Invoke¶ó´Â ³× °³ÀÇ ¸Þ½îµå¸¦ °¡Áö°í ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. ¶ÇÇÑ InformationÀº System.Muticastdele gate¿¡¼­ »ó¼Ó¹Þ¾Ò´Ù´Â Á¤º¸±îÁö °®°í ÀÖ´Ù. ¿©±â¿¡ ³ª¿À´Â 4°³ÀÇ ¸Þ½îµåÁß .ctorÀº »ý¼ºÀÚ¸¦ ÀǹÌÇÑ´Ù. BeginInvoke¿Í EndInvoke´Â ºñµ¿±â È£Ãâ¿¡ ¾²À̸ç, Invoke´Â µ¿±â È£Ãâ¿¡ ¾²ÀÌ´Â ¸Þ½îµåÀÌ´Ù. À̵鿡 ´ëÇÑ ÄÚµå´Â <¸®½ºÆ® 2>¿Í °°´Ù.

 <¸®½ºÆ® 2> Information Ŭ·¡½ºÀÇ ÄÚµå

<Ç¥ 2> µ¨¸®°ÔÀÌÆ®ÀÇ Private Çʵå

 
Çʵå ŸÀÔ ¼³ ¸í
_target  System.Object ÀνºÅϽº ¸Þ½îµå¿¡ ¾²ÀÌ´Â °ÍÀ¸·Î, Äݹé¸Þ½îµå°¡ È£ÃâµÉ¶§ ÂüÁ¶ÇÏ´Â ObjectÀÌ´Ù.
_methodPtr  System.Int32 CLR¿¡¼­ »ç¿ëµÇ´Âµ¥, ÄݹéµÉ ¸Þ½îµå¸¦ °¡¸®Å°´Â integer °ª
_prev System.Multicastdelegate ´Ù¸¥ µ¨¸®°ÔÀÌÆ®¸¦ °¡¸®Å°´Â °ª

<¸®½ºÆ® 2>¸¦ º¸¸é ÇÑ °¡Áö ÀÌ»óÇÑ Á¡À» ¹ß°ßÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¹Ù·Î InformationÀÇ »ý¼ºÀÚÀε¥, ¿ì¸®´Â <¸®½ºÆ® 1>¿¡¼­ »ý¼ºÀÚ·Î NespaperCompany.Publish¸¦ ³Ñ°ÜÁá´Ù. ±×·±µ¥ <¸®½ºÆ® 2>¸¦ º¸¸é »ý¼ºÀÚ´Â µÎ °³ÀÇ ÀÎÀÚ°¡ ÇÊ¿äÇÏ´Ù. ºÐ¸í ¿¡·¯¸¦ ¹ß»ýÇØ¾ß Çϴµ¥ Àß µÇ´Â °ÍÀ» º¸¸é ÀÌ»óÀÌ ¾ø´Â °ÍÀÌ´Ù. ¿©±â¼­ ÄÄÆÄÀÏ·¯´Â ¿øº» ¼Ò½º¸¦ ÄÄÆÄÀÏÇÒ ¶§, ¾ÕÀÇ »ý¼ºÀÚ¿¡ ¸Âµµ·Ï ÆÄ½ÌÀ» ÇØÁֱ⠶§¹®¿¡ ¿¡·¯°¡ ¾È ³ª´Â °ÍÀÌ´Ù.

¾ÕÀÇ µÎ ÀÎÀÚÁß targetÀº ¸Þ½îµå°¡ ÀÖ´Â ¿ÀºêÁ§Æ®¸¦ °¡¸®Å°´Âµ¥ ¸¸¾à ¸Þ½îµå°¡ staticÀ̸é null °ªÀ» ³Ñ°ÜÁØ´Ù. methodPtrÀº callback ¸Þ½îµå¸¦ °¡¸®Å°´Â CLR ³»ºÎ¿¡¼­ ¾²ÀÌ´Â ·¹ÆÛ·±½º °ªÀÌ´Ù. ÀÌµé »ý¼ºÀÚ¿¡¼­ ¹ÞÀº µÎ °³ÀÇ °ªÀ» Information Ŭ·¡½º´Â µû·Î Private Çʵ忡 ÀúÀåÇØ µÎ´Âµ¥ ±× Private Çʵå´Â <Ç¥ 2>¿Í °°´Ù.

ÀÌÁß _prev °ªÀº ³ªÁß¿¡ Muticatedelegate¿¡¼­ ¼³¸íÇÒ °ÍÀÌ´Ù. ±×·³ ÀÌÁ¦ ¿ì¸®°¡ »ý¼ºÀÚ¿¡°Ô ³Ñ°ÜÁØ ±× °ªµéÀ» Á÷Á¢ ´«À¸·Î È®ÀÎÇØ º¸ÀÚ. <¸®½ºÆ® 1>¿¡¼­ main ¸Þ½îµå¿¡ ´ÙÀ½°ú °°Àº Äڵ带 Ãß°¡ÇÏÀÚ.

// »ý¼ºÀÚ¿¡ ³Ñ°ÜÁØ °ªÀ» º¸ÀÚ.
if ( broker.Target == null )
{
   Console.WriteLine(¡°null¡±);
}
else
{
   Console.WriteLine(broker.Target);
}
Console.WriteLine(broker.Method);


À̸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú¸¦ º¼ ¼ö ÀÖ´Ù.


=== ù¹øÂ° ¿¹Á¦ ===
[½Å¹®»ç ÃâÆÇ] ¿Âµµ : 25, ½Àµµ : 60, ±¸¸§ºÐÆ÷ : ±¸¸§ ¾øÀ½
=== µÎ¹øÂ° ¿¹Á¦ ===
null
Void Publish(Int32, Int32, System.String)


¿ì¸®°¡ ³Ñ°ÜÁØ ¸Þ½îµå°¡ StaticÀ̱⠶§¹®¿¡ Target¿¡´Â null °ªÀÌ µé¾î°¬°í, ¸Þ½îµå¿¡´Â ´ë¸®ÀÚ¿¡ µî·ÏµÈ ¸Þ½îµåÀÇ Çü½ÄÀÌ ³ª¿Ô´Ù. ¸¸¾à ¿©±â¿¡¼­ instance ¸Þ½îµå¸¦ ³Ñ°ÜÁÖ¸é ¾î¶² °ªÀÌ ³ª¿Ã±î? ¾Õ¿¡¼­ Kill ¸Þ½îµå¿¡¼­ staticÀ» »©°í, NewspaperCompany Ŭ·¡½º¸¦ »õ·Î »ý¼ºÇؼ­ ½ÇÇàÇØ º¸¸é ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Â´Ù. Áï ¸Þ½îµåÀÇ Object¸¦ ³Ñ°ÜÁÖ´Â °ÍÀÌ´Ù.

=== ù¹øÂ° ¿¹Á¦ ===
[½Å¹®»ç ÃâÆÇ] ¿Âµµ : 25, ½Àµµ : 60, ±¸¸§ºÐÆ÷ : ±¸¸§ ¾øÀ½
=== µÎ¹øÂ° ¿¹Á¦ ===
MeteorologicalSystem.NewspaperCompany
Void Publish(Int32, Int32, System.String)


ÀÌÁ¦ »ý¼ºÀÚ¿¡ ´ëÇÑ ºñ¹ÐÀº Ç®¾úÀ¸³ª ¾ÆÁ÷ Information Ŭ·¡½ºÀÇ ¸Þ½îµå¿¡ ´ëÇÑ ºñ¹ÐÀÌ ³²¾Æ ÀÖ´Ù. <¸®½ºÆ® 2>¿¡¼­ Invoke ¸Þ½îµå°¡ Àִµ¥ À̰ÍÀÌ ½ÇÁ¦ ½ÇÇàÇÏ´Â ¸Þ½îµåÀÌ´Ù. ±×·±µ¥ ¿ì¸®´Â ±× ¸Þ½îµå¸¦ È£ÃâÇÑ ÀûÀÌ ¾ø´Ù. ±×·¯¸é ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼­ È£ÃâÇØ ÁÖ´Â °ÍÀϱî? ±×·¸°Ô »ý°¢Çß´Ù¸é Á¤´äÀÌ´Ù. ¿ì¸®´Â <¸®½ºÆ® 1>¿¡¼­ ´ÙÀ½°ú °°ÀÌ È£ÃâÇß´Ù.


broker(25,60,¡±±¸¸§ ¾øÀ½¡±);


ÄÄÆÄÀÏ·¯´Â ÀÌ Äڵ带 º¸°í ´ÙÀ½°ú °°ÀÌ ¹ø¿ªÇÑ´Ù.


broker.Invoke(25,60,¡±±¸¸§ ¾øÀ½¡±);


±×·±µ¥ Á¤¸» ÀÌ·¸°Ô ¹ø¿ªÇÏ´Â °ÍÀϱî? ÀÌ°Í ¿ª½Ã ILDASMÀ» ÀÌ¿ëÇØ¼­ È®ÀÎÇØ º¸ÀÚ. <È­¸é 9>¸¦ º¸¸é ÄÄÆÄÀÏ·¯°¡ ¸¸µé¾î ÁØ Invoke ¸Þ½îµå¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

 
<È­¸é 9> Invoke°¡ È£ÃâµÈ ºÎºÐ   <È­¸é 10> += ¿¬»êÀÚ°¡ ³ªÅ¸³»´Â ¸Þ½îµå


³Ê¿¡°Ô ÀÓ¹«¸¦ Ãß°¡ÇÑ´Ù!
ÀÌÁ¦ µ¨¸®°ÔÀÌÆ®¿¡ ´ëÇØ ¾î´À Á¤µµ ºñ¹ÐÀ» Ç®¾ú´Ù. ±×·±µ¥ ¿©±â¼­ ÇÑ °¡Áö Àǹ®ÀÌ ³²¾Æ ÀÖ´Ù. <Ç¥ 2>¸¦ º¸¸é _prev¶ó´Â Çʵ尡 Àִµ¥ ÀÌ ÇʵåÀÇ ¿ëµµ°¡ ¹«¾ùÀÌ³Ä ÇÏ´Â °ÍÀÌ´Ù. À̸¦ À§ÇØ ´ÙÀ½°ú °°Àº ½Ã³ª¸®¿À¸¦ º¸ÀÚ.

¾î´À ³¯ ¹æ¼Û»ç¿¡¼­µµ ±× ±â»ó Á¤º¸¸¦ ´Þ¶ó´Â ¿äûÀÌ µé¾î¿Ô´Ù. ÀÌ¹Ì ±â»óû¿¡¼­´Â ºê·ÎÄ¿¿¡°Ô ±× ÀÏÀ» ÀÏÀÓÇßÀ¸¹Ç·Î ¹æ¼Û»ç´Â ºê·ÎÄ¿¿Í °Å·¡¸¦ ÇØ µî·ÏÇÔÀ¸·Î½á ºê·ÎÄ¿¸¦ ÅëÇØ ±â»óûÀÇ Á¤º¸¸¦ Á¦°ø¹Þ°Ô µÈ´Ù. À̸¦ ÄÚµå·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù. ¸ÕÀú Broadcasting Company Ŭ·¡½º¸¦ ´ÙÀ½°ú °°ÀÌ »õ·Î ¸¸µç´Ù.


// ¹æ¼Û»ç
class BroadcastingCompany
{
   // ¹æ¼Û»ç¿¡¼­ ¹æ¼Û º¸µµ
   public static void Broadcast( int temparature,
      int humidity, string nephanalysis)
   {
      Console.WriteLine(¡°[¹æ¼Û º¸µµ] ¿Âµµ:{0}, ½Àµµ:{1}, ±¸¸§ºÐÆ÷:{2}¡±,
      temparature, humidity, nephanalysis);
   }
}


±× ´ÙÀ½ ºê·ÎÄ¿¿¡ ´ÙÀ½°ú °°ÀÌ Ãß°¡ÇÏ¸é µÈ´Ù.


broker += new Information(BroadcastingCompany.Broadcast);


°á°ú´Â ´ÙÀ½°ú °°´Ù.


=== ¼¼¹øÂ° ¿¹Á¦ ===
[½Å¹®»ç ÃâÆÇ] ¿Âµµ : 25, ½Àµµ : 60, ±¸¸§ºÐÆ÷ : ±¸¸§ ¾øÀ½
[¹æ¼Û º¸µµ] ¿Âµµ : 25, ½Àµµ : 60, ±¸¸§ºÐÆ÷ : ±¸¸§ ¾øÀ½


¿©±â¼­´Â ´Ü¼øÈ÷ += ¿¬»êÀÚ¸¦ ÀÌ¿ëÇß´Ù. C#¿¡¼­´Â ¿¬»êÀÚ ¿À¹ö·ÎµùÀ» Áö¿øÇϱ⠶§¹®¿¡ += ¿¬»êÀÚ´Â ½ÇÁúÀûÀ¸·Î ¸Þ½îµå¸¦ È£ÃâÇÏ´Â °ÍÀÌ´Ù. ±×·¯¸é ±× ¸Þ½îµå°¡ ¹«¾ùÀÎÁö ILDASMÀ» ÅëÇØ È®ÀÎÇØ º¸ÀÚ. <È­¸é 10>À» º¸¸é CombineÀ̶ó´Â ¸Þ½îµå°¡ È£ÃâµÊÀ» º¼ ¼ö ÀÖ´Ù.

±âº»ÀûÀ¸·Î µ¨¸®°ÔÀÌÆ® ŸÀÔÀº Muticastdelegate¸¦ »ó¼Ó¹ÞÀ¸¹Ç·Î ÇϳªÀÇ callback ¸Þ½îµå°¡ ¾Æ´Ñ ´Ù¼öÀÇ callback ¸Þ½îµå¸¦ °¡Áú ¼ö ÀÖ´Ù. ¾ÕÀÇ ½Ã³ª¸®¿À¿¡¼­ º¸µíÀÌ ¾î¶² »ç°Ç¿¡ ÀÇÇØ ´Ù¼ö°¡ ±× ¿µÇâÀ» ¹Þ´Â °æ¿ì°¡ Àֱ⠶§¹®¿¡ ÀÌ·¯ÇÑ ±â´ÉÀ» Áö¿øÇÏ´Â °ÍÀÌ´Ù. µ¨¸®°ÔÀÌÆ® ³»ºÎÀûÀ¸·Î´Â À̰ÍÀ» linked-list·Î À¯Áö¸¦ ÇÑ´Ù. linked-list·Î À¯ÁöÇϱ⠶§¹®¿¡ ¾ÕÀÇ ¸µÅ©¸¦ °¡¸®Å°´Â _prev Çʵ尡 ÇÊ¿äÇÑ °ÍÀÌ´Ù. À̸¦ ±×¸²À¸·Î ³ªÅ¸³»¸é <±×¸² 4>¿Í °°´Ù.

<±×¸² 4> ºê·ÎÄ¿ÀÇ linked-list


ÀÌ ±×¸²À» º¸¸é ÇÑ °¡Áö Àǹ®Á¡ÀÌ µé °ÍÀÌ´Ù. ¿ì¼± ºê·ÎÄ¿°¡ óÀ½¿¡ µî·ÏÇß´ø ½Å¹®»ç¸¦ °¡¸®Å°´Â °ÍÀÌ ¾Æ´Ï°í ³ªÁß¿¡ µî·ÏÇÑ ¹æ¼Û»ç¸¦ °¡¸®Å²´Ù´Â °Í°ú ÀϹÝÀûÀÎ linked-list¿¡¼­´Â _next Çʵå·Î ´ÙÀ½ ¿ÀºêÁ§Æ®¸¦ °¡¸®Å°´Â µ¥ ºñÇØ ¿©±â´Â _prevÇʵ带 ½á¼­ ¾ÕÀÇ ¿ÀºêÁ§Æ®¸¦ °¡¸®Å²´Ù´Â °ÍÀÌ´Ù. ±× ÀÌÀ¯´Â ¸®ÅÏ °ª ¶§¹®¿¡ ±×·¸´Ù. ¸¸¾à callback ¸Þ½îµå¿¡ ¸®ÅÏ °ªÀÌ ÀÖ´Ù¸é ¾î¶»°Ô ÇÒ °ÍÀΰ¡? ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº °æ¿ìÀÌ´Ù.

delegate int Information(int temparature, int humidity,
   string nephanalysis);


ÀÌ¿Í °°ÀÌ ¸®ÅÏ °ªÀÌ ÀÖ´Â °æ¿ì ºê·ÎÄ¿¿¡ µî·ÏµÈ callback ¸Þ½îµå°¡ ÇÑ °³¶ó¸é º° ¹®Á¦°¡ ¾øÁö¸¸, ¿©·¯ °³¶ó¸é ¾î¶»°Ô ÇÒ±î? ¸ÕÀú C#¿¡¼­´Â ¿©·¯ °³ÀÇ callback ¸Þ½îµåÁß ´Ü ÇѰ³ÀÇ ¸®ÅÏ °ª¸¸ ¹Þ¾Æ ¿Ã ¼ö ÀÖ´Ù. ±× ¿©·¯ °³ÀÇ ¸®ÅÏ °ªÀ» ´Ù ¹Þ¾Æ¿À·Á¸é ´Ù¸¥ ¹æ¹ýÀ» ÃëÇØ¾ß Çϴµ¥ ±× ¹æ¹ýÀº ³ªÁß¿¡ ¼Ò°³ÇÒ °ÍÀÌ´Ù. ÀÏ´Ü ÀϹÝÀûÀÎ »óȲ¿¡¼­´Â ¸®ÅÏ °ªÀ» Çϳª¸¸ ÃëÇÑ´Ù.

±×·¯¸é ¾î¶² ¸®ÅÏ °ªÀ» ÃëÇÒ °ÍÀΰ¡? »ó½ÄÀûÀ¸·Î »ý°¢ÇØ º¸¸é °¡Àå ÃÖ±Ù¿¡ È£ÃâµÈ callback ¸Þ½îµåÀÇ ¸®ÅÏ °ªÀÌ °¡Àå °¡Ä¡ÀÖ´Ù°í »ý°¢µÉ °ÍÀÌ´Ù. ±×·¡¼­ °¡Àå ³ªÁß¿¡ È£ÃâµÈ ¸®ÅÏ °ªÀÌ ÇÊ¿äÇϱ⠶§¹®¿¡ _next Çʵ带 ¾È ¾²°í À§·Î °Å½½·¯ ¿Ã¶ó°¡¼­ È£ÃâÇÏ´Â °ÍÀÌ´Ù. _next¸¦ ¾´ °æ¿ì¿Í _prev¸¦ ¾´ °æ¿ì¸¦ ±×¸²À¸·Î ºñ±³ÇØ º¸ÀÚ. ¿¹¸¦ µé¾î f1, f2, f3¸¦ ºê·ÎÄ¿¿¡ µî·ÏÇß´Ù°í Çϸé <±×¸² 5>¿Í °°Àº È£Ãâ °úÁ¤À» º¼ ¼ö ÀÖ´Ù.

<±×¸² 5> _prev¿Í _nextÀÇ Â÷ÀÌÁ¡


±×·¯¸é Á÷Á¢ È£ÃâÀ» ´ã´çÇÏ´Â Invoke ¸Þ½îµå¿¡ ´ëÇÑ °¡»ó Äڵ带 ¸¸µé¾î º¸ÀÚ.


class Information : Multicastdelegate
{
   public int virtual Invoke(int temparature, int humidity,
      string nephanalysis)
   {
      // ¾ÕÀ¸·Î °Å½½·¯ ¿Ã¶ó°£´Ù.
      if ( _prev != null ) _prev.Invoke(temparature,
      humidity,
      nephanalysis);

      // °á±¹ ¸Ç ³ªÁß¿¡ È£ÃâµÈ callback ¸Þ½îµåÀÇ ¸®ÅÏ °ªÀÌ ¸®ÅϵȴÙ.
      return _target.methodPtr ( temparature, humidity,
      nephanalysis);
   }
}


±×·³ ÀÌÁ¦ _prev¸¦ »ìÆìºÃÀ¸´Ï, Combine ¸Þ½îµå°¡ ³»ºÎÀûÀ¸·Î ¾î¶»°Ô ÀÌµé ¿¬°áÀ» ¸¸µå´ÂÁö º¸ÀÚ. <¸®½ºÆ® 3>Àº µ¨¸®°ÔÀÌÆ® Ŭ·¡½ºÀÇ Combine ¸Þ½îµåµéÀÌ´Ù. Combine ¸Þ½îµå´Â µÎ °³ÀÇ µ¨¸®°ÔÀÌÆ®¸¦ ÀÎÀÚ·Î ¹Þ´Âµ¥, ¸ÕÀú delegate´Â ÇÑ ¹ø »ý¼ºµÇ¸é immutableÇϱ⠶§¹®¿¡ _prev Çʵ带 ¸¶À½´ë·Î º¯°æÇÒ ¼ö°¡ ¾ø´Ù. ±×·¡¼­ CombineÀ» ÇÒ ¶§¿¡´Â second¿Í °°Àº »õ·Î¿î µ¨¸®°ÔÀÌÆ® ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇϰí, À̶§ _prev ÇÊµå °ªÀ» first·Î ¼³Á¤ÇØ ÁØ´Ù.

 <¸®½ºÆ® 3> µ¨¸®°ÔÀÌÆ®ÀÇ ¸Þ½îµå

±×·¸´Ù¸é À̸¦ ÀÌ¿ëÇØ¼­ Combine ¸Þ½îµå°¡ Á¤¸» »õ·Î¿î ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇؼ­ ¸®ÅÏÇÏ´ÂÁö ´ÙÀ½°ú °°Àº Äڵ带 º¸ÀÚ. ´ÙÀ½ °á°ú¸¦ º¸¸é False°¡ ³ª¿Â´Ù. Combine ¸Þ½îµå°¡ »õ·Î¿î µ¨¸®°ÔÀÌÆ®¸¦ »õ·Î »ý¼ºÇؼ­ ¸®ÅÏÇϱ⠶§¹®ÀÌ´Ù.


Information broker1 =
   new Information(NewspaperCompany.Publish);
Information broker2 = (Information) delegate.Combine(broker1,
   broker1);

Console.WriteLine( (object) broker1 == (object) broker2 );


µ¨¸®°ÔÀÌÆ®¿¡ Combine½ÃŰ´Â ¹æ¹ýÀÌ ÀÖÀ¸´Ï Remove½ÃŰ´Â ¹æ¹ýµµ ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½°ú °°Àº °æ¿ì¸¦ º¸ÀÚ.

broker -= new Information(NewspaperCompany.Publish);
MeteorologicalOffice.Report(broker);


¾Õ¿¡¼­ ºê·ÎÄ¿¿¡°Ô ½Å¹®»ç¿Í ¹æ¼Û»ç¸¦ ´Ù µî·Ï½ÃÄ״µ¥ À̹ø¿¡´Â ½Å¹®»ç¸¦ Á¦°ÅÇØ ºÃ´Ù. ÀÌ -= ¿¬»êÀÚ ¶ÇÇÑ ½ÇÁ¦·Î´Â Remove ¸Þ½îµå¸¦ ³ªÅ¸³½´Ù. ÀÌ´Â <¸®½ºÆ® 3>¿¡¼­ º¸µíÀÌ µÎ °³ÀÇ ÀÎÀÚ¸¦ ÃëÇϴµ¥, ù ¹øÂ°´Â linked-list¸¦ ÀÌ·ç°í ÀÖ´Â µ¨¸®°ÔÀÌÆ®ÀÇ Çìµå¸¦ °¡¸®Å°¸ç, µÎ ¹øÂ°´Â »èÁ¦ÇÒ µ¨¸®°ÔÀÌÆ®¸¦ °¡¸®Å²´Ù. ±×·±µ¥ ¿Ö Áö¿ì´Âµ¥ ¿ÀºêÁ§Æ®¸¦ »õ·Î »ý¼ºÇÒ±î? linked-list¿¡¼­ ¿øÇÏ´Â °ÍÀ» ã¾Æ¼­ Áö¿ö¾ß Çϴµ¥, À̸¦ ºñ±³ÇÏ´Â ¹æ¹ý¿¡ ±× ¿øÀÎÀÌ ÀÖ´Ù.

¿ì¸®°¡ Á¤È®È÷ ã°íÀÚ ÇÏ´Â °ÍÀº NewspaperCompany. Publish·Î À̸¦ ºñ±³Çؾ߸¸ ÇÏ´Â °ÍÀÌ´Ù. ±×·±µ¥ ¾Õ¼­¼­ µ¨¸®°ÔÀÌÆ® Ŭ·¡½º¿¡¼­ »ý¼ºÀÚ·Î ³Ñ°ÜÁÖ´Â °ÍÀ¸·Î _target°ú _method PtrÀÌ ÀÖ¾ú´Ù. Áï instance/staticÀÌ³Ä ÇÏ´Â °Í°ú, ¸®ÅÏ °ª°ú ÀÎÀÚÇü¿¡ µû¶ó Ŭ·¡½º¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ±×·¸±â ¶§¹®¿¡ µ¨¸®°ÔÀÌÆ®¿¡¼­´Â µ¿µî ºñ±³¸¦ ÇÏ´Â µ¥ ÀÖ¾î _target°ú _methodPtrÀ» ÀÌ¿ëÇÑ´Ù. ´ÙÀ» ½ÇÇàÇϸé TRUE¸¦ ¸®ÅÏÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.


Information broker3 =
   new Information(NewspaperCompany.Publish);
Information broker4 =
   new Information(NewspaperCompany.Publish);

Console.WriteLine(broker3.Equals(broker4));


ÀÌÁ¦ µ¨¸®°ÔÀÌÆ®¿¡ ´Ù¸¥ µ¨¸®°ÔÀÌÆ®¸¦ ½±°Ô Ãß°¡/»èÁ¦ÇÒ ¼ö ÀÖ°Ô µÆ´Ù. ±×·¯³ª ¾Õ¼­ ¾ê±âÇßµíÀÌ µ¨¸®°ÔÀÌÆ®ÀÇ linked-list È£Ãâ ±¸Á¶´Â ÇÑ °¡Áö ´ÜÁ¡À» Áö´Ï°í ÀÖ´Ù. Áß°£ÀÇ ¸®ÅÏ °ªµéÀ» ¹«½ÃÇÑ´Ù´Â °ÍÀÌ´Ù. °Ô´Ù°¡ ¸¸¿¡ Çϳª ¸®½ºÆ®µé Áß¿¡¼­ exceptionÀÌ ÀϾµç°¡ ºí·¯Å·(blocking)µÇ±â¶óµµ Çϸé, µÚ¿¡ µþ·Á ÀÖ´Â ¸®½ºÆ®µéÀº ¸ðµÎ È£ÃâµÇÁö ¸øÇÏ°í ¸ØÃç¹ö¸°´Ù.

ÀÌ·² ¶§¿¡´Â ¾Ë¾Æ¼­ È£ÃâÇÏ°Ô ³öµÎÁö ¸»°í »ç¿ëÀÚ°¡ Á÷Á¢ ÇϳªÇϳª Ã¼Å©ÇØ °¡¸é¼­ È£ÃâÇÏ¸é µÈ´Ù. C#¿¡¼­´Â ÀÌ¿Í °°Àº ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ GetInvoca tionList()¶ó´Â ÇÔ¼ö¸¦ Á¦°øÇϰí ÀÖ´Ù. À̸¦ ÀÌ¿ëÇϸé linked-listÀÇ °¢ ±¸¼º¿øÀ» ¶È°°ÀÌ º¹»çÇÑ ¹è¿­·Î ¸®ÅϹÞÀ» ¼ö ÀÖ´Ù. ´Ü À̶§ _prev Çʵå´Â ÇÊ¿ä¾ø±â ¶§¹®¿¡ null·Î ¼ÂÆÃÀÌ µÈ´Ù.


delegate[] arraydelegates = broker.GetInvocationList();
foreach(Information agent in arraydelegates)
{
   Console.WriteLine(agent.Method);
}


À̺¥Æ® Çڵ鷯·Î ÀÓ¸íÇÕ´Ï´Ù~
ÀÌÁ¦ ¸¶Áö¸·À¸·Î À̺¥Æ®¿¡ ´ëÇØ ¾Ë¾Æ º¸ÀÚ. À̺¥Æ®´Â ÇÑ ¿ÀºêÁ§Æ®¿¡¼­ ¾î¶² ÀÏÀÌ ÀϾ¼­ ±× ÀÏÀ» ´Ù¸¥ ¿ÀºêÁ§Æ®¿¡°Ô ¾Ë·ÁÁÙ ¶§ ÀÌ¿ëÇÑ´Ù. ÀÌ´Â µ¨¸®°ÔÀÌÆ®¿Íµµ ¸¹ÀÌ À¯»çÇѵ¥, ½ÇÁ¦·Îµµ µ¨¸®°ÔÀÌÆ®¸¦ ÀÌ¿ëÇϹǷΠÀ̺¥Æ®´Â µ¨¸®°ÔÀÌÆ®ÀÇ Æ¯º°ÇÑ ¿ëµµ¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ¿¹¸¦ µé¾î ¾Õ¼­ Á¤ÀÇÇÑ ±â»óÁ¤º¸ ½Ã½ºÅÛÀ» À̺¥Æ®·Î ¸¸µé¾î º¸ÀÚ. À̶§ À̺¥Æ®¶ó´Â Àǹ̿¡ Á»´õ Ãæ½ÇÇϱâ À§ÇØ ±â»ó Ưº¸¸¦ ±â»óû¿¡¼­ ¹ß·ÉÇÑ´Ù°í °¡»óÇØ º¸¾Ò´Ù. À̶§ ±â»óû¿¡¼­´Â ÀÚ½ÅÀÇ À̺¥Æ®¿¡ µî·ÏµÈ ½Å¹®»ç¿¡°Ô ÅëÁöÇØ ÁØ´Ù. <¸®½ºÆ® 4>¸¦ º¸ÀÚ.

 <¸®½ºÆ® 4> À̺¥Æ® ¿¹Á¦

À̺¥Æ® À̿뿡´Â ¸î °¡Áö °ü·Ê°¡ ÀÖ´Ù. ¸ÕÀú ÀϹÝÀûÀÎ µ¨¸®°ÔÀÌÆ®¿¡¼­´Â ÀÎÀÚ¿¡ Á¦ÇÑÀÌ ¾øÁö¸¸ À̺¥Æ®¿¡¼­´Â µÎ °³ÀÇ ÀÎÀÚ¸¦ »ç¿ëÇÑ´Ù. ±× µÎ °³´Â º¸³»´Â À̰¡ ´©±¸ÀÎÁö ³ªÅ¸³»´Â objectÇü°ú System.EventArgs¿¡¼­ »ó¼Ó¹ÞÀº Ŭ·¡½º¸¦ ÀÎÀÚ·Î ¹Þ´Â °ÍÀÌ ÀÖ´Ù. ¸ÕÀú ¹Þ´Â »ç¶÷ÀÌ ¿©·¯ »ç¶÷ÀÇ À̺¥Æ®¿¡ µî·ÏÇØ µÎ¸é ´©°¡ º¸³Â´ÂÁö ¾Ë ¼ö ¾øÀ¸¹Ç·Î ´©°¡ º¸³Â´ÂÁö ¾Ë±â À§ÇØ Ã¹ ¹øÂ° ÀÎÀÚ·Î objectÇü ÀÎÀÚ¸¦ ¹Þ´Â´Ù.

¿¹¸¦ µé¸é ½Å¹®»ç´Â Á¤º¸¸¦ ±â»óûÀ¸·ÎºÎÅÍ µéÀ» ¼öµµ ÀÖÁö¸¸ ¼Ò½ÄÀÌ µé¾î¿À´Â °æ·Î´Â ¿©·¯ ±ºµ¥ÀÏ °ÍÀÌ´Ù. ´©°¡ ±× Á¤º¸¸¦ º¸³Â´ÂÁö ¾Ë¾Æ¾ß ÇÒ ¶§°¡ Àֱ⠶§¹®¿¡ ÀÌ·± ¹æ¹ýÀ» »ç¿ëÇÏ´Â °ÍÀÌ´Ù. µÎ ¹øÂ° ÀÎÀÚ´Â EventArgs¸¦ »ó¼Ó¹ÞÀº Ŭ·¡½ºÀε¥ À̸¦ »ç¿ë¸é Á»´õ ±ò²ûÇÏ°Ô ÀÎÀÚ °ü¸®¸¦ ÇÒ ¼ö ÀÖ´Ù(±×·¯³ª ¿©±â¼­´Â ÆíÀǸ¦ À§Çؼ­ ´Ü¼øÇÏ°Ô ÇϳªÀÇ ÀÎÀÚ¸¸ ½è´Ù).

À̺¥Æ®¿¡¼­´Â À̸§À» Á¤ÇÏ´Â µ¥ À־µµ ¸î °¡Áö °ü·Ê°¡ ÀÖ´Ù. ¸ÕÀú System.EventArgs¸¦ »ó¼Ó¹Þ´Â Ŭ·¡½º´Â ±× À̸§ ³¡¿¡ EventArgs¸¦ ºÙ¿©ÁØ´Ù. ¶ÇÇÑ µ¨¸®°ÔÀÌÆ®¸¦ ¼±¾ð½Ã¿¡µµ À̸§ µÚ¿¡ EventHandler¸¦ ºÙ¿©ÁØ´Ù. ¸¶Áö¸·À¸·Î À̺¥Æ®¸¦ ¹ß»ý½ÃŰ´Â ¸Þ½îµå´Â À̸§ ¾Õ¿¡ OnÀ» ºÙ¿©ÁØ´Ù. <¸®½ºÆ® 4>¸¦ º¸¸é ±×³É À̺¥Æ® Ű¿öµå¾øÀÌ °ü·Ê¸¸ µû¶óÁÖ¸é À̺¥Æ®°¡ µÇÁö ¾Ê´À³Ä°í ¹°À» ¼ö Àִµ¥ »ç½Ç À̺¥Æ®´Â ³»ºÎÀûÀ¸·Î ¶Ç ´Ù¸¥ ÀÏÀ» Çϰí ÀÖ´Ù. ¹«½¼ ÀÏÀ» ³»ºÎÀûÀ¸·Î ²Ù¹Ì´ÂÁö ¾Ë±â À§ÇØ ILDASMÀ¸·Î È®ÀÎÇØ º¸ÀÚ.

<È­¸é 11> À̺¥Æ®°¡ µé¾î°£ Ŭ·¡½º


<È­¸é 11>À» º¸¸é »ý¼ºÇÏÁö ¾Ê¾Ò´ø µÎ °³ÀÇ ÇÔ¼ö°¡ Ãß°¡µÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù. °Ô´Ù°¡ ¿ì¸®´Â SpecialReport¸¦ publicÀ¸·Î ¼±¾ðÀ» Çߴµ¥ privateÀ¸·Î µÇ¾î ÀÖ´Ù. À̸¦ °¡»ó ÄÚµå·Î ³ªÅ¸³» º¸ÀÚ.


private SpecialReportEventHandler SpecialReport = null;

// À̺¥Æ® µî·Ï ¸Þ½îµå
[MethodImpAttribute(MethodImplOption.Synchronized)]
public void add_SpecialReport(SpecialReportEventHandler handler)
{
   SpecialReport = (SpecialReportEventHandler)
      delegate.Combine
      (SpecialReport, handler);
}

// À̺¥Æ® µî·ÏÇØÁ¦ ¸Þ½îµå
[MethodImpAttribute(MethodImplOption.Synchronized)]
public void remove_SpecialReport(SpecialReportEventHandler handler)
{
   SpecialReport = (SpecialReportEventHandler)
      delegate.Remove
      (SpecialReport, handler);
}


¸ÕÀú ¿ì¸®°¡ publicÀ¸·Î ¼±¾ðÇÑ SpecialReport°¡ privateÀ¸·Î µÇ¾î ÀÖÀ¸¸é¼­ null·Î ÃʱâÈ­µÇ¾î ÀÖ´Ù. ÀÌ´Â À̺¥Æ®¶ó´Â °ÍÀ» ¿ÜºÎ¿¡¼­ ÇԺηΠÁ¢±ÙÇÏÁö ¸øÇÏ°Ô ¸·±â À§ÇÔÀÌ´Ù. ¿¹¸¦ µé¾î ÅÂdzÀÌ ¿À´Â ±×·± ±Þ¹ÚÇÑ »óȲ¿¡¼­¸¸ À̺¥Æ®°¡ ¹ß»ýÇØ¾ß Çϴµ¥ À̸¦ publicÀ¸·Î µÑ °æ¿ì ¿ÜºÎ¿¡¼­ ¸¶À½´ë·Î ÅëÁ¦Çϰųª, ¹Ù¶÷ÀÌ ºÒ¾îµµ ±â»ó Ưº¸¸¦ ¹ß·ÉÇÏ´Â ¿ì¸¦ ¹üÇÒ ¼ö°¡ Àֱ⠶§¹®ÀÌ´Ù. ±×·¡¼­ À̺¥Æ®´Â ±× À̺¥Æ®¸¦ ¼ÒÀ¯ÇÑ Å¬·¡½º ³»¿¡¼­¸¸ ¹ß»ý½Ãų ¼ö ÀÖ°Ô Çϱâ À§ÇØ private Çʵå·Î µÎ´Â °ÍÀÌ´Ù.

¶ÇÇÑ add_£ª¿Í remove_*¶ó´Â µÎ°³ÀÇ ¸Þ½îµå°¡ Ãß°¡µÆ´Âµ¥, ÀÌ´Â ¸Þ½îµå¸í¿¡¼­ ¾Ë ¼ö ÀÖµíÀÌ À̺¥Æ®¿¡ µî·ÏÀÚ(listener)µéÀ» µî·Ï/ÇØÁ¦ÇÏ´Â ¿ªÇÒÀ» ÇÑ´Ù. +=¿Í -=¿¬»êÀÚ¸¦ ¾²¸é add_*³ª remove_*·Î ÄÄÆÄÀÏ·¯°¡ ¹Ù²ã ÁØ´Ù. CombineÀ̳ª Remove¸¦ ¾´ °æ¿ì¿Í ´Ù¸£Áö ¾Ê°Ô º¸ÀÏ ¼ö ÀÖÀ¸³ª, ÀÚ¼¼È÷ º¸¸é ¸Þ½îµå À§¿¡ ¾ÖÆ®¸®ºäÆ®°¡ ÀÖ´Ù.

ÀÌ´Â ¸Þ½îµå¸¦ µ¿±âÈ­½ÃÄѼ­ ¾²·¹µå¿¡ ´ëÇÑ ¾ÈÁ¤¼ºÀ» º¸ÀåÇØ ÁØ´Ù. ¿¹¸¦ µé¸é µÎ °³ÀÇ ¸®½º³Ê°¡ µ¿½Ã¿¡ À̺¥Æ®¿¡ µî·Ï/ÇØÁ¦Çصµ linked-list°¡ ±úÁöÁö ¾Ê°í ¿Ã¹Ù·Î À¯ÁöµÈ´Ù(<È­¸é 12>). °á·ÐÀûÀ¸·Î À̺¥Æ®´Â °á±¹ µ¨¸®°ÔÀÌÆ®ÀÇ Æ¯º°ÇÑ ÄÉÀ̽ºÀε¥ º¸´Ù º¸¾È°ú ¾ÈÁ¤¼º¿¡ ÁßÁ¡À» µÐ ÄÉÀ̽º¶ó°í ÇÒ ¼ö ÀÖ´Ù.

<È­¸é 12> µ¿±âÈ­µÈ ¸Þ½îµå


´ÙÀ½ ±Û¿¡¼­´Â ºñµ¿±â ÇÁ·Î±×·¡¹ÖÀ»
À̹ø ±Û¿¡¼­´Â ¼­¹ö ±¸ÃàÇÏ´Â µ¥ ÀÖ¾î ÇʼöÀÎ ºñµ¿±â ¼ÒÄÏ ÇÁ·Î±×·


   

 
´º½º¿Í Á¤º¸ ¡¤ ÀÚÀ¯ °Ô½ÃÆÇ ¡¤ °¡ÀÔ ÀÎ»ç ¡¤ °øÁö»çÇ× ¡¤ AJAX ÇнÀ ¡¤ ASP Áú¹® ¡¤ ASP ÇнÀ ¡¤ MYSQL ÇнÀ ¡¤ SQLSERVER ÇнÀ ¡¤ ¿À¶óŬ ÇнÀ ¡¤ µ¥ÀÌŸº£À̽º ÇнÀ ¡¤ ¾×¼Ç½ºÅ©¸³Æ® ÇнÀ ¡¤ ¾×¼Ç½ºÅ©¸³Æ® Áú¹® ¡¤ ÆÛ¿Â Ç÷¡½Ã ¡¤ Ç÷¡½Ã ³×ºñ°ÔÀÌ¼Ç ¡¤ Ç÷¡½Ã ¼Ò½º ¡¤ Ç÷¡½Ã ¿¬±¸½Ç ¡¤ Ç÷¡½Ã Áú¹® ¡¤ Ç÷¡½Ã °ÔÀÓ ¡¤ Ç÷¡½Ã ÀÎÆ®·Î ¡¤ Ç÷¡½Ã ÀÌÆåÆ® ¡¤ ÀÚÀÛ Ç÷¡½Ã ¡¤ ű×,HTML Áú¹® ¡¤ ű×,HTML ÇнÀ ¡¤ ÀÚ¹Ù,JSP ÇнÀ ¡¤ ÀÚ¹Ù,JSP Áú¹® ¡¤ ÀÚ¹Ù½ºÅ©¸³Æ® ÇнÀ ¡¤ ÀÚ¹Ù½ºÅ©¸³Æ® ¼Ò½º ¡¤ ÀÚ¹Ù½ºÅ©¸³Æ® Áú¹® ¡¤ Æ÷Åä¼¥ Áú¹® ¡¤ Æ÷Åä¼¥ ÇнÀ ¡¤ Ãßõ À̹ÌÁö ¡¤ ÀÚÀÛ À̹ÌÁö ¡¤ ÆÛ¿Â À̹ÌÁö ¡¤ PHP Áú¹® ¡¤ PHP ÇÔ¼ö ¡¤ PHP ÇнÀ ¡¤ ÇÁ·Î±×·¡¹Ö ÇнÀ ¡¤ ÀÎÅͳݼ­¹ö ÇнÀ ¡¤ ÀÎÅͳݼ­¹ö Áú¹®¡¤ Ç÷¡½Ã »ùÇà ¼Ò½º ¡¤ Ç÷¡½Ã äÆÃ¹æ ¡¤ Ç÷¡½Ã ¹Ì´ÏȨÇÇ ¡¤ Ç÷¡½Ã °¶·¯¸® ¡¤ Ç÷¡½Ã RSS¸®´õ ¡¤ Ç÷¡½Ã PHP »çÀü ¡¤ Ç÷¡½Ã ¿ìÆí¹øÈ£ ã±â ¡¤ Ç÷¡½Ã ÇÑÀÚ°ÔÀÓ ¡¤ Ç÷¡½Ã ´Þ·Â°ú½Ã°è ¡¤ Ç÷¡½Ã Æ÷Åä¶óÀ̺귯¸® ¡¤ ·£´ýÀ̹ÌÁö ¡¤ Ç÷¡½Ã ´Þ·Â°ú½Ã°è ¡¤ ÇÑ±Û µµ¸ÞÀÎ ¡¤ ³×À̹ö ºí·Î±× ½ºÅ©·¦ ¡¤ ½ÎÀÌ¿ùµå ¹Ì´ÏȨÇÇ °¶·¯¸® ¡¤ ½ÎÀÌ¿ùµå ¹Ì´ÏȨÇÇ µî·Ï ¡¤ ÇÁ·Î°ÔÀÌ¸Ó ·©Å© ¡¤ ȨÆäÀÌÁöÁ¤º¸ ºí·Î±×
Copyright ¨Ï hompy.info. All rights reserved.