lecture Home > ASP.NET > Taeyo's ASP.NET

Taeyo's ASP.NET

   °­Á ÃÖÃÊ ÀÛ¼ºÀÏ : 2006³â 01¿ù 14ÀÏ
   °­Á ÃÖÁ¾ ¼öÁ¤ÀÏ : 2006³â 01¿ù 16ÀÏ

   °­Á ÀÐÀ½ ¼ö : ȸ

   ÀÛ¼ºÀÚ : Taeyo(±è Å¿µ)
   ÆíÁýÀÚ : Taeyo(±è Å¿µ)

   °­Á Á¦¸ñ : À¥¿¡¼­ÀÇ ºñµ¿±â È£Ãâ : WebService Behavior

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

µåµð¾î 3¹øÂ° °­ÁÂÀÔ´Ï´Ù. ÇÑ ÁÖ¿¡ Çѹø °­Á ¿Ã¸®´Â °Íµµ ±×´ÙÁö ½±Áö°¡ ¾Ê³×¿ä.
¿¹Àü¿¡´Â ÇÏ·ç¿¡ Çϳª¾¿µµ ¿Ã·È¾ú´Âµ¥... ÂÁ...
ºñ·Ï ¿Ã¸®´Â ÅÒÀº Á¶±Ý ´À·ÁÁ³Áö¸¸ ²ÙÁØÈ÷ ÇØº¼±î ÇÕ´Ï´Ù...
Áß¿äÇÑ °ÍÀº "²ÙÁØÈ÷" ¶ó°í »ý°¢Çϴϱî¿ä...


À̹ø °­Á´ À¥À» ÅëÇÑ ºñ µ¿±â È£ÃâÀÇ ¼¼ ¹øÂ° ½Ã°£ÀÌ µÇ°Ú½À´Ï´Ù. À̹ø °­Á¿¡¼­´Â Microsoft¿¡¼­ IE Àü¿ëÀ¸·Î Á¦°ø ¹× Áö¿øÇß´ø(°ú°ÅÇüÀÔ´Ï´Ù) WebService HTC ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ·Á ÇÕ´Ï´Ù. ÀÌ ±â¹ýÀº ¼­¹ö Ãø ¸ðµâ·Î´Â À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇϰí, Ŭ¶óÀÌ¾ðÆ® Ãø ¸ðµâ·Î´Â htc ±â¼úÀ» ÀÌ¿ëÇÏ´Â ºñ µ¿±â È£Ãâ ¹æ½ÄÀä. Á¤½Ä ¸íĪÀº WebService Behavior¶ó°í ¹ßÇ¥µÇ¾ú´ø °ÍÀÔ´Ï´Ù. Microsoft¿¡¼­ ¸»ÀÔ´Ï´Ù.

Àú¹ø °­Áµµ ±×·¨Áö¸¸, À̹ø °­Áµµ ÃʱÞÀÚµéÀÌ Á¢±ÙÇϱ⿡´Â ±×¸® ½±Áö ¾ÊÀº ³»¿ëÀÏ ¼ö ÀÖ½À´Ï´Ù. ±×·¡¼­, ¾à°£ Á˼ÛÇϱ⵵ ÇÕ´Ï´Ù¸¸ ¤Ì¤Ì. ±×·¸´Ù ÇÏ´õ¶óµµ, ÀÌ ³»¿ë ¶ÇÇÑ Áß±ÞÀÚ·Î °¡±â À§Çؼ­´Â ¾Ë¾ÆµÎ¸é ¸Å¿ì ÁÁÀº ³»¿ëÀ̱⿡ °ú°¨ÇÏ°Ô ÁøÇàÇØ º¸·Á ÇÕ´Ï´Ù. ^^

WebService behavior´Â ¿ø°Ý ¸Þ¼­µå¸¦ È£ÃâÇϱâ À§ÇÑ ±â´ÉµéÀ» ĸ½¶È­Çϰí ÀÖ´Â °æ·®ÀÇ ÄÄÆ÷³ÍÆ®ÀÔ´Ï´Ù. À¥ ¼­ºñ½º¶ó´Â À̸§ÀÌ ¸»ÇØ ÁÖµíÀÌ, ³»ºÎÀûÀÎ ÇÁ·ÎÅäÄݷδ ¿ª½Ã³ª SOAP(SOAPÀ» ¸ô¶óµµ »ç¿ëÇÏ´Â µ¥¿¡´Â ÀüÇô ¹®Á¦°¡ ¾ø½À´Ï´Ù)À» ÀÌ¿ëÇϱ¸¿ä. MSÀÇ ±â¼úÀÌ´Ùº¸´Ï ÀÌ ±â¹ýÀ» ÀÌ¿ëÇÏ·Á¸é Ŭ¶óÀÌ¾ðÆ® ºê¶ó¿ìÀú´Â IE 5 ÀÌ»óÀ» »ç¿ëÇÏ¼Å¾ß ÇÕ´Ï´Ù. ¼­¹ö´Â WSDL 1.1À» Áö¿øÇϱ⸸ ÇÑ´Ù¸é ¾î¶°ÇÑ Ç÷§ÆûÀ̾ ¹«°üÇÏÁö¸¸ ¸»ÀÔ´Ï´Ù. ¹°·Ð, ÀϹÝÀûÀÎ °æ¿ì´Â .NET À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇϰÚÁö¿ä?

»ç½Ç, ±âÁ¸ °­Á¿¡¼­´Â ºñ µ¿±â È£Ãâ¿¡ ´ëÇÑ ÀÀ´ä(Response) °á°ú·Î ´Ü¼ø ¹®ÀÚ¿­ÀÇ ³ª¿­À» ÀÌ¿ëÇߴµ¥¿ä. Ãâ·Â µ¥ÀÌÅÍ·Î ´Ü¼øÇÑ ¹®ÀÚ¿­ÀÇ ³ª¿­À» ÀÌ¿ëÇÏ´Â ¹æ½ÄÀº °íÀüÀûÀÎ ¹æ½Ä(¹¹, °íÀüÀûÀÎ ¹æ½ÄÀÌ ³ª»Û °ÍÀº ¾Æ´ÏÁö¸¸)ÀÎÁö¶ó Å©°Ô ±ÇÀåÇÏÁö´Â ¾Ê´Â ÆíÀÔ´Ï´Ù. ´Ùµé ¾Æ½Ã°ÚÁö¸¸, ÇöÀç´Â ±×·¯ÇÑ µ¥ÀÌÅÍ Åë½ÅÀ» À§Çؼ­ ¾÷°è Ç¥ÁØÀÎ XMLÀ» ±ÇÀåÇÏ´Â ÆíÀÌÁÒ. XMLÀ» »ç¿ëÇÏ¸é ´Ù¾çÇÑ Å¬¶óÀÌ¾ðÆ®µéÀÌ ¼­¹öÀÇ µ¥ÀÌÅ͸¦ ÀÌ¿ëÇÔ¿¡ ÀÖ¾î ±× °¡¿ë¼ºÀÌ »ó´çÈ÷ ³ô´Ù´Â ÀåÁ¡ÀÌ ÀÖÀ¸´Ï±î¿ä. °Ô´Ù°¡, Áß¿äÇÑ °ÍÀº XMLÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ ¹Ì·¡¸¦ ³»´Ù ºÃÀ» ¶§, ÇÇÇØ°¥ ¼ö ¾ø´Â ¼±ÅÃÀ̱⵵ ÇÕ´Ï´Ù. ÇÏÁö¸¸, XMLÀ» ÀÌ¿ëÇÒ °æ¿ìÀÇ ´ÜÁ¡Àº Ŭ¶óÀÌ¾ðÆ®°¡ ±× XML µ¥ÀÌÅ͸¦ ÆÄ½Ì(ÇØ¼® ¹× ÃßÃâ)ÇØ¼­ »ç¿ëÇØ¾ß Çϱ⿡, ÆÄ½ÌÀ» À§ÇÑ ·ÎÁ÷À» º°µµ·Î ÀÛ¼ºÇØÁÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® Ãø¿¡ º°µµÀÇ ÆÄ¼­°¡ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ¸»ÀÌÁÒ.

±â»Ú°Ôµµ, À̹ø °­Á¿¡¼­ »ç¿ëÇÏ·Á´Â WebService Behavior ÄÄÆ÷³ÍÆ®´Â ÀÚüÀûÀ¸·Î ÀÛÀº ±Ô¸ðÀÇ ÆÄ¼­ ¶ÇÇÑ Á¦°øÇϰí Àֱ⿡, º°µµ·Î ÆÄ½Ì ÀÛ¾÷À» ÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ´ÙÇà Áß ºÒÇàÀ̶ó¸é, »ç¿ëÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ Çü½Ä¿¡ Á¦ÇÑÀÌ ÀÖ´Ù´Â °ÍÀ̱ä ÇÏÁö¸¸ ¸»ÀÌÁÒ.

WebService Behavior ÄÄÆ÷³ÍÆ®°¡ Áö¿øÇÏ´Â µ¥ÀÌÅÍ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.

ASP.NET µ¥ÀÌÅÍ Çü½Ä XML µ¥ÀÌÅÍ Çü½Ä
String String
Boolean Boolean
float(single) Float
double Double
decimal decimal
long long
int Int
short Short
byte unsignedByte
ulong unsignedLong
uint unsignedInt
ushort unsignedShort
sbyte Byte
DateTime Date
DateTime Time
String[] ArrayOfString
boolean[] ArrayOfBoolean
float[] ArrayOfFloat
double[] ArrayOfDouble
decimal[] ArrayOfDecimal
long[] ArrayOfLong
int[] ArrayOfInt
short[] ArrayOfShort

WebService behavior°¡ Áö¿øÇÏ´Â µ¥ÀÌÅÍ Çü½ÄÀÌ ÀÚ¼¼ÇÏ°Ô ³ª¿ÍÀÖ´Â ¸µÅ©´Â ´ÙÀ½°ú °°À¸´Ï Âü°íÇØ º¸½Ã´Â °Íµµ ÁÁÀ» µí ÇÕ´Ï´Ù.

http://msdn.microsoft.com/library/default.asp?url=/workshop/author/webservice/webservice.asp

¶ÇÇÑ, ±âÁ¸ °­Á´ ¼­¹ö ¸ðµâÀ» asp³ª aspx ÆäÀÌÁö·Î Á¦ÀÛÇß¾ú´Âµ¥¿ä. ±×°ÍÀÌ ±×¸® ³ª»Û ¼±ÅÃÀº ¾Æ´Ï°Ú½À´Ï´Ù¸¸, °¡±ÞÀûÀ̸é ÀÌ ºÎºÐµµ À¥ ÆäÀÌÁö°¡ ¾Æ´Ñ À¥ ¼­ºñ½º ¸ðµâ(asmx)·Î ÀÛ¼ºÇØ ÁÖ´Â °ÍÀÌ Á» ´õ ¹Ì·¡ÁöÇâÀûÀÎ ¹æ½ÄÀ̶ó ÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù. ±×·¸°Ô ÇÏ´Â °ÍÀÌ º¸´Ù È®À强 ÀÖ´Â ¹æ¾ÈÀÌÁö ¾Ê°Ú½À´Ï±î? asp³ª aspx ¸¦ ÀÌ¿ëÇϸé ó¸® ·ÎÁ÷ÀÌ ÇÊ¿äÇÒ ¶§¸¶´Ù º°µµÀÇ ÆäÀÌÁö¸¦ ÀÛ¼ºÇØ¾ß ÇÏÁö¸¸, asmx´Â ±×·¯ÇÑ ·ÎÁ÷À» À¥ ¸Þ¼­µå·Î ¸¸µé ¼ö ÀÖÀ¸´Ï±î¿ä. °Ô´Ù°¡, ±×·¸°Ô ¸¸µé¸é ÀÚµ¿À¸·Î XML serializationµµ Áö¿øµÇ´Ï±ñ ¼­¹ö Ãø µ¥ÀÌÅÍ ¹Ýȯ ½Ã, XML ±¸¼ºÀ» °í¹ÎÇÒ Çʿ䰡 ¾ø´Ù´Â ÀÌÁ¡µµ ÀÖÁÒ.

±×·¡¼­, ±ÇÀåµÇ´Â ¹æ½ÄÀº ¼­¹ö ÃøÀÇ ¸ðµâÀº À¥ ¼­ºñ½º·Î ÀÛ¼ºÇϰí, µ¥ÀÌÅÍ Åë½ÅÀº XML·Î ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀÌ ¹ÙÅÁÀÌ µÇ¾î AJAX(Asynchronous JavaScript and XML)·Î±îÁö ¹ßÀüÀÌ µÈ °ÍÀ̱⵵ ÇÏÁÒ(¿ä°Ç ´ã ¹ø¿¡ ´Ù·ê ÁÖÁ¦À̱⵵ ÇÕ´Ï´Ù)

¼­µÎ°¡ ¹«ÁöÇÏ°Ô ±æ¾ú´Âµ¥¿ä. »ç½Ç ¿¹Á¦´Â »ó´çÈ÷ ´Ü¼øÇÕ´Ï´Ù. ¿Ö³ÄÇϸé, ÀÌÀü °­Á¿¡¼­ ´Ù·ç¾ú´ø ´ëºÎºÐÀÇ ÀÛ¾÷À» ÄÄÆ÷³ÍƮȭ ½ÃÄѵР°ÍÀÌ WebService BehaviorÀÌ´Ù º¸´Ï, À̸¦ ÀÌ¿ëÇÒ °æ¿ì ÄÚµù·®ÀÌ »ó´çÈ÷ ÁÙ¾îµé »Ó ´õ·¯ »ç¿ëÇϱ⵵ ¸Å¿ì ÆíÇϱ⠶§¹®ÀÌÁÒ.

±Ùµ¥, Áß¿äÇÑ °ÍÀº ºñ µ¿±â È£Ãâ ù ¹øÂ° °­Á¿¡¼­µµ ¸»¾¸µå·È´Ù½ÃÇÇ, WebService Behavior´Â ÇöÀç´Â MS¿¡¼­ ´õ ÀÌ»ó Áö¿øÀ» ÇÏÁö ¾Ê´Â ÄÄÆ÷³ÍÆ®¶ó´Â Á¡ÀÔ´Ï´Ù. À̰ÍÀÌ ¹®Á¦¶ó¸é ¹®Á¦ÁÒ. WebService Behavior »çÀÌÆ®¿¡ °¡ º¸¸é ´ÙÀ½°ú °°Àº »¡°£»ö °æ°í¹®ÀÌ ¶°~¾ï ÇÏ´Ï ¹öƼ°í ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ¾î¿ä.

Microsoft¢ç Internet Explorer WebService Behavior may be downloaded; however, it is not currently supported.

±×·¸½À´Ï´Ù. ´Ù¿î·ÎµåÇØ¼­ »ç¿ëÇÒ ¼ö´Â ÀÖÁö¸¸, Áö¿øÀº ÇöÀç ¾È ÇÑ´Ù´Â °ÅÁÒ. »ç¿ëÇÏ´Ù°¡ ¹®Á¦ »ý±â¸é ³ÊÈñµéÀÌ ¾Ë¾Æ¼­ °íÃļ­ »ç¿ëÇϼ¼¿ä~ ¹¹ ±×·± ÀǹÌÀÔ´Ï´Ù.

¸µÅ©´Â...

http://msdn.microsoft.com/archive/?url=/archive/en-us/samples/internet/behaviors/library/webservice/default.asp

ÀÚ. ÀÏ´Ü ´Ù¿î·Îµå¸¦ ¹Þ¾Æº¾½Ã´Ù. ±×·¯¸é, ²Ã¶û webservice.htc ÆÄÀÏ Çϳª¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. Htc°¡ ¹«¾ùÀ̰í, ¾î¶»°Ô Á¦ÀÛ ¹× »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö´Â ¼Û±º´ÔÀÇ °­Á¸¦ ÅëÇØ¼­ ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. Å¿À »çÀÌÆ®ÀÇ °­Á Áß ¸Å¿ì ÈǸ¢ÇÑ °­Á·ΠÆò°¡ ¹Þ°í ÀÖ´Â °­ÁÂÀ̱⵵ ÇÏÁÒ. Htc¿¡ ´ëÇØ¼­ ¾Ë°í ½Í´Ù¸é ´ÙÀ½ ¸µÅ©¸¦ Ŭ¸¯Çϼ¼¿ä ^^ (¾Ë°í ½Í¾î¿ä~ Ŭ¸¯)

webservice.htc ÆÄÀÏÀ» ¿­¾î¼­ ¼Ò½º¸¦ º¸½Ã¸é, ÀÏ´Ü Á».. ºÎ´ã½º·´½À´Ï´Ù. ¾î·Á¿î ÄÚµåµéÀÌ ¸¶±¸ ³ª¿­µÇ¾î ÀÖÀ¸´Ï±î¿ä(°Ô´Ù°¡ µé¿©¾²±âµµ ¾È µÇ¾î À־ º¸±â¿¡ ¾à°£ Â¥Áõ³ª±âµµ ÇÑ´Ù´Â..). ½Ã°£ÀÌ ³ª½Ã´Â ºÐÀº ¼Ò½º¸¦ ºÐ¼®ÇØ º¸´Â °Íµµ ³ª»ÚÁö ¾Ê°Ú½À´Ï´Ù. ¸¸ÀÏ, ¼Ò½º¸¦ »ìÆìº»´Ù¸é °³³äÀûÀ¸·Î´Â ÀÌÀü °­ÁÂÀÎ XMLHTTP ÄÄÆ÷³ÍÆ®¸¦ ÀÌ¿ëÇß´ø ¹æ½Ä°ú Å©°Ô ´Ù¸£Áö ¾Ê´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï, XMLHTTP¸¦ ÀÌ¿ëÇÏ´Â °ÍÀ» Á¶±Ý ´õ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÄÄÆ÷³ÍÆ®¿Í ½ÃÄѳõÀº °ÍÀÌ ¹Ù·Î webservice.htc¶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÁÒ.

ÀÌ¹Ì XMLHTTPÀÇ »ç¿ë¹ýÀ» ¾Ë°í ÀÖ´Â ¿©·¯ºÐµéÀº ±× ³»ºÎÀÇ Ã³¸®¹æ½Äµµ ÀÌÇØÇÏ°í °è½Ç °ÍÀ̱⿡ webservice.htc°¡ ¹º°¡ »õ·Ó°í, Çõ½ÅÀûÀÎ °ÍÀº ¾Æ´Ï¶ó´Â °Íµµ ´«Ä¡Ã¤°í °è½Ç °ÍÀÔ´Ï´Ù. ´ÜÁö, XMLHTTP¸¦ »ç¿ëÇØ¼­ ºñ µ¿±â È£ÃâÇϱâ À§ÇÑ ·ÎÁ÷µéÀ» ½¬¿î ÀÎÅÍÆäÀ̽º·Î Á¦°øÇØÁÖ´Â ÀÏÁ¾ÀÇ ·¦ÆÛ(wrapper)¶ó´Â °ÍÀ» À̳» ´«Ä¡Ã¤½Ç ¼ö ÀÖÀ» °ÍÀ̶ó´Â À̾߱âÁÒ. ¶ÇÇÑ, ¼ö½ÅµÈ XML µ¥ÀÌÅ͸¦ »ç¿ëÇϱ⠽±°Ô Àç ±¸¼ºÇØ ÁÖ´Â ±â´Éµµ ³»ÀåÇϰí ÀÖ°í ¸»ÀÌÁÒ.

±×·¸´Ù¸é, ÀÌÁ¦ Çѹø ÇØ º¸ÁÒ. webservice.htc¸¦ ÀÌ¿ëÇØ¼­ ½±°Ô ºñµ¿±â È£ÃâÀ» ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼­ ¸»ÀÔ´Ï´Ù. ^^

webservice.htc´Â ±× À̸§ÀÌ ¸»ÇØÁÖµíÀÌ ¼­¹ö Ãø ¸ðµâ·Î À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¸±â¿¡, ¹«¾ùº¸´Ù ¸ÕÀú ¼­¹ö ÂÊÀÇ À¥ ¼­ºñ½º°¡ ÁغñµÇ¾î¾ß ÇϰÚÁÒ?

¿©·¯ºÐÀÌ °¡Áö°í ÀÖ´Â À¥ ÇÁ·ÎÁ§Æ®¸¦ ¾Æ¹« °ÍÀ̳ª ¿­¾îµµ ÁÁ½À´Ï´Ù. À¥ ÇÁ·ÎÁ§Æ®°¡ ÁغñµÇ¾ú´Ù¸é ±× ·çÆ®¿¡ ´ÙÀ½°ú °°ÀÌ Employee.asmx¶ó´Â À¥ ¼­ºñ½º ÆÄÀÏÀ» Çϳª ¸¸µé¾î º¸µµ·Ï ÇØ¿ä. ¿¹Á¦¿ë À¥ ¼­ºñ½ºÀ̱⿡ ¸Å¿ì °£´ÜÇÑ ¼öÁØÀ¸·Î ¸¸µé¾î º¼±î ÇÕ´Ï´Ù. Áï, ÀÌÀü °­Á¿¡¼­ Çß´ø °Íó·³ »ç¹øÀ» ÀÔ·ÂÇÏ¸é »ç¿øÀÇ Á¤º¸¸¦ °¡Á®¿À´Â ±× ·ÎÁ÷À» À¥ ¸Þ¼­µå·Î Àç ±¸¼ºÇغ¸·Á ÇÕ´Ï´Ù. ^^. Employee.asmx ÆÄÀÏÀ» ¸¸µé¾ú´Ù¸é ±× ¾È¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Web;
using System.Web.Services;

namespace CallbackEx
{
    /// <summary>
    /// Employee¿¡ ´ëÇÑ ¿ä¾à ¼³¸íÀÔ´Ï´Ù.
    /// </summary>
    public class Employee : System.Web.Services.WebService
    {
        [WebMethod]
        public string[] GetEmpByEmpID(int empID)
        {
            string[] info = {"", "", "", "", ""};
            string strCon = "server=(local);database=Northwind;uid=sa;pwd=***";
            string sql = " SELECT LastName, FirstName, Title, BirthDate, City FROM Employees "
                        + " WHERE EmployeeID = @empID";

            SqlConnection con = new SqlConnection(strCon);
            SqlCommand cmd = new SqlCommand(sql, con);
            cmd.Parameters.Add("@empID", SqlDbType.Int);
            cmd.Parameters["@empID"].Value = empID;

            con.Open();
            SqlDataReader reader = cmd.ExecuteReader();

            if(reader.Read())
            {
                info[0] = reader[0].ToString();
                info[1] = reader[1].ToString();
                info[2] = reader[2].ToString();
                info[3] = reader[3].ToString();
                info[4] = reader[4].ToString();
            }

            reader.Close();
            con.Close();

            return info;
        }
    }
}

ÄÚµå´Â ±×¸® ¾î·ÆÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù. ÀÌÀü °­Á¿¡¼­ ´Ù·é ÄÚµå¿Í À¯»çÇϱ⠶§¹®ÀÌÁÒ. GetEmpByEmpID¶ó´Â À¥ ¸Þ¼­µå´Â empID¶ó´Â »ç¹øÀ» ¹Þ¾Æ¼­ Äõ¸®¸¦ ¼öÇàÇϰí, ÇØ´ç Á÷¿øÀÇ ¸î¸î Á¤º¸¸¦ string ¹è¿­·Î ¹ÝȯÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.

À¥ ¸Þ¼­µå´Â ¹®ÀÚ¿­ ¹è¿­À» ¹ÝȯÇÏÁö¸¸, ÀÌ µ¥ÀÌÅÍ´Â ASP.NET¿¡ ÀÇÇØ ÀÚµ¿À¸·Î XML serializationÀÌ µÇ¾î¼­ ´ÙÀ½°ú °°Àº Çü½ÄÀÇ XML ±¸Á¶·Î µ¥ÀÌÅ͸¦ ¹ÝȯÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.

<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    <string>Fuller</string>
    <string>Andrew</string>
    <string>Vice President, Sales</string>
    <string>1952-02-19 ¿ÀÀü 12:00:00</string>
    <string>Tacoma</string>
</ArrayOfString>

¸¸ÀÏ, ¼­¹ö ¸ðµâÀ» asp³ª aspx·Î ¸¸µé¾ú´Ù¸é ÀÌ·¯ÇÑ XML ±¸Á¶¸¦ Á÷Á¢ ¼öµ¿À¸·Î ±¸¼ºÇØÁÖ¾î¾ß ÇϰÚÁö¸¸, À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ¸é ¾Ë¾Æ¼­ ÀÌ·¯ÇÑ Æ÷¸ËÀÌ ¸¸µé¾îÁö´Ï ÂüÀ¸·Î ÆíÇÏÁÒ ^^. ±×°Ô ASP.NET À¥ ¼­ºñ½ºÀÇ ÀåÁ¡ÀÌ ¾Æ´Ï°Ú½À´Ï±î?

ÀÚ. Áغñ°¡ ´Ù µÇ¾ú´Ù¸é, Á¦ÀÛÇÑ À¥ ¼­ºñ½º ÆÄÀÏÀÎ employee.asmx¸¦ ½ÇÇàÇØ º¸µµ·Ï ÇÏÁÒ. ±×·¯¸é, ÇϳªÀÇ ¸Þ¼­µå(GetEmpByEmpID)¸¸À» °®´Â Å×½ºÆ® ÆäÀÌÁö°¡ ³ª¿Ã °ÍÀ̰í, ±× ¸Þ¼­µå¸¦ Ŭ¸¯Çϸé, ´ÙÀ½°ú °°Àº ¸Þ¼­µå Å×½ºÆ® ÆäÀÌÁö°¡ ³ªÅ¸³³´Ï´Ù.

¿©±â¿¡ »ç¹øÀ¸·Î 1À» ÀÔ·ÂÇÏ°í ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°Àº °á°ú°¡ ³ªÅ¸³¯ °ÍÀÔ´Ï´Ù.

¿¹»ó´ë·Î Á¦´ë·Î µÈ °á°ú°¡ ¸Úµé¾îÁö°Ô ³ªÅ¸³ª°í ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÁÒ? ÀÚ. ¿©±â±îÁöÀÇ °á°ú°¡ ¹«³­ÇÏ°Ô ³ª¿Ô´Ù¸é ¼­¹ö ¸ðµâÀº ¿Ï¼ºµÇ¾ú´Ù°í °¡Á¤ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·¸´Ù¸é, ÀÌÁ¦ ÀÌ À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇϴ Ŭ¶óÀÌ¾ðÆ®¿ë ÆäÀÌÁö¸¦ ¸¸µé¾î¾ß ÇϰÚÁÒ? (»ç½Ç ÀÌ ºÎºÐÀÌ À̹ø °­ÁÂÀÇ ÇÙ½ÉÀ̶ó ÇÒ ¼ö ÀÖ°ÚÁÒ~)

±×·¸´Ù¸é, ÀÌÁ¦ Çѹø ¸¸µé¾î º¸°Ú½À´Ï´Ù. webservice.htc¸¦ ÀÌ¿ëÇØ¼­ ºñµ¿±â È£ÃâÀ» ÇÏ´Â ÆäÀÌÁö¸¦ ¸»ÀÔ´Ï´Ù. ÀÌ ÆäÀÌÁö´Â ¾îÂ÷ÇÇ ±¸µ¿ÇÏ´Â ÂÊÀÌ Å¬¶óÀ̾ðÆ®À̱⿡ aspx¿Í °°Àº ¼­¹ö ÆäÀÌÁö·Î Á¦ÀÛÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×³É html ÆäÀÌÁö·Î Á¦ÀÛÇØµµ µ¿ÀÛÇÏ´Â µ¥¿¡´Â ¾Æ¹«·± ¹«¸®°¡ ¾ø´Ù´Â °ÍÀÌÁÒ. ÇØ¼­, ¸¸µé¾î º¸¾Ò½À´Ï´Ù.

<html>
    <head>
    <Script language="JavaScript">
        function RaiseCallback()
        {
            var wsdl = "http://localhost/CallbackTest/MyWebServices/Employee.asmx?WSDL";
            var params = document.all.EmpID.value;
            MyWs.useService(wsdl,"EmpService");
            MyWs.EmpService.callService(ProcessResult, "GetEmpByEmpID", params);
        }

        function ProcessResult(result)
        {
            var vals = result.value;
            document.all.LastName.value = vals[0];
            document.all.FirstName.value = vals[1];
            document.all.Title.value = vals[2];
            document.all.BirthDate.value = vals[3];
            document.all.City.value = vals[4];
        }
    </Script>
    <LINK href="../Styles.css" type="text/css" rel="stylesheet">
    </head>

    <body>
        <div id="MyWs" style="BEHAVIOR:url('WebService.htc')" />
    <p>
        <table cellpadding="3">
            <tr>
                <td align="center">»ç¹ø</td>
                <td><input id="EmpID" NAME="EmpID" onchange="RaiseCallback();"></td>
            </tr>
            <tr height="1" bgcolor="silver">
                <td colspan="2"></td>
            </tr>
            <tr>
                <td align="center" width="80">À̸§</td>
                <td width="200"><input id="LastName" name="LastName"></td>
            </tr>
            <tr>
                <td align="center">¼º</td>
                <td><input id="FirstName" name="FirstName"></td>
            </tr>
            <tr>
                <td align="center">Á÷±Þ</td>
                <td><input id="Title" name="Title"></td>
            </tr>
            <tr>
                <td align="center">»ýÀÏ</td>
                <td><input id="BirthDate" name="BirthDate"></td>
            </tr>
            <tr>
                <td align="center">µµ½Ã</td>
                <td><input id="City" name="City"></td>
            </tr>
        </table>
    </p>
    <p>WebService Behavior <a href="http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/samples/internet/behaviors/library/webservice/default.asp"
            target="_blank">WebService Behavior Link</a>
        </p>
    </body>
</html>

Ŭ¶óÀÌ¾ðÆ® ¼Ò½º¿¡¼­ Áß¿äÇÑ ºÎºÐÀº WebService.htc¸¦ ÆäÀÌÁö¿¡ »ðÀÔÇÏ´Â ºÎºÐÀÎ ´ÙÀ½ ÄÚµåÀÔ´Ï´Ù.

<div id="MyWs" style="BEHAVIOR:url('WebService.htc')" />

ÀÌ Äڵ带 »ðÀÔÇÔÀ¸·Î½á ÀÌÁ¦ WebService.htc ÄÄÆ÷³ÍÆ®¸¦ MyWs¶ó´Â À̸§À¸·Î »ç¿ëÇÒ ¼ö°¡ ÀÖ°Ô µË´Ï´Ù. ÄÚµå´ë·Î¶ó¸é, WebService.htc ÆÄÀÏÀÇ À§Ä¡´Â Client.htm ÆÄÀÏÀÌ ³õ¿©Á® ÀÖ´Â µ¿ÀÏ Æú´õ ¾È¿¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸ÀÏ, ±× °æ·Î°¡ ´Ù¸£´Ù¸é, ¿¹¸¦ µé¾î sc¶ó´Â ÇÏÀ§ Æú´õ¿¡ htc ÆÄÀÏÀÌ À§Ä¡ÇÑ´Ù¸é BEHAVIOR:url('WebService.htc') ´ë½Å, BEHAVIOR:url('sc/WebService.htc')¿Í °°ÀÌ ÁöÁ¤µÇ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù.

¿¹Á¦ ÀÚü´Â ÀÌÀü °­ÁÂ(XMLHTTP)ÀÇ °Í°ú µ¿ÀÏÇÕ´Ï´Ù. Áï, »ç¹øÀ» ÅØ½ºÆ®¹Ú½º¿¡ ÀÔ·ÂÇÏ°í Æ÷Ä¿½º¸¦ ¿Å±â¸é ±× ¶§ ºñµ¿±â È£ÃâÀÌ ÀÌ·ç¾îÁ®¼­ »ç¿ëÀÚ Á¤º¸¸¦ ¼­¹ö·ÎºÎÅÍ °¡Á®¿À°Ô µÇ´Â °ÍÀÌÁÒ.

»ç¹ø ¿ë ÅØ½ºÆ®¹Ú½ºÀÇ HTML ű׸¦ º¸½Ã¸é ´ÙÀ½°ú °°ÀÌ onchange À̺¥Æ® ½Ã¿¡ RaiseCallback ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â Äڵ带 º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö¸íÀÌ¾ß ¿©·¯ºÐÀÌ ¿øÇÏ´Â ´ë·Î ÁÙ ¼ö ÀÖ°ÚÁö¸¸, Àú´Â ±×·² µí ÇØ º¸ÀÌ´Â À̸§ÀÎ RaiseCallbackÀ» »ç¿ëÇØ º¸¾Ò½À´Ï´Ù. ±×¸®°í, ±× ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ÄÚµå·Î ±¸¼ºµÇ¾î ÀÖ¾î¿ä.

function RaiseCallback()
{
    var wsdl = "http://localhost/CallbackTest/MyWebServices/Employee.asmx?WSDL";
    var params = document.all.EmpID.value;
    MyWs.useService(wsdl,"EmpService");
    MyWs.EmpService.callService(ProcessResult, "GetEmpByEmpID", params);
}

WebService.htc¸¦ ÅëÇØ¼­ ºñµ¿±âÀûÀ¸·Î À¥ ¼­ºñ½º¸¦ È£ÃâÇϱâ À§Çؼ­´Â ÃÑ 3°¡Áö Á¤µµÀÇ Á¤º¸°¡ ÇÊ¿äÇÕ´Ï´Ù. ±×µéÀº ´ë·« ´ÙÀ½°ú °°¾Æ¿ä

1. ºñµ¿±â È£ÃâÀÇ ´ë»óÀÌ µÉ À¥ ¼­ºñ½ºÀÇ wsdl °æ·Î
2. È£ÃâÇÒ À¥ ¸Þ¼­µåÀÇ ¸íĪ
3. È£ÃâÇÒ À¥ ¸Þ¼­µå°¡ ÇÊ¿ä·Î ÇÏ´Â ¸Å°³º¯¼ö ÀÎÀÚ°ª

ÇØ¼­, Äڵ忡¼­´Â wsdlÀ̶ó´Â º¯¼ö¿¡ ºñ µ¿±â Åë½ÅÀÇ ´ë»óÀÌ µÉ À¥ ¼­ºñ½ºÀÇ wsdl °æ·Î¸¦ ÁöÁ¤Çϰí ÀÖ±¸¿ä. params¶ó´Â º¯¼ö¿¡´Â ÀÎÀÚ·Î ³Ñ±æ ¸Å°³º¯¼ö °ªÀ» ÁöÁ¤ÇØ µÎ°í ÀÖ½À´Ï´Ù. ÀÌ´Â ´ç¿¬È÷ »ç¹øÀÌ µÇ°ÚÁÒ?

WebService.htc ÄÄÆ÷³ÍÆ®ÀÇ ÇÙ½É ¸Þ¼­µå´Â Å©°Ô 2°¡Áö ÀÔ´Ï´Ù. À¥ ¼­ºñ½º¿ÍÀÇ ¿¬°áÁ¤º¸¸¦ ±¸¼ºÇÏ´Â useService¶ó´Â ¸Þ¼­µå¿Í ½ÇÁúÀûÀÎ À¥ ¸Þ¼­µå È£ÃâÀ» ¼öÇàÇÏ´Â callService°¡ ¹Ù·Î ±×°ÍÀÔ´Ï´Ù. ÀÌ ¸Þ¼­µåµéÀÇ ±¸Ã¼ÀûÀÎ »ç¿ë¹æ¹ý°ú ±× ¿ÜÀÇ ´Ù¸¥ ¸Þ¼­µåµéÀÇ Á¤º¸´Â ´ÙÀ½ ·¹ÆÛ·±½º¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.

WebService behavior ÂüÁ¶ ·¹ÆÛ·±½º

http://msdn.microsoft.com/library/?url=/workshop/author/webservice/webservice.asp

°¡Àå Áß¿äÇÑ ¸Þ¼­µåÀÎ useService´Â 2°³ÀÇ ÀÎÀÚ¸¦ ¹Þ´Âµ¥¿ä. ù ¹øÂ° ÀÎÀÚ´Â ºñ µ¿±â Åë½ÅÀÇ ´ë»óÀÌ µÉ À¥ ¼­ºñ½ºÀÇ wsdl °æ·ÎÀÔ´Ï´Ù. ±×¸®°í, µÎ ¹øÂ° ÀÎÀÚ´Â ±× À¥ ¼­ºñ½º¸¦ ¾î¶°ÇÑ À̸§À¸·Î »ç¿ëÇÒ °ÍÀÎÁö ÀÚ½ÅÀÌ »ç¿ëÇÏ±â ÆíÇÑ º°¸íÀ» ÁÖ´Â °ÍÀÔ´Ï´Ù. ±×¸®°í, ÀÌ º°¸íÀº ½ÇÁ¦ À¥ ¼­ºñ½º¸¦ È£ÃâÇÒ ¶§ »ç¿ëÇÏ°Ô µÇÁö¿ä. ÀÌÇØ¸¦ µ½±â À§Çؼ­ ¼Ò½º¸¦ º¸°Ú½À´Ï´Ù.

MyWs.useService(wsdl,"EmpService");
MyWs.EmpService.callService(ProcessResult, "GetEmpByEmpID", params);

¼Ò½ºÀÇ Ã¹ ¶óÀο¡¼­´Â useService ¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­, ù ¹øÂ° ÀÎÀڷδ wsdl °æ·Î¸¦ ÁÖ°í ÀÖ±¸¿ä. µÎ ¹øÂ° ÀÎÀڷδ ¡°EmpService¡±¶ó´Â ¹®ÀÚ¿­À» ÁÖ°í ÀÖ½À´Ï´Ù. ÀÌ´Â ÇØ´ç À¥ ¼­ºñ½º¸¦ EmpService¶ó´Â À̸§À¸·Î Â÷ÈÄ ÀÌ¿ëÇϰڴٴ °ÍÀ» ÀǹÌÇÕ´Ï´Ù.

ÇØ¼­, µÎ ¹øÂ° ¶óÀÎÀÇ ¼Ò½º¸¦ º¸½Ã¸é MyWs.EmpService.. ¿Í °°ÀÌ ±× À̸§ÀÌ »ç¿ëµÇ°í ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ^^ ¸¸ÀÏ, useService ¸Þ¼­µåÀÇ µÎ ¹øÂ° ÀÎÀÚ·Î taeyoService¶ó´Â °ªÀ» Á̴ּٸé, µÎ ¹øÂ° ¶óÀÎÀÇ ¼Ò½ºµµ MyWs.TaeyoService.. ¿Í °°ÀÌ ¹Ù²î¾î¾ß ÇϰÚÁÒ?

±×¸®°í, µÎ ¹øÂ° ¶óÀο¡¼­´Â callService¶ó´Â ¸Þ¼­µå¸¦ È£ÃâÇϰí ÀÖ½À´Ï´Ù. À̰ÍÀÌ ½ÇÁúÀûÀ¸·Î ƯÁ¤ À¥ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °ÍÀä. ù ¹øÂ° ÀÎÀڷδ ÄݹéÀ» ¹ÞÀ» ÇÔ¼ö¸í(Àá½Ã µÚ¿¡ ¼³¸íÇÕ´Ï´Ù)À» ÁöÁ¤ÇØ ÁÖ½Ã¸é µÇ°í, µÎ ¹øÂ° ÀÎÀڷδ »ç¿ëÇÒ À¥ ¸Þ¼­µåÀÇ À̸§, ¼¼ ¹øÂ° ÀÎÀڷδ À¥ ¸Þ¼­µå ¼öÇà¿¡ ÇÊ¿äÇÑ ¸Å°³º¯¼ö °ªÀ» ÁöÁ¤ÇØ ÁÖ¸é µË´Ï´Ù.

ù ¹øÂ° ÀÎÀÚ·Î ÁöÁ¤ÇÏ´Â Äݹé ÇÔ¼ö¸íÀº ¹«¾ùÀ̳Ä? ¹Ù·Î ºñ µ¿±â È£ÃâÀÇ °á°ú¸¦ ¹ÞÀ» ÇÔ¼ö¸íÀ» ¸»ÇÕ´Ï´Ù. Áï, ºñ µ¿±â È£ÃâÀÌ ³¡³­ µÚ, ±× È£ÃâÀÇ °á°ú°ªÀ» ¹Þ¾Æ¼­ ó¸®ÇÒ ÇÔ¼ö¸¦ ¸»ÇÑ´Ù´Â °ÍÀÌÁÒ. ¼Ò½º¿¡¼­´Â ±× °ªÀ¸·Î ProcessResult¸¦ ÁÖ¾ú±¸¿ä. Àüü ¼Ò½º¸¦ ´Ù½Ã º¸½Ã¸é, ¹Ù·Î ¹Ø¿¡ ±× ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ÙÀ½°ú °°ÀÌ ¸»ÀÌÁÒ.

function ProcessResult(result)
{
    var vals = result.value;
    document.all.LastName.value = vals[0];
    document.all.FirstName.value = vals[1];
    document.all.Title.value = vals[2];
    document.all.BirthDate.value = vals[3];
    document.all.City.value = vals[4];
}

ProcessResult ÇÔ¼ö´Â result¶ó´Â ÀÎÀÚ¸¦ Çϳª °®´Âµ¥¿ä. ¹Ù·Î Àú ÀÎÀڷΠȣÃâÀÇ °á°ú°ªÀÌ ³Ñ¾î¿É´Ï´Ù. ´©°¡ ±× °ªÀ» ³Ñ°ÜÁֳİí¿ä? ±× ¿ªÇÒ ¸ðµÎ¸¦ WebService.htc °¡ ÇØÁÖ´Â °ÍÀÔ´Ï´Ù. ^^

½ÇÁ¦ È£Ãâ °á°ú °ªÀº result¶ó´Â °³Ã¼ º¯¼öÀÇ value¶ó´Â ¼Ó¼ºÀ» ÅëÇØ¼­ ¾ò¾î³¾ ¼ö ÀÖ½À´Ï´Ù. ÇØ¼­ ¸¸ÀÏ, ¼­¹ö¿¡¼­ °á°ú°ªÀ¸·Î ¹®ÀÚ¿­ ¹è¿­À» ³Ñ°ÜÁشٸé result.value´Â ¹®ÀÚ¿­ ¹è¿­ÀÏ °ÍÀ̰í¿ä. ¼­¹ö¿¡¼­ È£Ãâ °á°ú°ªÀ¸·Î Boolean °ªÀ» ³Ñ°ÜÁشٸé result.value´Â ºÒ¸° °ªÀÏ °ÍÀÔ´Ï´Ù. ^^

¿ì¸®ÀÇ °æ¿ì´Â ±× °ªÀÌ ¹®ÀÚ¿­ ¹è¿­ÀÌ´Ï, ¼Ò½º¿¡¼­´Â ±× °ªÀ» ¹è¿­Çü½ÄÀ¸·Î Àо °¢°¢¿¡ ÇØ´çÇÏ´Â ÄÁÆ®·Ñ¿¡ ³Ö¾îÁÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ¸Å¿ì ½±ÁÒ?

±×·³, Çѹø ½ÇÇàÇØ º¼±î¿ä?

±×·¸½À´Ï´Ù. WebService.htc¸¦ ÀÌ¿ëÇϸé ÀÌÅä·Ï ÀûÀº ÄÚµå·Î ½±°Ô ºñ µ¿±â È£ÃâÀ» ±¸ÇöÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.

ºñ µ¿±â È£ÃâÀ» ÇÏ´Â ¾à 2ÁÙ(useService¿Í callService)ÀÇ ÄÚµå¿Í °á°ú°ªÀ» ¹Þ¾Æ¼­ ó¸®ÇÒ ÇÔ¼ö Çϳª¸¦ ¸¸µé¸é ±×°ÍÀÌ ÀüºÎ¶ó´Â °ÍÀÌÁÒ. Àç¹ÌÀÖÁö ¾Ê³ª¿ä?

ºñ·Ï WebService.htc°¡ DataSet°ú °°Àº º¹ÀâÇÑ ±¸Á¶ÀÇ Çü½ÄÀº Áö¿øÇÏÁö ¾Ê´Â´Ù´Â ¾Æ½¬¿òÀÌ ÀÖ±ä ÇÏÁö¸¸, ±×·±´ë·Î »ç¿ëÇÏ´Â µ¥¿¡ Å« ºÒÆíÀº ¾øÀ» °ÍÀÔ´Ï´Ù. ¾î¶²°¡¿ä? ÀÌÀü °­Áº¸´Ù´Â È®½ÇÈ÷ »ç¿ëÇϱⰡ ½±ÁÒ? ÇÏÇÏÇÏ

ÀÚ. ±×·³ ÀÌÁ¦ Àú´Â ´ÙÀ½ °­Á¸¦ ÁغñÇÏ·¯ ¶Ç ¿©Çà(?)À» ¶°³ªº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ´ÙÀ½ °­Á´ ASP.NET 2.0¿¡¼­ »õ·ÎÀÌ Á¦°øµÇ´Â ÄÝ¹é ±â´ÉÀ» ¼³¸íÇÏ´Â °­ÁÂÀÔ´Ï´Ù. ´ë¸Á(?)ÀÇ AJAX´Â ±× ´ÙÀ½ °­Á¿¡¼­ ´Ù·ç¾î º¼±î ÇÕ´Ï´Ù.

±× µ¿¾È ¸ðµÎ¸ðµÎ ÁÁÀº ÇÏ·ç µÇ¼¼¿ä.

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