24¸ö³£Ó÷½·¨ÓÐЧÓÅ»¯ASP.NETµÄÐÔÄÜÉÏ
|
¡¡1. Êý¾Ý¿â·ÃÎÊÐÔÄÜÓÅ»¯ ¡¡¡¡Êý¾Ý¿âµÄÁ¬½ÓºÍ¹Ø±Õ ¡¡¡¡·ÃÎÊÊý¾Ý¿â×ÊÔ´ÐèÒª´´½¨Á¬½Ó¡¢´ò¿ªÁ¬½ÓºÍ¹Ø±ÕÁ¬½Ó¼¸¸ö²Ù×÷¡£ÕâЩ¹ý³ÌÐèÒª¶à´ÎÓëÊý¾Ý¿â½»»»ÐÅÏ¢ÒÔͨ¹ýÉí·ÝÑéÖ¤£¬±È½ÏºÄ·Ñ·þÎñÆ÷×ÊÔ´¡£ASP.NETÖÐÌṩÁËÁ¬½Ó³Ø(Connection Pool)¸ÄÉÆ´ò¿ªºÍ¹Ø±ÕÊý¾Ý¿â¶ÔÐÔÄܵÄÓ°Ï졣ϵͳ½«Óû§µÄÊý¾Ý¿âÁ¬½Ó·ÅÔÚÁ¬½Ó³ØÖУ¬ÐèҪʱȡ³ö£¬¹Ø±ÕʱÊÕ»ØÁ¬½Ó£¬µÈ´ýÏÂÒ»´ÎµÄÁ¬½ÓÇëÇó¡£Á¬½Ó³ØµÄ´óСÊÇÓÐÏ޵ģ¬Èç¹ûÔÚÁ¬½Ó³Ø´ïµ½×î´óÏ޶ȺóÈÔÒªÇó´´½¨Á¬½Ó£¬±ØÈ»´ó´óÓ°ÏìÐÔÄÜ¡£Òò´Ë£¬ÔÚ½¨Á¢Êý¾Ý¿âÁ¬½ÓºóÖ»ÓÐÔÚÕæÕýÐèÒª²Ù×÷ʱ²Å´ò¿ªÁ¬½Ó£¬Ê¹ÓÃÍê±ÏºóÂíÉϹرգ¬´Ó¶ø¾¡Á¿¼õÉÙÊý¾Ý¿âÁ¬½Ó´ò¿ªµÄʱ¼ä£¬±ÜÃâ³öÏÖ³¬³öÁ¬½ÓÏÞÖÆµÄÇé¿ö¡£ ¡¡¡¡Ê¹Óô洢¹ý³Ì ¡¡¡¡´æ´¢¹ý³ÌÊÇ´æ´¢ÔÚ·þÎñÆ÷ÉϵÄÒ»×éÔ¤±àÒëµÄSQLÓï¾ä£¬ÀàËÆÓÚDOSϵͳÖеÄÅú´¦ÀíÎļþ¡£´æ´¢¹ý³Ì¾ßÓжÔÊý¾Ý¿âÁ¢¼´·ÃÎʵŦÄÜ£¬ÐÅÏ¢´¦Àí¼«ÎªÑ¸ËÙ¡£Ê¹Óô洢¹ý³Ì¿ÉÒÔ±ÜÃâ¶ÔÃüÁîµÄ¶à´Î±àÒ룬ÔÚÖ´ÐÐÒ»´ÎºóÆäÖ´Ðй滮¾ÍפÁôÔÚ¸ßËÙ»º´æÖУ¬ÒÔºóÐèҪʱֻÐèÖ±½Óµ÷Óûº´æÖеĶþ½øÖÆ´úÂë¼´¿É¡£ÁíÍ⣬´æ´¢¹ý³ÌÔÚ·þÎñÆ÷¶ËÔËÐУ¬¶ÀÁ¢ÓÚASP.NET³ÌÐò£¬±ãÓÚÐ޸ģ¬×îÖØÒªµÄÊÇËü¿ÉÒÔ¼õÉÙÊý¾Ý¿â²Ù×÷Óï¾äÔÚÍøÂçÖеĴ«Êä¡£ ¡¡¡¡ÓÅ»¯²éѯÓï¾ä ¡¡¡¡ASP.NETÖÐADOÁ¬½ÓÏûºÄµÄ×ÊÔ´Ï൱´ó£¬SQLÓï¾äÔËÐеÄʱ¼äÔ½³¤£¬Õ¼ÓÃϵͳ×ÊÔ´µÄʱ¼äÒ²Ô½³¤¡£Òò´Ë£¬¾¡Á¿Ê¹ÓÃÓÅ»¯¹ýµÄSQLÓï¾äÒÔ¼õÉÙÖ´ÐÐʱ¼ä¡£±ÈÈ磬²»ÔÚ²éѯÓï¾äÖаüº¬×Ó²éѯÓï¾ä£¬³ä·ÖÀûÓÃË÷ÒýµÈ¡£ ¡¡¡¡2. ×Ö·û´®²Ù×÷ÐÔÄÜÓÅ»¯ ¡¡¡¡Ê¹ÓÃÖµÀàÐ͵ÄToString·½·¨ ¡¡¡¡ÔÚÁ¬½Ó×Ö·û´®Ê±£¬¾³£Ê¹ÓÃ"+"ºÅÖ±½Ó½«Êý×ÖÌí¼Óµ½×Ö·û´®ÖС£ÕâÖÖ·½·¨ËäÈ»¼òµ¥£¬Ò²¿ÉÒԵõ½ÕýÈ·½á¹û£¬µ«ÊÇÓÉÓÚÉæ¼°µ½²»Í¬µÄÊý¾ÝÀàÐÍ£¬Êý×ÖÐèҪͨ¹ý×°Ïä²Ù×÷ת»¯ÎªÒýÓÃÀàÐͲſÉÒÔÌí¼Óµ½×Ö·û´®ÖС£µ«ÊÇ×°Ïä²Ù×÷¶ÔÐÔÄÜÓ°Ïì½Ï´ó£¬ÒòΪÔÚ½øÐÐÕâÀà´¦Àíʱ£¬½«ÔÚÍйܶÑÖзÖÅäÒ»¸öеĶÔÏó£¬ÔÓеÄÖµ¸´ÖƵ½Ð´´½¨µÄ¶ÔÏóÖС£Ê¹ÓÃÖµÀàÐ͵ÄToString·½·¨¿ÉÒÔ±ÜÃâ×°Ïä²Ù×÷£¬´Ó¶øÌá¸ßÓ¦ÓóÌÐòÐÔÄÜ ¡¡¡¡StringÀà¶ÔÏóÊDz»¿É¸Ä±äµÄ£¬¶ÔÓÚString¶ÔÏóµÄÖØÐ¸³ÖµÔÚ±¾ÖÊÉÏÊÇÖØÐ´´½¨ÁËÒ»¸öString¶ÔÏó²¢½«ÐÂÖµ¸³Óè¸Ã¶ÔÏ󣬯䷽·¨ToString¶ÔÐÔÄܵÄÌá¸ß²¢·ÇºÜÏÔ×Å¡£ÔÚ´¦Àí×Ö·û´®Ê±£¬×îºÃʹÓÃStringBuilderÀ࣬Æä.NET ÃüÃû¿Õ¼äÊÇSystem.Text¡£¸ÃÀಢ·Ç´´½¨ÐµĶÔÏ󣬶øÊÇͨ¹ýAppend£¬Remove£¬InsertµÈ·½·¨Ö±½Ó¶Ô×Ö·û´®½øÐвÙ×÷£¬Í¨¹ýToString·½·¨·µ»Ø²Ù×÷½á¹û¡£ ¡¡¡¡Æä¶¨Òå¼°²Ù×÷Óï¾äÈçÏÂËùʾ£º ¡¡¡¡int num; ¡¡¡¡System.Text.StringBuilder str = new System.Text.StringBuilder(); //´´½¨×Ö·û´® ¡¡¡¡str.Append(num.ToString()); //Ìí¼ÓÊýÖµnum ¡¡¡¡Response.Write(str.ToString); //ÏÔʾ²Ù×÷½á¹û3. ÓÅ»¯ Web ·þÎñÆ÷¼ÆËã»úºÍÌØ¶¨Ó¦ÓóÌÐòµÄÅäÖÃÎļþÒÔ·ûºÏÄúµÄÌØ¶¨ÐèÒª ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬ASP.NET ÅäÖñ»ÉèÖÃ³ÉÆôÓÃ×î¹ã·ºµÄ¹¦Äܲ¢¾¡Á¿ÊÊÓ¦×î³£¼ûµÄ·½°¸¡£Òò´Ë£¬Ó¦ÓóÌÐò¿ª·¢ÈËÔ±¿ÉÒÔ¸ù¾ÝÓ¦ÓóÌÐòËùʹÓõŦÄÜ£¬ÓÅ»¯ºÍ¸ü¸ÄÆäÖеÄijЩÅäÖã¬ÒÔÌá¸ßÓ¦ÓóÌÐòµÄÐÔÄÜ¡£ÏÂÃæµÄÁбíÊÇÄúÓ¦¸Ã¿¼ÂǵÄһЩѡÏî¡£ ¡¡¡¡½ö¶ÔÐèÒªµÄÓ¦ÓóÌÐòÆôÓÃÉí·ÝÑéÖ¤¡£ ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬Éí·ÝÑé֤ģʽΪ Windows£¬»ò¼¯³É NTLM¡£´ó¶àÊýÇé¿öÏ£¬¶ÔÓÚÐèÒªÉí·ÝÑéÖ¤µÄÓ¦ÓóÌÐò£¬×îºÃÔÚ Machine.config ÎļþÖнûÓÃÉí·ÝÑéÖ¤£¬²¢ÔÚ Web.config ÎļþÖÐÆôÓÃÉí·ÝÑéÖ¤¡£¸ù¾ÝÊʵ±µÄÇëÇóºÍÏìÓ¦±àÂëÉèÖÃÀ´ÅäÖÃÓ¦ÓóÌÐò¡£ASP.NET ĬÈϱàÂë¸ñʽΪ UTF-8¡£Èç¹ûÄúµÄÓ¦ÓóÌÐòΪÑϸñµÄ ASCII£¬ÇëÅäÖÃÓ¦ÓóÌÐòʹÓà ASCII ÒÔ»ñµÃÉÔÐíµÄÐÔÄÜÌá¸ß¡£ ¡¡¡¡¿¼ÂǶÔÓ¦ÓóÌÐò½ûÓà AutoEventWireup¡£ ¡¡¡¡ÔÚ Machine.config ÎļþÖн« AutoEventWireup ÊôÐÔÉèÖÃΪ false£¬Òâζ×ÅÒ³Ãæ²»½«·½·¨ÃûÓëʼþ½øÐÐÆ¥ÅäºÍ½«Á½Õß¹Ò¹³(ÀýÈç Page_Load)¡£Èç¹ûÒ³Ãæ¿ª·¢ÈËԱҪʹÓÃÕâЩʼþ£¬ÐèÒªÔÚ»ùÀàÖÐÖØÐ´ÕâЩ·½·¨(ÀýÈ磬ÐèÒªÎªÒ³Ãæ¼ÓÔØÊ¼þÖØÐ´ Page.OnLoad£¬¶ø²»ÊÇʹÓà Page_Load ·½·¨)¡£Èç¹û½ûÓà AutoEventWireup£¬Ò³Ã潫ͨ¹ý½«Ê¼þÁ¬½ÓÁô¸øÒ³Ãæ×÷Õß¶ø²»ÊÇ×Ô¶¯Ö´ÐÐËü£¬»ñµÃÉÔÐíµÄÐÔÄÜÌáÉý ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬·þÎñÆ÷¼ÆËã»úµÄ Machine.config ÎļþÖÐ ½ÚµãµÄËùÓй¦Äܾù±£ÁôΪ¼¤»î¡£¸ù¾ÝÓ¦ÓóÌÐòËùʹÓõŦÄÜ£¬Äú¿ÉÒÔ´ÓÇëÇó¹ÜÏßÖÐÒÆ³ý²»ÓõÄÄ£¿éÒÔ»ñµÃÉÔÐíµÄÐÔÄÜÌáÉý¡£¼ì²éÿ¸öÄ£¿é¼°Æä¹¦ÄÜ£¬²¢°´ÄúµÄÐèÒª×Ô¶¨ÒåËü¡£ÀýÈ磬Èç¹ûÄúÔÚÓ¦ÓóÌÐòÖв»Ê¹ÓûỰ״̬ºÍÊä³ö»º´æ£¬Ôò¿ÉÒÔ´Ó ÁбíÖÐÒÆ³ýËüÃÇ£¬ÒÔ±ãÇëÇóÔÚ²»Ö´ÐÐÆäËûÓÐÒâÒåµÄ´¦Àíʱ£¬²»±ØÖ´ÐÐÿ¸öÄ£¿éµÄ½øÈëºÍÀ뿪´úÂë¡£ ¡¡¡¡4. Ò»¶¨Òª½ûÓõ÷ÊÔģʽ ¡¡¡¡ÔÚ²¿ÊðÉú²úÓ¦ÓóÌÐò»ò½øÐÐÈκÎÐÔÄܲâÁ¿Ö®Ç°£¬Ê¼ÖÕ¼Çס½ûÓõ÷ÊÔģʽ¡£Èç¹ûÆôÓÃÁ˵÷ÊÔģʽ£¬Ó¦ÓóÌÐòµÄÐÔÄÜ¿ÉÄÜÊܵ½·Ç³£´óµÄÓ°Ïì¡£ ¡¡¡¡5. ¶ÔÓڹ㷺ÒÀÀµÍⲿ×ÊÔ´µÄÓ¦ÓóÌÐò£¬Ç뿼ÂÇÔÚ¶à´¦ÀíÆ÷¼ÆËã»úÉÏÆôÓÃÍøÂçÔ°ÒÕ ¡¡¡¡ASP.NET ½ø³ÌÄ£ÐͰïÖúÆôÓöദÀíÆ÷¼ÆËã»úÉϵĿÉËõ·ÅÐÔ£¬½«¹¤×÷·Ö·¢¸ø¶à¸ö½ø³Ì(ÿ¸öCPUÒ»¸ö)£¬²¢ÇÒÿ¸ö½ø³Ì¶¼½«´¦ÀíÆ÷¹ØÏµÉèÖÃΪÆä CPU¡£´Ë¼¼Êõ³ÆÎªÍøÂçÔ°ÒÕ¡£Èç¹ûÓ¦ÓóÌÐòʹÓýÏÂýµÄÊý¾Ý¿â·þÎñÆ÷»òµ÷ÓþßÓÐÍⲿÒÀÀµÏîµÄ COM ¶ÔÏó(ÕâÀïÖ»ÊÇÌá¼°Á½ÖÖ¿ÉÄÜÐÔ)£¬ÔòΪÄúµÄÓ¦ÓóÌÐòÆôÓÃÍøÂçÔ°ÒÕÊÇÓÐÒæµÄ¡£µ«ÊÇ£¬ÔÚ¾ö¶¨ÆôÓÃÍøÂçÔ°ÒÕ֮ǰ£¬ÄúÓ¦¸Ã²âÊÔÓ¦ÓóÌÐòÔÚÍøÂçÔ°ÖеÄÖ´ÐÐÇé¿ö¡£ ¡¡¡¡6. Ö»Òª¿ÉÄÜ£¬¾Í»º´æÊý¾ÝºÍÒ³Êä³ö ¡¡¡¡ASP.NET ÌṩÁËһЩ¼òµ¥µÄ»úÖÆ£¬ËüÃÇ»áÔÚ²»ÐèҪΪÿ¸öÒ³ÇëÇó¶¯Ì¬¼ÆËãÒ³Êä³ö»òÊý¾Ýʱ»º´æÕâЩҳÊä³ö»òÊý¾Ý¡£ÁíÍ⣬ͨ¹ýÉè¼ÆÒª½øÐлº´æµÄÒ³ºÍÊý¾ÝÇëÇó(ÌØ±ðÊÇÔÚÕ¾µãÖÐÔ¤ÆÚ½«ÓнϴóͨѶÁ¿µÄÇøÓò)£¬¿ÉÒÔÓÅ»¯ÕâЩҳµÄÐÔÄÜ¡£Óë .NET Framework µÄÈκΠWeb ´°Ì幦ÄÜÏà±È£¬Êʵ±µØÊ¹Óûº´æ¿ÉÒÔ¸üºÃµÄÌá¸ßÕ¾µãµÄÐÔÄÜ£¬ÓÐʱÕâÖÖÌá¸ßÊdz¬ÊýÁ¿¼¶µÄ¡£Ê¹Óà ASP.NET »º´æ»úÖÆÓÐÁ½µãÐèҪעÒâ¡£Ê×ÏÈ£¬²»Òª»º´æÌ«¶àÏî¡£»º´æÃ¿¸öÏî¾ùÓпªÏú£¬ÌرðÊÇÔÚÄÚ´æÊ¹Ó÷½Ãæ¡£²»Òª»º´æÈÝÒ×ÖØÐ¼ÆËãºÍºÜÉÙʹÓõÄÏî¡£Æä´Î£¬¸ø»º´æµÄÏî·ÖÅäµÄÓÐЧÆÚ²»ÒªÌ«¶Ì¡£ºÜ¿ìµ½ÆÚµÄÏî»áµ¼Ö»º´æÖв»±ØÒªµÄÖÜת£¬²¢ÇÒ¾³£µ¼Ö¸ü¶àµÄ´úÂëÇå³ýºÍÀ¬»ø»ØÊÕ¹¤×÷¡£Èô¹ØÐÄ´ËÎÊÌ⣬Çë¼àÊÓÓë ASP.NET Applications ÐÔÄܶÔÏó¹ØÁªµÄ Cache Total Turnover Rate ÐÔÄܼÆÊýÆ÷¡£¸ßÖÜתÂÊ¿ÉÄÜ˵Ã÷´æÔÚÎÊÌâ£¬ÌØ±ðÊǵ±ÏîÔÚµ½ÆÚǰ±»ÒƳýʱ¡£ÕâÒ²³Æ×÷ÄÚ´æÑ¹Á¦ ¡¡¡¡¸ù¾ÝÄúÑ¡ÔñÔÚ Web ´°ÌåÒ³ÏÔʾÊý¾ÝµÄ·½Ê½£¬ÔÚ±ãÀûºÍÐÔÄÜÖ®¼ä³£³£´æÔÚ×ÅÖØÒªµÄȨºâ¡£ÀýÈ磬DataGrid Web ·þÎñÆ÷¿Ø¼þ¿ÉÄÜÊÇÒ»ÖÖÏÔʾÊý¾ÝµÄ·½±ã¿ì½ÝµÄ·½·¨£¬µ«¾ÍÐÔÄܶøÑÔËüµÄ¿ªÏú³£³£ÊÇ×î´óµÄ¡£ÔÚijЩ¼òµ¥µÄÇé¿öÏ£¬Äúͨ¹ýÉú³ÉÊʵ±µÄ HTML ×Ô¼º³ÊÏÖÊý¾Ý¿ÉÄܺÜÓÐЧ£¬µ«ÊÇ×Ô¶¨ÒåºÍä¯ÀÀÆ÷¶¨Ïò»áºÜ¿ìµÖÏúËù»ñµÃµÄ¶îÍ⹦Ч¡£Repeater Web ·þÎñÆ÷¿Ø¼þÊDZãÀûºÍÐÔÄܵÄÕÛÖÔ¡£Ëü¸ßЧ¡¢¿É×Ô¶¨ÒåÇҿɱà³Ì¡£ ¡¡¡¡8. ½« SqlDataReader ÀàÓÃÓÚ¿ìËÙÖ»½øÊý¾ÝÓÎ±ê ¡¡¡¡SqlDataReader ÀàÌṩÁËÒ»ÖÖ¶ÁÈ¡´Ó SQL Server Êý¾Ý¿â¼ìË÷µÄÖ»½øÊý¾ÝÁ÷µÄ·½·¨¡£Èç¹ûµ±´´½¨ ASP.NET Ó¦ÓóÌÐòʱ³öÏÖÔÊÐíÄúʹÓÃËüµÄÇé¿ö£¬Ôò SqlDataReader ÀàÌṩ±È DataSet Àà¸ü¸ßµÄÐÔÄÜ¡£Çé¿öÖ®ËùÒÔÕâÑù£¬ÊÇÒòΪ SqlDataReader ʹÓà SQL Server µÄ±¾»úÍøÂçÊý¾Ý´«Êä¸ñʽ´ÓÊý¾Ý¿âÁ¬½ÓÖ±½Ó¶ÁÈ¡Êý¾Ý¡£ÁíÍ⣬SqlDataReader ÀàʵÏÖ IEnumerable ½Ó¿Ú£¬¸Ã½Ó¿ÚÒ²ÔÊÐíÄú½«Êý¾Ý°ó¶¨µ½·þÎñÆ÷¿Ø¼þ¡£Óйظü¶àÐÅÏ¢£¬Çë²Î¼û SqlDataReader Àà¡£ÓÐ¹Ø ASP.NET ÈçºÎ·ÃÎÊÊý¾ÝµÄÐÅÏ¢£¬Çë²Î¼ûͨ¹ý ASP.NET ·ÃÎÊÊý¾Ý¡£ ¡¡¡¡9. ½« SQL Server ´æ´¢¹ý³ÌÓÃÓÚÊý¾Ý·ÃÎÊ ¡¡¡¡ÔÚ .NET Framework ÌṩµÄËùÓÐÊý¾Ý·ÃÎÊ·½·¨ÖУ¬»ùÓÚ SQL Server µÄÊý¾Ý·ÃÎÊÊÇÉú³É¸ßÐÔÄÜ¡¢¿ÉËõ·Å Web Ó¦ÓóÌÐòµÄÍÆ¼öÑ¡Ôñ¡£Ê¹ÓÃÍÐ¹Ü SQL Server Ìṩ³ÌÐòʱ£¬¿Éͨ¹ýʹÓñàÒëµÄ´æ´¢¹ý³Ì¶ø²»ÊÇÌØÊâ²éѯ»ñµÃ¶îÍâµÄÐÔÄÜÌá¸ß¡£ ¡¡¡¡10. ±ÜÃâµ¥Ï̵߳¥Ôª (STA) COM ×é¼þ ¡¡¡¡Ä¬ÈÏÇé¿öÏ£¬ASP.NET ²»ÔÊÐíÈκΠSTA COM ×é¼þÔÚÒ³ÃæÄÚÔËÐС£ÈôÒªÔËÐÐËüÃÇ£¬±ØÐëÔÚ .aspx ÎļþÄÚ½« ASPCompat=true ÊôÐÔ°üº¬ÔÚ @ Page Ö¸ÁîÖС£ÕâÑù¾Í½«Ö´ÐÐÓõÄÏ̳߳ØÇл»µ½ STA Ï̳߳أ¬¶øÇÒʹ HttpContext ºÍÆäËûÄÚÖöÔÏó¿ÉÓÃÓÚ COM ¶ÔÏó¡£Ç°ÕßÒ²ÊÇÒ»ÖÖÐÔÄÜÓÅ»¯£¬ÒòΪËü±ÜÃâÁ˽«¶àÏ̵߳¥Ôª (MTA) ·âË͵½ STA Ï̵߳ÄÈκε÷Óá£Ê¹Óà STA COM ×é¼þ¿ÉÄÜ´ó´óËðº¦ÐÔÄÜ£¬Ó¦¾¡Á¿±ÜÃâ¡£Èô±ØÐëʹÓà STA COM ×é¼þ£¬ÈçÔÚÈκΠinterop ·½°¸ÖУ¬ÔòÓ¦ÔÚÖ´ÐÐÆÚ¼ä½øÐдóÁ¿µ÷Óò¢ÔÚÿ´Îµ÷ÓÃÆÚ¼ä·¢Ë;¡¿ÉÄܶàµÄÐÅÏ¢¡£ÁíÍ⣬СÐIJ»ÒªÔÚ¹¹ÔìÒ³ÃæÆÚ¼ä´´½¨ÈκΠSTA COM ×é¼þ¡£ÀýÈçÏÂÃæµÄ´úÂëÖУ¬ÔÚÒ³Ãæ¹¹Ôìʱ½«ÊµÀý»¯ÓÉij¸öÏ̴߳´½¨µÄ MySTAComponent£¬¶ø¸ÃÏ̲߳¢²»Êǽ«ÔËÐÐÒ³ÃæµÄ STA Ï̡߳£Õâ¿ÉÄܶÔÐÔÄÜÓв»ÀûÓ°Ï죬ÒòΪҪ¹¹ÔìÒ³Ãæ¾Í±ØÐëÍê³É MTA ºÍ STA Ïß³ÌÖ®¼äµÄ·âËÍ´¦Àí Ô´´úÂëÍø¹©¸å. |
