Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÖÐСÐÍÑз¢ÍŶӼܹ¹Êµ¼ù£ºÎ¢·þÎñ¼Ü¹¹
 
  6232  次浏览      33
 2018-1-11 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚÑîÀö¡¢ÕÅ»ÔÇ壬±¾ÎÄÖØµã½²ÁË΢·þÎñ¼Ü¹¹MSA ¿ò¼Ü¡¢ÊµÏּܹ¹¡¢Ê¹Óá¢Î¢·þÎñÖÎÀí¡¢Î¢·þÎñÍø¹Ø API GatewayµÈµÈ¡£

Ò»¡¢MSA ¼ò½é

1.1¡¢MSA ÊÇʲô

΢·þÎñ¼Ü¹¹ MSA ÊÇ Microservice Architect µÄ¼ò³Æ£¬ËüÊÇÒ»Öּܹ¹Ä£Ê½£¬ËüÌᳫ½«µ¥Ò»Ó¦ÓóÌÐò»®·Ö³ÉÒ»×éСµÄ·þÎñ£¬·þÎñÖ®¼ä»¥ÏàͨѶ¡¢»¥ÏàÅäºÏ£¬ÎªÓû§Ìṩ×îÖÕ¼ÛÖµ¡£ËüÓë SOA Ö®¼äµÄÇø±ðÈçÏ£º

1.2¡¢ÎÒÃÇµÄ MSA ¿ò¼Ü

ÎÒÃǵÄ΢·þÎñ¿ò¼Ü MsaFx.dll ÊǸö»ùÓÚ ServiceStack 4.0.60 °üװʵÏÖµÄ.NET Web Services ¿ò¼Ü£¬¶ø ServiceStack ±¾ÉíÖ§³ÖͨÓõÄÇáÁ¿¼¶Ð­ÒéºÍ Metadata¡£MsaFx ÓëÆÕͨ Web Services ¿ò¼ÜÈç WCF Ïà±È£¬Ö÷ÒªÓÅÊÆÈçÏ£º

  1. ¸ßÐÔÄÜ£ºÐÔÄܺá¢Ëٶȿ졣
  2. Ö§³Ö¿çƽ̨ÔËÐУº»ùÓÚ MsaFx ¿ª·¢³öµÄ Web Services ¼ÈÄܹ»ÔËÐÐÔÚ Windows »·¾³ÖУ¬ÓÖÄܹ»ÔËÐÐÔÚÖ§³Ö Mono µÄ Linux »·¾³ÖС£
  3. Ö§³Ö¶àЭÒ飺Èç JSON ¸ñʽµÄÒ²Ö§³Ö XSD¡£
  4. ¸ü¼Ó Web »¯£ºRESTful¡£
  5. ·þÎñ¶ËʵÏÖÓë¿Í»§¶ËʵÏÖµÄÍêÈ«½âñMSA »ùÓÚÏûÏ¢µÄÉè¼Æ£¬Ê¹µÃ·þÎñ¶ËµÄ API ¸Ä±ä²¢²»»áÆÆ»µÏÖÓеĿͻ§¶Ë£¬´ïµ½·þÎñ¶ËʵÏÖÓë¿Í»§¶ËʵÏÖÍêÈ«½âñîµÄÄ¿µÄ¡£
  6. MSA API ¿ÉÊÓ»¯ËµÃ÷Îĵµ±ãÓÚÄãµ÷ÊÔ¡£
  7. Ò×ѧ£ºÊ¹Óà MSA ½øÐпª·¢ºÍά»¤·þÎñËùÐèµÄ¼¼ÊõºÍʱ¼äͶÈëҪСºÜ¶à¡£
  8. Ò×Ó㺼ò»¯ÁË REST ÒÔ¼° WCF SOAP ·ç¸ñµÄ Web Services µÄ¿ª·¢¹ý³Ì¡£

1.3¡¢MSA ¿ò¼ÜʵÏּܹ¹

MSA ·þÎñ¶ËµÄ¼Ü¹¹Çë¼ûÏÂͼµÄµÚÒ»ÕÅͼ£¬MSA µÄ HTTP ¿Í»§¶Ë¼Ü¹¹Çë¼ûÏÂͼµÄµÚ¶þÕÅͼ¡£MSA µÄÄÚ²¿Êǽ¨Á¢ÔÚÔ­ÉúµÄ ASP.NET IHttpHandler Ö®ÉÏʵÏֵģ¬Ö§³Ö JSON¡¢XML¡¢JSV¡¢HTML¡¢Message Pack¡¢ProtoBuf¡¢CSV µÈÏûÏ¢¸ñʽ¡£

MSA ·þÎñ¶ËµÄ¼Ü¹¹

MSA HTTP Client µÄ¼Ü¹¹

¶þ¡¢MSA ¿ò¼ÜµÄʹÓÃ

1¡¢·þÎñÍйÜ

·þÎñ¶ËµÄ·þÎñ¶ÔÍâÌṩ·þÎñǰ£¬±ØÐëÏÈÒª°Ñ·þÎñ¶Ë¸øÍÐ¹ÜÆðÀ´¡£MSA ÌṩÁËͨ¹ý IIS¡¢Self-Host µÈ¶àÖÖÐÎʽ°Ñ·þÎñ¶Ë¸øÍÐ¹ÜÆðÀ´£¬ËÞÖ÷»·¾³¿ÉÒÔÊÇ¿ØÖÆÌ¨Ó¦Óûò Windows Service »ò ASP.NET Web Ó¦Óûò ASP.NET MVC Ó¦Óá£ÌṩµÄ MSA Demo µÄËÞÖ÷»·¾³ÓõÄÊÇ ASP.NET Web Ó¦Óá£

2¡¢ ·ÓÉ

A¡¢MSA ×ÔÉíÌṩµÄĬÈÏ·ÓÉÊÇ£º

/[xml|json|html|jsv|csv]/[reply|oneway]/[Request DTO Ãû] [(?query ²ÎÊý 1={Öµ}&query ²ÎÊý 2={Öµ}&......&query ²ÎÊý n={Öµ})]¡£

B¡¢´´½¨×Ô¶¨Òå·ÓÉ£¬Æä´´½¨·½·¨ÊÇ£ºÊ¹Óà RouteAttribute »òÔÚËÞÖ÷»·¾³ÖÐÅäÖá£ÌṩµÄ MSA Demo ²ÉÓõÄÊÇÔÚËÞÖ÷»·¾³ÖÐÅäÖ÷ÓÉÕâÖÖ·½Ê½À´´´½¨×Ô¶¨Òå·ÓÉ¡£

3¡¢ÈçºÎÑéÖ¤ÇëÇó²ÎÊýµÄºÏ·¨ÐÔ

Èç¹ûÄãÐèÒªÔÚÌá½»ÇëÇó²ÎÊýǰ£¬ÑéÖ¤ÇëÇó²ÎÊýÊÇ·ñ±ØÌî»òÊÇ·ñºÏ·¨£¬ÄÇôÑéÖ¤Âß¼­±ØÐëдÔڼ̳Ð×Ô MSA µÄ AbstractValidatorµÄÀàÀ²Î¿¼Àý×ÓÇë¼û MSA Demo µÄ OrderValidator.cs£©£¬È»ºóÔÚËÞÖ÷»·¾³ÖнøÐпªÆôÑéÖ¤µÄÅäÖãº

Plugins.Add(new ValidationFeature()); container.RegisterValidator(typeof(OrderValidator));

4¡¢·þÎñ

´´½¨ MSA ·þÎñʱ£¬±ØÐë¼Ì³ÐÀ´×Ô MSA µÄ Service Àà¡£

5¡¢MSA ÄÚÖõĿͻ§¶Ë

5.1¡¢MSA ÄÚÖÃÁËһЩ±ã½Ý·ÃÎʵĿͻ§¶Ë£¬ÕâЩ¶ÔÏó¶¼ÊµÏÖÁË IServiceClient ½Ó¿Ú£¬ÆäÖÐÖ§³Ö REST µÄ¿Í»§¶Ë»¹¶¼ÊµÏÖÁË IRestClient ½Ó¿Ú¡£

ÕâЩ¿Í»§¶Ë¶ÔÏó°üÀ¨£ºJsonServiceClient¡¢JsvServiceClient¡¢XmlServiceClient¡¢MsgPackServiceClient¡¢ProtoBufServiceClient¡¢Soap11ServiceClient¡¢Soap12ServiceClient µÈ¡£

´ÓÃû³Æ¿ÉÒÔ¿´³ö£¬Õ⼸ÖÖ²»Í¬Ö®´¦ÔÚÓÚÖ§³ÖµÄÐòÁл¯ºÍ·´ÐòÁл¯¸ñʽ²»Í¬¡£ÒòΪËüÃÇʵÏÖµÄÊÇÏàͬµÄ½Ó¿Ú£¬ËùÒÔËüÃǵÄÓ÷¨Ïàͬ£¬Ò²¿ÉÒÔÏà»¥Ìæ»»¡£

MSA Demo ÖÐÓõ½ÁË JsonServiceClient ºÍ ProtoBufServiceClient ÕâÁ½ÖÖ¿Í»§¶Ë£¬ÆäÖе±Óõ½ ProtoBufServiceClient ¿Í»§¶Ëʱ£¬Ä㻹ÐèÒªÍê³ÉÈçϹ¤×÷£º

a¡¢³ýÁËÐèÒªÒýÓà MSA.dll Í⣬»¹ÐèÒªÒýÓà protobuf-net.dll¡£

b¡¢ÐèÒªÔÚËÞÖ÷»·¾³ÖнøÐÐÈçÏÂÅäÖãº

Plugins.Add(new ProtoBufFormat());

c¡¢±ØÐë·Ö±ð¸ø Request DTO ¶ÔÏóºÍ Response DTO ¶ÔÏóµÄ¸÷ÊôÐÔ±êÉÏ [DataMember(Order = {0})] ÌØÐÔ£¬¾ßÌåд·¨Çë¼û MSA Demo µÄ ProductRequestDTO.cs ºÍ ProductResponseDTO.cs¡£

5.2¡¢MSA ÄÚÖõĿͻ§¶ËÌṩ Get¡¢Send¡¢Post¡¢Put¡¢Delete µÈ·½·¨¡£²éѯÊý¾ÝÒ»°ãÓà Get ·½·¨£¬ÐÂÔö²Ù×÷Ò»°ãÓà Post ·½·¨£¬¸üвÙ×÷Ò»°ãÓà Put ·½·¨£¬É¾³ý²Ù×÷Ò»°ãÓà Delete ·½·¨¡£ÕâЩ·½·¨¶¼ÓÐÖØÔØ¡£

ÒÔÏÂÊÇ Get ·½·¨µÄÆäÖÐÒ»¸öÇ©Ãû£º

TResponse Get<TResponse>(IReturn<TResponse> requestDto);

6¡¢MSA API ¿ÉÊÓ»¯ËµÃ÷Îĵµ×Ô¶¯Éú³ÉµÄʵÏÖ

ÔÚËÞÖ÷»·¾³ÖмÓÈçÏÂÅäÖãº

Plugins.Add(new SwaggerFeature());

Èç¹ûÐèÒªÔÚ MSA API ¿ÉÊÓ»¯ËµÃ÷ÎĵµÖÐÄܹ»¿´µ½¸÷ÇëÇó²ÎÊý¡¢ÏìÓ¦µÄº¬Òå˵Ã÷£¬ÄÇôÐèҪΪ Request DTO¡¢Response DTO ¶ÔÏóµÄ¸÷ÊôÐÔ±êÉÏ ApiMember£¬´úÂë²Î¿¼ÈçÏ£º

public class OrderRequest : IReturn<OrderResponse>
{
[ApiMember(Name = "Id", Description = "¶©µ¥ ID ºÅ", IsRequired = false)]
public int Id { get; set; }
[ApiMember(Name = "CustomerName", Description = "¿Í»§Ãû", IsRequired = false)]
public string CustomerName { get; set; }
//......
[ApiMember(Name = "OrderItemList", Description = "¶©¹ºµÄ²úÆ·Áбí", IsRequired = false)]
public List<OrderItem> OrderItemList { get; set; }
}

ÔËÐнá¹ûÈçÏÂͼËùʾ£º

ÔÚ MSA API ¿ÉÊÓ»¯ËµÃ÷ÎĵµÖÐÏÔʾ¸÷ÇëÇó²ÎÊý¡¢ÏìÓ¦µÄº¬Òå˵Ã÷

7¡¢ÔËÐнá¹û

ÏÈÔËÐÐÍйÜÓ¦Óã¨Èç MSA Demo ÖÐ ServiceHost ÏîÄ¿£©£¬³öÏÖÏÂͼËùʾµÄ Metadata Ò³¡£È»ºóÔÙÔËÐпͻ§¶ËÀ´µ÷ÓÃ΢·þÎñ£»Ò²¿Éͨ¹ýä¯ÀÀÆ÷²é¿´Êý¾Ý£¬ÍøÖ·ÊäÈë¸ñʽÈ磺

http://localhost:34833/orders/1.html?CustomerName= ¿Í»§ _1&IsTakeAway=true&StatusCode=1&CreatedDate=2017-08-21 10:58:48.230

»ò£º

http://localhost:34833/html/reply/GetOrderRequest?Id=1&CustomerName= ¿Í»§ _1&IsTakeAway=true&StatusCode=1&CreatedDate=2017-08-21 10:58:48.230

ÆäÖУ¬µÚ 1 ¸öÍøÖ·¸ñʽ¹æÔò¾ÍÊÇ MSA Demo ÖÐÔÚËÞÖ÷»·¾³ÖÐËùÅäµÄ×Ô¶¨Òå·ÓɹæÔò£¬µÚ 2 ¸öÍøÖ·¸ñʽ¹æÔò¾ÍÊÇÓÉ MSA ÌṩµÄĬÈÏ·ÓɹæÔò¡£

µ¥»÷ÏÂͼËùʾ Metadata Ò³Öеġ¾MSA API UI¡¿ºó£¬½øÈëÏÂͼËùʾµÄ MSA API ¿ÉÊÓ»¯ËµÃ÷Îĵµ½çÃæ£¬¿ª·¢ÈËÔ±¿ÉÒÔͨ¹ýÕâ·ÝÓÉ MSA ×Ô¶¯Éú³ÉµÄ˵Ã÷Îĵµ½øÐе÷ÊÔ£¬Ê®·Ö·½±ã¡£

Metadata Ò³

MSA API ¿ÉÊÓ»¯ËµÃ÷Îĵµ½çÃæ

Èý¡¢Î¢·þÎñÖÎÀí

ÔÚÎÒÃÇ×ÔÖ÷¿ª·¢µÄ¿ò¼Ü¹ÜÀíϵͳÖУ¬½øÐнӿÚ×¢²á£¬Çë¼ûÏÂͼ¡£ÆäÖУ¬¹æ¶¨ÄÚ²¿·þÎñ·ÃÎÊÃûµÄÃüÃû¹æ·¶ÊÇ£º/{***Service}/ ·½·¨Ãû£¬Èç /OrderService/CreateOrder£»¹æ¶¨Íⲿ·þÎñ·ÃÎÊÃû OpenApiName µÄÃüÃû¹æ·¶ÊÇ£º{¸÷²úÆ·ÏßµÄËõдӢÎÄÃû}·½·¨Ãû£¬Èç FltCreateOrder£¬ÆäÖÐ Flt ±íʾ¹úÄÚ»úƱҵÎñµÄËõдӢÎÄÃû¡£

MSA ½Ó¿Ú×¢²áÒ³

ËÄ¡¢Î¢·þÎñÍø¹Ø API Gateway

4.1¡¢API Gateway µÄ¼ò½é

API Gateway ·ç¸ñµÄºËÐÄÀíÄîÊÇʹÓÃÒ»¸öÇáÁ¿¼¶µÄÏûÏ¢Íø¹Ø×÷ΪËùÓпͻ§¶ËµÄÖ÷Èë¿Ú£¬²¢ÇÒÔÚ API Gateway ²ãÃæÉÏʵÏÖͨÓõķǹ¦ÄÜÐÔÐèÇó¡£ÈçÏÂͼËùʾ£ºËùÓеķþÎñͨ¹ý API Íø¹ØÀ´±©Â¶£¬ÕâÊÇËùÓпͻ§¶Ë·ÃÎʵÄΨһÈë¿Ú£»Èç¹ûÒ»¸ö·þÎñÒª·ÃÎÊÁíÒ»¸ö·þÎñ£¬Ò²ÒªÍ¨¹ýÕâ¸öÍø¹Ø¡£

ËùÓзþÎñͨ¹ýÒ»¸ö API Íø¹ØÀ´±©Â¶

Ò»µ© API Íø¹ØÔÊÐí¿Í»§¶ËÏû·ÑÒ»¸öÊܹÜÀíµÄ API£¬ÄÇôÎÒÃǾͿÉÒÔÒÔÊܹÜÀíµÄ API ÐÎʽʹÓÃËüÀ´±©Â¶Õâ¸ö΢·þÎñËùʵÏÖµÄÒµÎñÂß¼­¡£API Íø¹ØÒÔ NIO¡¢IOCP À´Á¬½ÓÄÚ²¿ÊܹÜÀíµÄ API£¬ÒÔʵÏÖ API Íø¹ØµÄ¸ß²¢·¢¡£

4.2¡¢API Gateway µÄÓŵã

  • ÍøÂç¸ôÀ룺΢·þÎñ²¿ÊðÔÚÁËÄÚÍø£¬Í¨¹ý API Gateway ¿ª·Å¸ø PartnerAPI¡¢WebAPI »ò MobileAPI¡£
  • ÔÚÍø¹Ø²ãÃæµÄÇáÁ¿¼¶ÏûϢ·ÓɺÍת»»¡£
  • ÔÚÍø¹Ø²ãÃæ¶Ô´æÔÚµÄ΢·þÎñÌṩ±ØÒªµÄ³éÏó¡£ÀýÈç£¬Íø¹Ø¿ÉÒÔÑ¡Ôñ¶Ô²»Í¬µÄÓû§±©Â¶²»Í¬µÄ API¡£
  • Ò»¸öÖÐÐĵĵط½Ìṩ·Ç¹¦ÄÜÐÔµÄÄÜÁ¦£¬ÕâЩÄÜÁ¦¿É¸´Ó㬠±ÈÈ糬ʱ¡¢ÏÞÁ÷¡¢ÈÛ¶Ï¡¢¼à¿Ø¡¢ÈÕÖ¾¼Ç¼µÈ¡£
  • ͨ¹ýÊÊÓà API Íø¹ØÄ£Ê½£¬Î¢·þÎñ¿ÉÒÔ±äµÃ¸ü¼ÓÇáÁ¿£¬ÒòΪ·Ç¹¦ÄÜÐÔÐèÇó¶¼ÔÚÍø¹ØÉÏʵÏÖÁË¡£
  • ͳһ°²È«¹Ü¿Ø¡£

4.3¡¢API Gateway µÄ¼Ü¹¹

4.4¡¢API Gateway µÄ¹¦ÄÜ

API Gateway Ö÷ҪʵÏÖÒÔϹ¦ÄÜ£º

  1. ·ÓÉÓ³É䣺Íⲿ·þÎñ·ÃÎÊÃûÓ³Éäµ½¶ÔÓ¦µÄÄÚ²¿·þÎñ·ÃÎÊÃû¡£
  2. ȨÏÞÑéÖ¤£º°üÀ¨Õë¶Ô¿Í»§½ÇÉ«µÄ·ÃÎÊÊÚȨÑéÖ¤¡¢Õë¶Ô¿Í»§µÄ·ÃÎÊÊÚȨÑéÖ¤¡¢IP ºÚÃûµ¥ÑéÖ¤¡£
  3. ³¬Ê±´¦Àí£ºµ± API Íø¹Øµ÷ÓõÄÄÚ²¿·þÎñÏìӦʱ¼ä³¬¹ýÁËÔÚ×ÔÖ÷¿ª·¢µÄ API Íø¹Øºǫ́¹ÜÀí×ÓϵͳÖÐËùÉèÖõÄÔÊÐí×µÄ³¬Ê±Ê±¼äʱ£¬API Íø¹Ø»áÁ¢¼´Í£Ö¹µ÷Ó㬲¢·µ»ØÏà¹ØÏûÏ¢¸øÄã¡£
  4. ÏÞÁ÷¿ØÖÆ£ºµ±Äãͨ¹ý API Íø¹Øµ÷ÓÃÄÚ²¿·þÎñµÄƵÂÊ´ïµ½ÔÚij¸öãÐֵʱ£¬API Íø¹Ø»áÁ¢¼´×ö¶Ï¿ªÁ´Â·´¦Àí¡£¹ýÁËʱ¼äºó£¬Á´Â·»á×Ô¶¯±ÕºÏ»ØÈ¥¡£
  5. ÈÛ¶Ï´¦Àí£ºÈÛ¶Ï´¦Àí¶Ô±ÜÃâÎÞνµÄ×ÊÔ´ÏûºÄÌØ±ðÓÐÓ㬵±Í¨¹ý API Íø¹Øµ÷ÓõÄÄÚ²¿·þÎñ³öÏÖÒì³£µÄƵÂʴﵽij¸öãÐֵʱ£¬ÄÇô API Íø¹Ø»á×öÁÙʱÈÛ¶Ï´¦Àí¼´ÁÙʱ¶Ï¿ªÁ´Â·£¬ÔÝʱֹͣÄã¶ÔÄǸöÄÚ²¿·þÎñµÄµ÷Óá£ÁÙʱÈ۶Ϻ󣬹ýÁËÒ»¶Îʱ¼äºó£¬Á´Â·»á×Ô¶¯±ÕºÏ»ØÈ¥¡£
  6. ÈÕÖ¾ÐÅÏ¢¼Ç¼£º»á¼Ç¼¿Í»§ IP¡¢¿Í»§ÇëÇó²ÎÊý¡¢·µ»Ø½á¹û¡¢Òì³£ÐÅÏ¢µÈÐÅÏ¢¡£

4.5¡¢API Gateway µÄʹÓÃ

ÔÚʹÓà API Gateway ֮ǰ£¬ÐèÒªÏÈÅäÖÃÍø¹Ø²ÎÊý¡£Íø¹Ø²ÎÊýµÄÅäÖÃÊÇÔÚ×ÔÖ÷¿ª·¢µÄ API Íø¹Øºǫ́¹ÜÀí×ÓϵͳÖнøÐУº

ÔÚ×ÔÖ÷¿ª·¢µÄ API Íø¹Øºǫ́¹ÜÀí×ÓϵͳÖÐÅäÖÃÍø¹Ø²ÎÊý

Îå¡¢Demo ÏÂÔØ¼°¸ü¶à×ÊÁÏ

  • MSADemo ÏÂÔØµØÖ·£ºhttps://github.com/das2017/MSADemo
  • APIGatewayDemo ÏÂÔØµØÖ·£ºhttps://github.com/das2017/ApiGatewayDemo
  • ServiceStack ¹ÙÍø£ºhttps://servicestack.net/
   
6232 ´Îä¯ÀÀ       33
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù