lecture Home > Professional Secrets

À¯¼ö¼®ÀÇ .NET °í±Þ±â¼ú Inside

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2005³â 09¿ù 26ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2007³â 03¿ù 26ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : Loner(À¯ °æ»ó)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : HTTP ¾ÐÃà°ú À¥ ¾×¼¼½º API

°­Á Àü Å¿ÀÀÇ Àâ´ã>

À¯¼ö¼®Àº ÇöÀç µå¿ø ¼ÒÇÁÆ®¿þ¾îÀÇ ¼ö¼® ÄÁ¼³ÅÏÆ®·Î ±Ù¹«ÇÏ°í °è½Ã¸ç, .NET ¾ÆÅ°ÅØÃ³ ¹× ÄÁ¼³ÆÃ°ú °ü·ÃÇÑ ÀÏÀ» Çϰí ÀÖ½À´Ï´Ù. °í¼öµé »çÀÌ¿¡¼­´Â ÀÌ¹Ì ¾Ë·ÁÁ® ÀÖ´Â À¯¸íÀÎÀ̸ç, Á¦°¡ ¾Æ´Â ÇÑ ±èÇö½Â(´å³Ý¿¢½ºÆÛÆ®)°ú ´õºÒ¾î ±¹³» .NET ±â¼úºÐ¾ßÀÇ ÃÖ°í °í¼ö·Î Æò°¡¹Þ°í ÀÖ´Â µÑ°°¡¶ó¸é ¼­·¯¿ö ÇÒ Àι°ÀÔ´Ï´Ù.
(ƯÀÌÇϰԵµ º»ÀÎÀº ¼­·¯¿öÇÏÁö ¾ÊÀ½. ÀÌ»óÇÏ°Ô ÁÖº¯ »ç¶÷µéÀÌ ´õ ¼­·¯¿öÇÔ)

Àå±â°£ÀÇ È¸À¯¿Í Ä¿ÇÇÁ¢´ë¸¦ °ÅÃÄ..

µåµð¾î, Àý´ë·Î!! ´Ù¸¥ »çÀÌÆ®³ª ºí·Î±×¿¡ ÆÛ°¨ÁúÀ» Çã¿ëÇÏÁö ¾Ê´Â ±×ºÐÀÇ ±ÛÀ» Å¿À »çÀÌÆ®¿¡¼­µµ ÇÔ²² Çϱâ·Î ÇÏ¿´½À´Ï´Ù. ½±°Ô ¾Ë¼ö ¾ø´Â °í±Þ½º·¯¿î ºñ¹ý °­ÁµéÀÌ À̾îÁø´Ù°í ±â´ëÇØµµ ÁÁ½À´Ï´Ù.

´õºÒ¾î, ÀÌ °­Á´ ¿ÜºÎ Æß ±ÝÁö ±ÛÀ̱⵵ ÇÕ´Ï´Ù
ÆäÀÌÁö ¸µÅ©´Â °¡´ÉÇϳª, ³»¿ë ÀÚü¸¦ ÆÛ°¡¼­ ÀÚ½ÅÀÇ ºí·Î±×¿¡ ¿Ã¸®´Â °ÍÀº ±ÝÁöÇϰí ÀÖ½À´Ï´Ù.
¾çÇØÇØ Áֽñ⠹ٶø´Ï´Ù.

Âü°í·Î, À¯¼ö¼®´ÔÀÇ ºí·Î±×´Â http://www.simpleisbest.net ÀÔ´Ï´Ù
ÇöÀç °­ÁÂÀÇ ¿øº» ±ÛÀÇ ¸µÅ©´Â http://www.simpleisbest.net/archive/2005/09/26/243.aspx ÀÔ´Ï´Ù.



Áö³­ Æ÷½ºÆ®µé¿¡¼­ HTTP ¾ÐÃà¿¡ ´ëÇØ ³ë°¡¸®¸¦ Ǭ ÀûÀÌ ÀÖ½À´Ï´Ù. ÀÌ Æ÷½ºÆ®µéÀº ÁÖ·Î ¼­¹ö Ãø °üÁ¡¿¡¼­ ¾î¶»°Ô ÄÁÅÙÃ÷¸¦ ¾ÐÃàÇÒ °ÍÀΰ¡¿¡ ´ëÇØ¼­¸¸ ´Ù·ç¾ú´Âµ¥, À̹ø Æ÷½ºÆ®´Â Ŭ¶óÀÌ¾ðÆ® °üÁ¡¿¡¼­ HTTP ¾ÐÃàÀ» »ìÆìº¸·Á°í ÇÕ´Ï´Ù.

Web Access API Stack & HTTP Compression

Ŭ¶óÀÌ¾ðÆ®¿¡¼­ À¥ ¼­¹ö¿¡ Á¢±ÙÇÏ´Â ¹æ¹ýÀº ´Ù¾çÇÏ´Ù. IE¿Í °°Àº À¥ ºê¶ó¿ìÀúµµ Ŭ¶óÀ̾ðÆ®À̸ç À¥ ÆäÀÌÁö¿¡¼­ XMLHTTP (MSXML2.XMLHTTP ·Îµµ ¾Ë·ÁÁ® ÀÖÁÒ?) °´Ã¼¸¦ »ç¿ëÇÏ´Â ÀÚ¹Ù ½ºÅ©¸³Æ® ¿ª½Ã Ŭ¶óÀÌ¾ðÆ®·Î º¼ ¼ö ÀÖÀ¸¸ç, ´å³Ý ÇÁ·Î±×·¥¿¡¼­ HttpWebRequest Ŭ·¡½º¿Í HttpWebResponse Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â °Í ¿ª½Ã À¥ Ŭ¶óÀÌ¾ðÆ®¶ó°í º¼ ¼ö ÀÖ°Ú´Ù.

À©µµ¿ì ±â¹Ý Ç÷§Æû¿¡¼­ À¥ ¾×¼¼½º, Áï http ÇÁ·ÎÅäÄÝÀ» ÅëÇØ HTML, PDF, XML µîÀÇ ÄÁÅÙÃ÷¸¦ ¾×¼¼½ºÇÒ ¶§´Â À©µµ¿ì°¡ Á¦°øÇÏ´Â ´Ù¾çÇÑ API µé Áß Çϳª¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̵é APIµéÀÌ ¾î¶² °ÍµéÀÌ ÀÖÀ¸¸ç À̵é API¸¦ »ç¿ëÇÏ´Â ´ëÇ¥ÀûÀÎ ÇÁ·Î±×·¥µéÀ» »ìÆìº¸°í, À̵é API°¡ HTTP ¾ÐÃàÀ» Áö¿øÇÏ´ÂÁö ¿©ºÎµµ ÇÔ ±îº¸µµ·Ï ÇÏÀÚ.

WinInet

WinInetÀº Windows Internet À̶õ À̸§ÀÇ Å¬¶óÀÌ¾ðÆ®¿ë ÀÎÅÍ³Ý ¾×¼¼½º API ÁýÇÕÀ» ¸»ÇÑ´Ù. WinInetÀº ÀÎÅÍ³Ý Å¬¶óÀÌ¾ðÆ®µéÀÌ HTTP, FTP, Gopher ¿Í °°Àº ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝÀ» ¼Õ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÇÙ½ÉÀûÀÎ ¶óÀ̺귯¸®´Â WinInet.dll ÀÌ¸ç ¾ÆÁÖ ¿À·¡ ÀüºÎÅÍ IE¿Í ÇÔ²² ¹èÆ÷µÇ´Ù°¡ IE°¡ Windows ¿î¿µÃ¼Á¦¿¡ Æ÷ÇԵǸ鼭 ¿î¿µÃ¼Á¦ÀÇ ÀϺηΠ°£Áֵǰí ÀÖ´Ù.

WinInetÀº ¸» ±×´ë·Î IE¸¦ À§ÇÑ API¶ó°í º¸¸é µÈ´Ù. ¿À·ÎÁö C/C++ API µé¸¸À» Á¦°øÇÏ¸ç °­·ÂÇÑ API ¼¼Æ®¸¦ °¡Áö°í ÀÖ´Ù. IE°¡ »ç¿ëÇÏ´Â À¥ ¾×¼¼½º API°¡ WinInet ÀÓÀº µÎ¸»Çϸé ÀܼҸ®°¡ µÇ°Ú´Ù. IE ¿Ü¿¡µµ MFCµµ WinInetÀ» À§ÇÑ Å¬·¡½º¸¦ Á¦°øÇϸç, ¸¹Àº ÀÎÅÍ³Ý ±â¹Ý ¾îÇø®ÄÉÀ̼ǵéÀÌ ÀÌ API¸¦ »ç¿ëÇÏ¿© ÀÛ¼ºµÇ¾ú´Ù. ¶ÇÇÑ, ÀÚ¹Ù ½ºÅ©¸³Æ®¿¡¼­ ¸¹ÀÌ »ç¿ëµÇ´Â XMLHttp °´Ã¼(MSXML2.XMLHttp) ¿ª½Ã WinInet API¸¦ »ç¿ëÇϰí ÀÖÀ½À» ²À ±â¾ïÇØ µÎÀÚ.

±×¸®°í Á¦¾îÆÇÀÇ "ÀÎÅÍ³Ý ¿É¼Ç" ÆÐ³ÎÀ̳ª IEÀÇ µµ±¸ ¸Þ´ºÀÇ "ÀÎÅÍ³Ý ¿É¼Ç"Àº ¸ðµÎ ÀÌ WinInet¿¡ ´ëÇÑ ¿É¼ÇÀ» ¸»ÇÑ´Ù. ¾ÆÁÖ ¸¹Àº ¾îÇø®ÄÉÀ̼ǵéÀÌ WinInet¿¡ ÀÇÁ¸Çϰí ÀÖÀ¸¹Ç·Î ÀÌ "ÀÎÅÍ³Ý ¿É¼Ç"Àº ¸Å¿ì Áß¿äÇÏ°Ô °£Áֵǰí ÀÖ´Ù.

WinInetÀº HTTP ÇÁ·ÎÅäÄÝÀÇ ¸ðµç ±â´ÉÀ» ±¸ÇöÇϰí ÀÖ´Ù. Áï, dzºÎÇÑ ±â´ÉÀ» Á¦°øÇÑ´Ù´Â ¸»ÀÌ´Ù. À¥ Request¸¦ ¼öÇàÇÏ°í ±× °á°ú¸¦ ij½ÃÇϸç, ÄíŰ ¼³Á¤ ¿ª½Ã ÀûÀýÈ÷ ¼öÇàÇÒ »Ó ´õ·¯, Ŭ¶óÀ̾ðÆ®ÀÇ µð½ºÅ© ÄíŰ(µð½ºÅ©¿¡ ±â·ÏµÇ´Â ÄíŰ)¸¦ ÇÏµå µð½ºÅ©¿¡ ±â·ÏÇϱ⵵ ÇÑ´Ù. ½±°Ô ¸»ÇØ, ÀÌ API¸¦ ÅëÇØ IE°¡ ¼öÇàÇÏ´Â °ÍÀº °ÅÀÇ ´ëºÎºÐ ¶È°°ÀÌ ¼öÇàÇÒ ¼ö ÀÖ´Ù´Â ¸»ÀÌ´Ù. C/C++ API ¼¼Æ®¸¸À» Á¦°øÇÔÀÌ ¾Æ½¬¿ï µû¸§ÀÌ´Ù.

HTTP ¾ÐÃà ¿ª½Ã ¿¹¿Ü´Â ¾Æ´Ï´Ù. WinInetÀ» »ç¿ëÇϸé HTTP ¾ÐÃàÀ» À§ÇØ Accept-Encoding Çì´õÀÇ °ªÀ» gzip, deflate·Î ¼³Á¤ÇÑ´Ù. ¶ÇÇÑ HTTP Response°¡ ¾ÐÃàµÇ¸é, Áï ResponseÀÇ Content-Encoding Çì´õÀÇ °ªÀÌ gzip ȤÀº deflate·Î ¼³Á¤µÇ¾î ÀÖ´Ù¸é, ¾ÐÃàÀ» ÀûÀýÈ÷ ÇØÁ¦ÇÑ´Ù(ÇÊÀÚÀÇ HTTP ¾ÐÃà ¿ø¸®¸¦ ÀÐ¾î º¸±â ¹Ù¶õ´Ù). Ä£ÀýÇÑ WinInet ¾¾°¡ µÇ°Ú´Ù. °í·Î WinInet API¸¦ »ç¿ëÇÏ´Â À¥ Ŭ¶óÀÌ¾ðÆ®´Â ¸ðµÎ HTTP ¾ÐÃàÀ» Áö¿øÇÑ´Ù°í º¸¸é µÈ´Ù. IE¸¦ ºñ·ÔÇÏ¿© ÀÚ¹Ù ½ºÅ©¸³Æ®¿¡¼­ »ç¿ëÇÏ´Â XMLHttp µµ ¾ÐÃàµÈ ÄÁÅÙÃ÷¸¦ ÇØÁ¦ÇÒ ¼ö ÀÖÀ¸¹Ç·Î À̵éÀ» ±â¹ÝÀ¸·Î ÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀº Ŭ¶óÀÌ¾ðÆ® Ãø¿¡¼­ ¾ÐÃàÀÌ Ç®¸®´Â °Í¿¡ ´ëÇØ¼­´Â ÀüÇô °ÆÁ¤À» ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.

WinInetÀÇ ´ÜÁ¡Àº, Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ API À̹ǷΠ¸î °¡Áö Á¦¾à»çÇ×ÀÌ ÀÖ´Ù´Â Á¡ÀÌ´Ù.  ÀÌ Á¦¾à »çÇ× Áß Çϳª´Â KB 183110 ¿¡¼­ ´Ù·ç°í ÀÖ´Â ³»¿ëÀ¸·Î ÇÑ ¼­¹ö¿¡ 2°³ ȤÀº 4°³ÀÇ TCP ¿¬°á¸¸À» Çã¿ëÇÑ´Ù´Â Á¡ÀÌ´Ù. HTTP 1.1 ÇÁ·ÎÅäÄÝÀÇ °æ¿ì¿¡ 2°³ÀÇ ¿¬°áÀ», HTTP 1.0 ÀÇ °æ¿ì¿¡ 4°³ÀÇ ¿¬°á¸¸À» Çã¿ëÇÑ´Ù. ÀÌ Á¦¾à »çÇ×Àº HTTP Ç¥Áذú ´Ù¸¥ ´Ù¾çÇÑ À¥ ºê¶ó¿ìÀúµéÀÌ »ç¿ëÇÏ´Â Á¦¾àÀ¸·Î ÇÑ Å¬¶óÀÌ¾ðÆ®°¡ ¼­¹ö ÀÚ¿øÀ» µ¶Á¡ÇÏ´Â Çö»óÀ» ÁÙÀ̱â À§ÇÔÀÌ´Ù.

WinHTTP

WinHTTP´Â WinInet°ú´Â ´Þ¸® ¿À·ÎÁö HTTP ÇÁ·ÎÅäÄݸ¸À» Áö¿øÇϴ Ŭ¶óÀÌ¾ðÆ®¿ë API ÀÌ´Ù. WinInetÀÌ IE¿Í °°Àº ¼ø¼ö Ŭ¶óÀÌ¾ðÆ®¸¦ ÁöÇâÇÑ API¶ó¸é WinHTTP´Â ³ôÀº ¼º´É°ú ³ôÀº µ¿½Ã¼º(concurrency)À» ¿ä±¸Çϴ Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ APIÀÌ´Ù. Áï, ¾Õ¼­ ¾ð±ÞÇÑ WinInetÀÇ ¼­¹ö ¿¬°á °³¼ö Á¦¾àÀ» ±Øº¹Çϰí, HTTP ÇÁ·ÎÅäÄÝÀÇ ¸ðµç ½ºÆå°ú ij½Ã±îÁö ¼öÇàÇÏ´Â ¹«°Å¿î WinInetÀÇ ±â´ÉÀ» Ãà¼ÒÇÏ¿© ºü¸¥ ¼º´ÉÀ» ¿Ã¸®±â À§ÇØ ¼³°èµÈ APIÀÎ ¼ÀÀÌ´Ù. WinHTTP´Â C/C++¸¦ À§ÇÑ API¿Í COM ¹× ½ºÅ©¸³Æ® Ŭ¶óÀÌ¾ðÆ®¸¦ À§ÇÑ API µµ Á¦°øÇÑ´Ù. ½±°Ô ¸»ÇØ ÀÚ¹Ù ½ºÅ©¸³Æ®³ª ASP¿¡¼­ ÀÌ API¸¦ ¾µ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. WinHTTP´Â IE 5.01 & MSXML 3.0ºÎÅÍ Ãß°¡µÇ¾úÁö¸¸ ÀÌÁ¦´Â Windows 2003, Windows XP SP1, Windows 2000 SP3 ºÎÅÍ ¿î¿µÃ¼Á¦ÀÇ ÀϺηΠ°£Áֵǰí ÀÖ´Ù(winhttp5.dll).

±×·¸´Ù¸é ÀÌ API¸¦ »ç¿ëÇÏ´Â À¥ Ŭ¶óÀÌ¾ðÆ®´Â ´©°¡ µÉ±î? ¾ÆÀÌ·¯´ÏÇϰԵµ ¼­¹ö¿ë ¾îÇø®ÄÉÀ̼ǵéÀÌ ÀÌ API¸¦ »ç¿ëÇϰï ÇÑ´Ù. ¼­¹ö°¡ ´Ù¸¥ À¥ ¼­¹öÀÇ À¥ ÄÁÅÙÃ÷¸¦ ¾×¼¼½ºÇÏ´Â °æ¿ì´Â ¸Å¿ì ÈçÇÏ´Ù. ¿¹¸¦ µé¾î À¥ ¼­¹ö°¡ ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö¸¦ ¾×¼¼½ºÇÒ ¶§ À¥ ¼­ºñ½º¸¦ »ç¿ëÇÑ´Ù¸é À¥ ¼­¹ö´Â ¾îÇø®ÄÉÀÌ¼Ç ¼­¹öÀÇ ÀÔÀå¿¡¼­ º¸¾ÒÀ» ¶§ Ŭ¶óÀ̾ðÆ®À̱⠶§¹®ÀÌ´Ù. ÀÌ·± °æ¿ì¿¡ WinInetÀÇ Á¦¾àÀ» ¶°¿Ã·Áº¸ÀÚ. -_-;; µ¿½Ã¿¡ 10¸íÀÇ »ç¿ëÀÚ°¡ À¥ ¼­¹ö¸¦ È£ÃâÇß°í ÀÌ À¥ ¼­¹ö°¡ ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö¸¦ µ¿½Ã¿¡ È£ÃâÇÒ ¶§, ¼­¹ö Á¢¼ÓÀÌ 2°³·Î Á¦¾àµÈ´Ù¸é 2°³ÀÇ µ¿½Ã È£Ã⸸ÀÌ ¾îÇø®ÄÉÀÌ¼Ç ¼­¹ö·Î ³¯¾Æ°¥ °ÍÀÌ°í ³ª¸ÓÁö 8°³´Â ¾Õ¼± 2°³ÀÇ È£ÃâÀ» ±â´Ù·Á¾ß ÇÏ´Â Çö»óÀÌ ¹ß»ýÇÑ´Ù. ´ë·« ³­°¨ÇÑ °ÍÀÌ´Ù.

ÀÌ·¯ÇÑ ½Ã³ª¸®¿À¸¦ À§ÇØ µîÀåÇÑ °ÍÀÌ WinHTTP ÀÌ´Ù. WinHTTP´Â ¼­¹ö Á¢¼ÓÀÇ Á¦¾àµµ ¾øÀ¸¸ç API µµ ¸Å¿ì °£·«ÇÏ°Ô ±¸¼ºµÇ¾î WinInet¿¡ ºñÇÏ¸é ¸Å¿ì ºü¸£´Ù°í ÇÑ´Ù. (Á÷Á¢ ½áº¸Áö ¾Ê¾Æ¼­...) ÇÏÁö¸¸ ´ÜÁ¡Àº ÀÖ´Ù. WinHTTP´Â WinInet¿¡ ±¸ÇöµÈ ¿©·¯ ±â´ÉÀÌ ºüÁ®ÀÖ´Ù(±¸Ã¼ÀûÀ¸·Î ¾î¶² ±â´ÉÀÌ Á¦°øµÇÁö ¾Ê´ÂÁö´Â MSDN¿¡¼­ WinHTTP¸¦ ã¾Æ º¸±â ¹Ù¶õ´Ù. ±×·± ¼ö°íµµ Çϱ⠽ÈÀº »ç¶÷Àº ´ë·«... ”î !!!). HTTP ¾ÐÃà ¿ª½Ã WinHTTP °¡ Áö¿øÇÏÁö ¾Ê´Â ±â´É Áß ÇϳªÀÌ´Ù. WinHTTP°¡ ¾ÐÃàÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù°í ÇØ¼­ ¹®Á¦°¡ ¹ß»ýÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. ´ÜÁö WinHTTP ¸¦ »ç¿ëÇϸé Accept-Encoding Çì´õ°¡ ¼³Á¤µÇÁö ¾ÊÀ» »Ó´õ·¯, Content-Encoding Çì´õÀÇ ³»¿ëµµ ¹«½ÃµÈ´Ù´Â °ÍÀÌ´Ù. ¼­¹ö´Â Accept-Encoding Çì´õ°¡ ¼³Á¤µÈ °æ¿ì¿¡¸¸ ÄÁÅÙÃ÷¸¦ ¾ÐÃàÇÒ °ÍÀ̹ǷΠWinHTTP °¡ ¾ÐÃàÀ» Áö¿øÇÏÁö ¾Ê´Â °ÍÀÌ À¥ ÄÁÅÙÃ÷¸¦ ¾×¼¼½ºÇÏ´Â °Í ÀÚü¿¡´Â ¹®Á¦°¡ ¾ø´Ù´Â ¸»ÀÌ´Ù.

WinHTTP¿Í ´õºÒ¾î ¼Ò°³ÇÒ °ÍÀº ServerXMLHTTP °´Ã¼ÀÌ´Ù. ÀÌ °´Ã¼´Â MSXML 3.0ºÎÅÍ Ãß°¡µÈ °´Ã¼·Î¼­ ¿ì¸®°¡ ÀÍÈ÷ ¾Ë°í ÀÖ´Â XMLHTTP °´Ã¼¿Í µ¿µîÇÏ¸ç »ç¿ë¹ý ¸¶Àú °ÅÀÇ µ¿ÀÏÇÏ´Ù. ±×·±µ¥ ServerXMLHTTP´Â WinInet ÀÌ ¾Æ´Ñ WinHTTP API¸¦ È£ÃâÇÑ´Ù. ¿Ö À̸§ ¾Õ¿¡ Server°¡ ºÙ¾ú´ÂÁö ÁüÀÛÀÌ °¥ °ÍÀÌ´Ù. ¼­¹öÃø ¾îÇø®ÄÉÀ̼ÇÀÌ HTTP¸¦ ÅëÇØ XMLÀ» ¾×¼¼½ºÇÒ ¶§ »ç¿ëÇ϶ó°í ¸¸µé¾îÁø °´Ã¼ÀÎ °ÍÀÌ´Ù. ASP ¶ó¸é ´ç¿¬ ºþ¾²·Î ServerXMLHTTP °´Ã¼¸¦ ½á¾ß ÇÒ °ÍÀ̸ç, ºê¶ó¿ìÀúÀÇ ÀÚ¹Ù ½ºÅ©¸³Æ®¶ó¸é XMLHTTP¸¦ »ç¿ëÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÀÌÀ¯´Â °£´ÜÇÏ´Ù. XMLHTTP´Â WinInetÀ» Áö¿øÇϰí WinInetÀº Windows 95 ºÎÅÍ ¸ðµç À©µµ¿ì Ç÷§ÆûÀÌ Áö¿øÇϰí ÀÖ´Ù. ÇÏÁö¸¸ WinHTTP´Â ±×·¸Áö ¾Ê´Ù´Â Á¡ÀÌ´Ù.

Socket

WinInetµµ ¾Æ´Ï°í WinHTTPµµ ¾Æ´Ï¸é Á÷Á¢ Àú ¼öÁØÀÇ ¼ÒÄÏ(socket) ÇÁ·Î±×·¡¹ÖÀ¸·Îµµ HTTP ÇÁ·ÎÅäÄÝ·Î À¥ ¾×¼¼½º¸¦ ÇÒ ¼ö ÀÖ´Ù. ¹«½ÄÇÏ°Ô »ý°¢ÇϰÚÁö¸¸, ¾ÐÃ൵ ÇÊ¿ä ¾ø°í, ij½Ãµµ ÇÊ¿ä ¾ø°í ´Ü¼øÇÑ ÄÁÅÙÃ÷ ´Ù¿î·Îµå¸¦ À§ÇÑ °ÍÀ̶ó¸é ¼ÒÄÏÀ» Á÷Á¢ »ç¿ëÇÏ´Â °ÍÀÌ °¡Àå ºü¸£´Ù. ¿¡ÀÌ~ ¾Æ¹«¸® ±×·¡µµ ±×·¸Áö Á÷Á¢ ¼ÒÄÏÀ» ¾×¼¼½º ÇØ¼­ HTTP À¥ ¾×¼¼½º¸¦ ÇÏ´Â °ÍÀÌ ÀÖ°Ú¾î?

ÀÖ´Ù...... OTL !!!!!!

´å³Ý ÇÁ·¹ÀÓ¿öÅ©ÀÇ À¥ ¾×¼¼½º °ü·Ã Ŭ·¡½ºÀÎ HttpWebReqeust/HttpWebResponse Ŭ·¡½º´Â WinInetµµ WinHTTPµµ »ç¿ëÇÏÁö ¾Ê´Â´Ù. SocketÀ» Á÷Á¢ ¾×¼¼½ºÇؼ­ À¥ ÄÁÅÙÃ÷¸¦ ¾×¼¼½ºÇÑ´Ù. ¿À šx~~ Áõ¸»Àΰ¡? ±×·¸´Ù. °ÅÁþ¸» °°Áö¸¸... Á¤¸»ÀÌ´Ù... HttpWebRequest/HttpWebResponse Ŭ·¡½º´Â ¼ÒÄÏÀ» ÅëÇØ HTTP ÇÁ·ÎÅäÄÝÀ» ±¸ÇöÇϰí ÀÖ´Ù. ±×·¡¼­ ÀÎÁö Á¦°øÇÏ´Â ±â´ÉÀº ´ë´ÜÈ÷ ¹Ì¾àÇÏ´Ù°í º¼ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î WinInetÀº Áö°¡ ¾Ë¾Æ¼­ µð½ºÅ© »óÀÇ ÄíŰ(Á¸ÀçÇÑ´Ù¸é)¸¦ Àоî Request¿¡ ÄíŰ ¼³Á¤À» ÇØÁØ´Ù. ÇÏÁö¸¸ HttpWebRequest ¿¡°Ô´Â ¾¾¾Ëµµ ¾È¸ÔÈ÷´Â ¼Ò¸®ÀÌ´Ù. ÄíŰ ¼³Á¤? °³¹ßÀÚ°¡ Á÷Á¢ ÄÚµå·Î Äí۸¦ ¼³Á¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¶Ç, WinInet Àº ¼­¹ö°¡ Äí۸¦ ¼³Á¤Ç϶ó°í Set-Cookie Çì´õ¸¦ ³»·Á º¸³»¸é ÀڱⰡ ¾Ë¾Æ¼­ ¸Þ¸ð¸® ȤÀº µð½ºÅ©¿¡ ÄíŰ ÆÄÀÏÀ» ¸¸µç´Ù. HttpWebResponse ´Â °³¹ßÀÚ°¡ Äí۸¦ Àо ¸Þ¸ð¸®¿¡ º¸°üÇÏ´ø ÆÄÀÏ¿¡ º¸°üÇÏ´ø ¾Ë¾Æ¼­ º¸°üÇØ¾ß ÇÑ´Ù. ´ÙÇàÀ̵µ Transfer-Encoding Çì´õ¸¦ ÀνÄÇÏ¿© Á¶°¢³­ chunkenÀ» ÇÕÃÄÁÖ±ä ÇÑ´Ù... (º£Å¸ ½ÃÀýÀΰ¡¿¡´Â À̰ÍÀ» Áö¿øÇÏÁö ¾Ê¾Æ¼­ ÇÊÀÚ°¡ Á÷Á¢ ±¸ÇöÁØ ±â¾ïÀÌ ³­´Ù...)

±â´ÉÀº ÀûÁö¸¸ HttpWebRequest´Â °®Ãß¾î¾ß ÇÒ °ÍµéÀº ´ëºÎºÐ °®Ãß°í ÀÖ´Ù. HTTP ÀÎÁõ, ÇÁ·Ï½Ã Áö¿ø, SSL µîµî... ÇÊÀÚÀÇ °ßÇØ·Î System.Net ³×ÀÓ½ºÆäÀ̽º¿¡ Æ÷ÇÔµÈ HttpWebRequest/HttpWebResponse Ŭ·¡½º´Â WinHTTP ¸¦ ´å³Ý¿ëÀ¸·Î ´Ù½Ã ÀÛ¼ºÇÑ °ÍÀÌ ¾Æ´Ñ°¡ ½ÍÀ» Á¤µµ·Î µÑÀº À¯»çÇÑ Á¡À» °®°í ÀÖ´Ù. ¹°·Ð ´å³ÝÀÌ º¸´Ù ¸ÚÁö°í »ç¿ëÇϱ⠽¬¿î API¸¦ Á¦°øÇϰí ÀÖ±ä ÇÏÁö¸¸ ¸»ÀÌ´Ù.

¾îÂî µÇ¾ú°Ç ´å³Ý¿¡¼­ À¥ ¾×¼¼½º¸¦ ÇÒ ¶§´Â °³¹ßÀÚ°¡ ¾à°£ ¼ö°í½º·´°Ô µÈ´Ù. HttpWebRequest/HttpWebResponse¸¦ »ç¿ëÇÏ´Â ´å³Ý Ŭ¶óÀÌ¾ðÆ®°¡  HTTP ¾ÐÃàÀ» Áö¿øÇÏÁö ¾ÊÀ½Àº »·ÇÒ »·µ¥±â ÀÌ´Ù. HTTP ¾ÐÃà ¿ø¸® Æ÷½ºÆ®¿¡¼­ ¾ÐÃàÀ» ÇØÁ¦ÇÏ´Â C# Äڵ带 ¿¹Á¦·Î ÀÌ¹Ì º¸¿´À¸´Ï Âü°íÇϱ⠹ٶõ´Ù.

´å³Ý À¥ ¼­ºñ½º Ŭ¶óÀÌ¾ðÆ®´Â ¾î¶»°Ô µÉ±î? ¾ÐÃàÀ» »ç¿ëÇÒ±î? ´å³Ý À¥ ¼­ºñ½º Ŭ¶óÀ̾ðÆ®, ¼ÒÀ§ À¥ ¼­ºñ½º ÇÁ·Ï½Ã¿¡ ÀÇÇÑ À¥ ¼­ºñ½º È£ÃâÀº HttpWebRequest ¿Í HttpWebResponse Ŭ·¡½º¸¦ »ç¿ëÇÑ´Ù. µû¶ó¼­... HTTP ¾ÐÃàÀº ±âº»ÀûÀ¸·Î Áö¿øµÇÁö ¾Ê´Â´Ù. À¥ ¼­ºñ½º È£ÃâÀ» ¾ÐÃàÇϰųª ¾ÐÃàµÇ¾î ¿Â À¥ ¼­ºñ½º È£Ãâ °á°ú¸¦ ¾ÐÃà ÇØÁ¦ Çϱâ À§Çؼ­´Â º°µµÀÇ ÄÚµùÀÌ ÇÊ¿äÇÔÀ» ¹Ýµå½Ã ±â¾ïÇØ µÎÀÚ.

¶Ç ÇÑ °¡Áö ¾ð±ÞÇÏ°í ½ÍÀº °ÍÀº, ´å³ÝÀÇ HttpWebRequest ¹× HttpWebResponse ÀÇ ±âº» ¼³Á¤ Áß ÀϺδ WinInetÀÇ "ÀÎÅÍ³Ý ¿É¼Ç"ÀÇ °ªÀ» Àо »ç¿ëÇÑ´Ù. ´ëÇ¥ÀûÀÎ °ÍÀÌ ÇÁ·Ï½Ã ¼³Á¤Àε¥, WinInetÀÇ ÇÁ·Ï½Ã ¼³Á¤À» ¹Ù²Ù¸é ÀÌ ¼³Á¤ °ªÀÌ HttpWebRequest ¿¡µµ Àû¿ëµÈ´Ù. ÀÌ´Â ´å³Ý ÇÁ·¹ÀÓ¿öÅ©ÀÇ Å¬·¡½º°¡ ÀÌ ¼³Á¤À» Àо »ç¿ëÇϱ⠶§¹®ÀÌ´Ù. ±×·¸´Ù°í WinInetÀ» »ç¿ëÇÏ´Â °ÍÀÌ ¾Æ´ÔÀº ¿©ÀüÇÏ´Ù. ´ÜÁö ÀϺΠ¼³Á¤¸¸À» WinInet°ú °øÀ¯ÇÒ »ÓÀÌ´Ù.

Summary

À¥ ¾×¼¼½º¸¦ ¼öÇàÇÏ´Â ¼¼°¡Áö ´ëÇ¥ÀûÀÎ API¸¦ Á¤¸®ÇØ º¸¸é ´ÙÀ½ ±×¸²°ú °°´Ù.


<<À¥ ¾×¼¼½º API ½ºÅÃ>>

IE ¿Í °°Àº À¥ ºê¶ó¿ìÀú¿Í HTML ³»¿¡¼­ AJAX ¿Í °°Àº ÀÚ¹Ù ½ºÅ©¸³Æ®µéÀÌ ¸¹ÀÌ »ç¿ëÇÏ´Â XMLHTTP °´Ã¼ µî ¸¹Àº À¥ Ŭ¶óÀÌ¾ðÆ®µéÀº WinInet API¸¦ »ç¿ëÇϰí ServerXMLHTTP ¿Í ASP °°Àº ¼­¹ö ¾îÇø®ÄÉÀ̼ǵéÀº WinHTTP¸¦ »ç¿ëÇÑ´Ù. ¹Ý¸é¿¡ À¥ ¼­ºñ½º Ŭ¶óÀÌ¾ðÆ®¸¦ Æ÷ÇÔÇÑ ´å³Ý ±â¹Ý ¾îÇø®ÄÉÀ̼ǵéÀº HttpWebRequest Ŭ·¡½º¿Í HttpWebResponse Ŭ·¡½º¸¦ »ç¿ëÇϴµ¥ À̵éÀº ¸ðµÎ System.Net.Socket ³×ÀÓ½ºÆäÀ̽ºÀÇ ¼ÒÄÏÀ» »ç¿ëÇÑ´Ù. ³Ê¹«µµ ´ç¿¬ÇÏ°Ô WinInet, WinHTTP, ±×¸®°í System.Net.Socket ³×ÀÓ½ºÆäÀ̽ºÀÇ Å¬·¡½ºµéÀº ¸ðµÎ Windows ÀÇ Window Socket °èÃþÀ» ÅëÇØ ³×Æ®¿öÅ©¸¦ ¾×¼¼½º ÇÑ´Ù.

ÀÌµé ¼¼ API Áß, HTTP ¾ÐÃàÀ» Áö¿øÇÏ´Â API´Â WinInet À̸ç, WinHTTP¿Í ´å³Ý ȯ°æÀº HTTP ¾ÐÃàÀ» Áö¿øÇÏÁö ¾Ê´Â´Ù. À̵é HTTP ¾ÐÃàÀ» Áö¿øÇÏÁö ¾Ê´Â API¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ HTTP ¾ÐÃàÀº º°µµÀÇ ¾ÐÃà ÇØÁ¦ ¼Ö·ç¼Ç(ÀÌ·± ¼Ö·ç¼ÇÀÌ ÀÖ´ÂÁö ÇÊÀÚµµ Àß ¸ð¸£°Ú´Ù)À» »ç¿ëÇÏ´ø°¡ ¾Æ´Ï¸é ÇÕÃà ÇØÁ¦¸¦ Á÷Á¢ ±¸ÇöÇØ¾ß ÇÑ´Ù.

¸¶Áö¸·À¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ºóµµÀûÀ¸·Î ¿ä¾àÇÏÀÚ¸é... ¼­¹ö Ãø¿¡ HTTP ¾ÐÃàÀ» Àû¿ëÇϰíÀÚ ÇÑ´Ù¸é ´ÙÀ½ µÎ °¡Áö¸¸ ±â¾ïÇØ µÎÀÚ. ºÏÄ¡±â... ¹ÚÄ¡±â... -_-;;

  • IE ³ª XMLHTTP´Â HTTP ¾ÐÃàÀÌ WinInet¿¡ ÀÇÇØ Áö¿øµÇ¹Ç·Î º°´Ù¸¥ °ÆÁ¤À» ÇÏÁö ¾Ê¾Æµµ µÈ´Ù.
  • ´å³Ý ±â¹ÝÀÇ ¾îÇø®ÄÉÀ̼ǵéÀº HTTP ¾ÐÃàÀ» º°µµ·Î ±¸ÇöÇØ ÁÖ¾î¾ß ÇÑ´Ù.

´å³Ý¿¡¼­ HTTP ¾ÐÃàÀ» ±¸ÇöÇÏ´Â ±¸Ã¼ÀûÀÎ ¹æ¹ý¿¡ ´ëÇØ¼­´Â... ¾ðÁ¦°¡ µÉÁö ¸ô¶óµµ... ´ÙÀ½ ±âȸ¿¡ ½áº¼¶õ´Ù... ¹¹... ÆÒµéÀÇ ¿­È­¿Í °°Àº ¼º¿øÀÌ ÀÖÀ¸¸é °ð¹Ù·Î ½ÃÀÛÇϰÚÁö¸¸... -_-;;

 

°­Á ¸ñ·ÏÀ¸·Î..