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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
´Ó°ÑÈýǧÐдúÂëÖØ¹¹³É15ÐдúÂë̸Æð
 
×÷ÕߣºÂí·ÇÂë À´Ô´£º²©¿ÍÔ°   ·¢²¼ÓÚ 2015-02-11
  3155  次浏览      27
 

Èç¹ûÄãÈÏΪÕâÊÇÒ»¸ö±êÌâµ³£¬ÄÇôÎÒÕæ³ÏµÄ¿ÒÇëÄãÄÍÐĵİÑÎÄÕµĵÚÒ»²¿·Ö¶ÁÍ꣬ȻºóÔÙϽáÂÛ¡£Èç¹ûÄãÈÏΪÄܹ»´ÁÖÐÄúµÄGµã£¬ÄÇôÇëËæÊÖµã¸öÔÞ¡£

°ÑÈýǧÐдúÂëÖØ¹¹Îª15ÐÐ

ÄÇÄêÎÒ¸Õ±ÏÒµ£¬½øÁËÏÖÔÚÕâ¸ö¹«Ë¾¡£¹«Ë¾ÊǸãÊý¾ÝÖÐÐÄ»·¾³¼à¿ØµÄ£¬ÀïÃæ³ä³â×ÅǶÈëʽ¡¢¾«Ãܿյ÷¡¢×ÜÏß¡¢RFIDµÄ¸ÅÄÎÒÒ»¸ö¶¼²»¶®¡£»¹ºÃ£¬¹«Ë¾Ö®Ç°ÓÃDelphiдµÄÀϿͻ§¶ËÒòΪ̫Âý£¬È»ºó¾Í¸ãÁ˸öWebformµÄÌæ´ú£¬Ç¡ºÃÎÒ¶ÔAsp.Net»¹ËãÁ˽⣬ÎÒ¶ÔÒµÎñµÄ²»Á˽Ⲣ²»·Á°­ÎҳƳÉΪÕâ¸ö¹«Ë¾µÄÒ»¸ö³ÌÐòÔ±¡£Ð¡¹«Ë¾Ò²ÓÐС¹«Ë¾µÄºÃ£¬ÈËÉÙ£¬½øÈ¥ºÜ¿ì¸ºÔð´úÂ뿪·¢¡£ÎÒµ±È»Ò²¾Í¸ãÕâ¸öÊý¾ÝÖÐÐÄÖÇÄܹÜÀíϵͳÀ²¡£

Õâ¸öϵͳ·Ç³£µÄÅÓ´ó£¬ÓÈÆäÅ£±ÆµÄÊÇÖ§³Ö¿Í»§¶Ë×é̬£¬È»ºó¶¯Ì¬Éú³ÉÍøÒ³£¬Êý¾Ý»¹ÄÜͨ¹ýSocketʵʱ¼à¿Ø(ÄÇʱÎÒ»¹Õæ¾Í²»¶®ÍøÂç±à³Ì)¡£Õâ¸ö¶ÔÓÚµ±Ê±µÄÎÒÀ´Ëµ£¬ÕæÕæÊǸߡ¢´ó¡¢ÉÏÄÅ£¡£¡µ±Ê±¸ú×ÅÁ˽âÕû¸öϵͳ´ó°ë¸öÔ²ÅËãÄܹ»µ÷ÊÔ£¬Ð´Ò»Ð©¼òµ¥µÄÒ³Ãæ¡£

ÔÚά»¤ÏµÍ³µÄ¹ý³ÌÖУ¬Ê±²»Ê±ÒªÀ©Õ¹Ò»Ð©¹¦ÄÜ£¬Ò²¾Í½Ó´¥ÁËÏÂÃæÕâ¸öÀࣺ

¿´µ½Ã»ÓУ¬¾ÍÊǵ±Äê×î×îÁ÷ÐеÄÈý²ã¼Ü¹¹µÄ²úÎ¶ÔÓÚ¸Õ³ö鮵ÄëͷС×ÓÀ´Ëµ£¬ÕâÊǶàôרҵµÄÎļþÍ·×¢ÊÍ£¬»¹Óз´ÉäÒ²¾ÍËãÁË£¬Õâ¹¹Ô캯Êý»¹Äܾ²Ì¬µÄ£¬»¹ÄÜ˽Óеģ¿ÄÇʱ¸Õ½Ó´¥Õâô¸ß´óÉϵĴúÂëµÄÎÒ£¬Ë²¼ä¸ø¹òÁË£¡

µ«ÊÇ£¬Ààд¶àÁË£¬ÎҾ͸оõÔ½À´Ô½±ðŤ£¬¾ÍÊÇÏÂÃæÕâ¶Î´úÂ룺

ÿÔö¼ÓÒ»¸ö±í£¬³ýÁËÒª¸Ä½Ó¿Ú¡¢Òª¸ÄDAL¡¢Òª¸ÄBLLÖ®Í⣬»¹µÃÔÚÕâ¸ö¹¤³§ÀàÌí¼ÓÒ»¸ö·½·¨£¬ÕæÕæÊÇÀÛµ½ÊÖ³é½î£¬¼´Ê¹Óе±Ê±¹«Ë¾Á˵ÄG¹¤¸øÎÒÍÆ¼öµÄÉñÆ÷¡ª¡ª¶¯Èí´úÂëÉú³ÉÆ÷£¬ÕâÕ³Ìù¸´ÖƵļ¸±é£¬Ò²ÊÇÈÃÎҸоõµ½Òì³£·±Ëö£¬ÓÐʱºò´ò¼üÅÌÉÔ΢ÀÛÁ˵㣬»¹°Ñ¸´ÖƳöÀ´´úÂë¸Ä´íÁË£¬ÄãÃõģ¬ÄѵÀÕâ¾ÍÊdzÌÐòÔ±¸Ã¸ÉµÄÊÂÇ飬²»£¬¾ø¶Ô²»ÊÇ£¡ÎÒÏëÆðÁËÒ»¾äÖÁÀíÃûÑÔ£ºµ±Äã¾õµÃ´úÂëÖØ¸´³öÏÖÔÚ³ÌÐòÖеÄʱºò£¬¾ÍÓ¦¸ÃÖØ¹¹ÁË¡£Êǵģ¬ÔÚÕâ¾ä»°µÄÖ¸µ¼Ï£¬ÎÒ¿ªÊ¼ÁËÕÛÌÚ£¬¾ö¶¨ÌôÕ½Õâ¸ö¸ß´óÉϵĴúÂ룬ÊÂʵ֤Ã÷£¬Ë¼ÏëµÄÁ¦Á¿ÊÇÎÞÇîµÄ¡£

ÄÇô£¬ÔõôÐÞ¸ÄÄØ£¬×Ðϸ¹Û²ìÖ®ºó£¬·¢ÏÖÆäÖÐclassNameµÄÉú³É¸ú·µ»ØµÄÀàÐͷdz£ÀàËÆ£¬Ö»ÊÇÒ»¸öÊÇÀàÃû£¬Ò»¸öÊÇ×Ö·û´®£¬ÕâÁ½ÕßÖ®¼äÓ¦¸ÃÄܹ»¹ØÁªÆðÀ´¡£ÓÚÊÇgoogleÁËÒ»ÏÂ(µ±Ê±GFW»¹Ã»²þâ±ÆðÀ´¹þ)£¬ÒþÒþÔ¼Ô¼¾ÍÕÒµ½ÁË¡°·´É䡱ÕâÁ½¸ö×Ö£¬ÉîÈëÁ˽âÖ®ºó£¬È·¶¨¿ÉÒÔÍê³É¡£

½ÓÏÂÀ´£¬¾ÍÊÇ·µ»ØµÄÀàÐÍÁË£¬·µ»ØµÄÀàÐͲ¢²»¹Ì¶¨£¬µ«ÊÇËÆºõºÜÓйæÂÉ¡­¡­Õâ¸öËÆºõºÃÏñÔÚÄÄÀï¼û¹ý£¬¶ÔÁË£¬Ä£°å£¬C++¿Î³ÌÉÏÓн²¹ýµÄ£¬ÓÚÊÇÔÙ´Îgoogle£¬Á˽⵽ÁËC#ÖÐʹÓÃÁË·ºÐÍ´úÌæÁËC++ÖеÄÄ£°å¡£ÔÚѧϰÍê·ºÐͺͷ´ÉäÖ®ºó£¬²¢²Î¿¼ÁËÍøÉϵÄһЩÎÄÕ£¬ÎÒµ·¹Ä³öÁËÏÂÃæµÄ´úÂ룺

û´í£¬¾ÍÊÇËüÁË£¬Èý²ã¼Ü¹¹Äê´ú×îÁ÷ÐеŤ³§Àà¡­¡­

¿´×ÅÔ­À´¹öÊ®¼¸ÆÁÄ»µÄ´úÂ룬±ä³ÉÁËÊ®¶àÐеĴúÂë£¬ÕæÊÇˬµ½Á˹Ç×ÓÀïÈ¥ÁË£¬Ì«¸É¾»ÁË£¡Î¨Ò»ÈÃÎÒµ£ÓǵÄÊÇ£¬ÎÒ½ø¹«Ë¾µÄʱºò£¬°ïæÕûÀí¹«Ë¾ÉêÇëÈí¼þÖø×÷Ȩ¶¼ÊÇÐèÒª´úÂëÁ¿µÄ£¬¸ù¾Ý´úÂë¶àÉÙÐÐÀ´ÆÀ¹ÀÈí¼þµÄ´óС£¬ÍòÒ»ÀϰåÖªµÀÁËÎҷǵ«Ã»Óа﹫˾Ôö¼Ó´úÂëÁ¿£¬»¹¼õÉÙÁË£¬»á²»»áÁ¢¼´°ÑÎÒ¿ªµô£¿ÎÒû¸Ò¸øÎÒÃÇÀϰåչʾÎÒÓÅÐãµÄ³É¹û£¬ËùÐÒ£¬Õâ¶Î´úÂë·Çµ«Ã»Óгö¹ýÈκÎÎÊÌ⣬»¹±ÜÃâÁËÒÔǰͬÊÂÀÏÊÇÔÚÐÂÔöÒ»¸öÀàÖ®ºó£¬°Ñ´úÂë¸´ÖÆ¹ýÀ´£¬µ«ÊÇûÓÐÕýÈ·Ð޸ĵÄÎÊÌ⣬´ó´óÌá¸ßÁËЧÂÊ¡£ËäÈ»£¬ÎÒû¸Ò´óÊÂÐû²¼ÎÒµÄÀͶ¯³É¹û£¬µ«ÊÇÕâ´Î³É¹¦µÄÐ޸ģ¬Ôò³¹µ×ÈÃÎÒ×ßÉÏÁË´úÂëÖØ¹¹µÄ²»¹é·¡£

¿´µ½ÕâÀ´ó¼ÒÓ¦¸ÃÖªµÀÕâ¸ö°¸ÀýÊÇ·ñÕæÊµµÄÁ˰ɡ£ÎÒÏàÐÅ£¬´Ó08Ä꿪ʼµÄÂëÅ©ÃÇ£¬¿´µ½ÕâÖÖÀàËÆµÄ´úÂë¾ø¶Ô²»±ÈÎÒÉÙ¡£ÄÇô£¬ÎÒÏë¸æËßÄãÃǵÄÊÇÊ²Ã´ÄØ£¿

1.ÒªÔÚ±à³Ì¹ý³ÌÖжà˼¿¼

2.±à³ÌµÄ˼ÏëºÜÖØÒª£¬Çë¶à¿´µã¾­µäµÄÊé

3.´ÓС´¦×ÅÑÛ£¬ÂýÂýÖØ¹¹£¬ÓÈÆäÔÚÓ¦¶ÔÒ»¸ö´óÐ͵Äϵͳ

4.µ±Öظ´³öÏÖµÄʱºò£¬ÄãÓ¦¸Ã¿¼ÂÇÖØ¹¹ÁË

5.Õ³Ìù¸´ÖƵĴúÂëÔ½ÉÙ£¬ÄãµÄϵͳԽÎȶ¨

ÉÙÓôúÂëÉú³ÉÆ÷

ÎÒÃÇÀ´·ÖÎöһϣ¬ÎªÊ²Ã´ÎÒ֮ǰµÄǰ±²»áд³öÉÏÃæµÄ´úÂë¡£ÎÒ¹é½áÆðÀ´ÓÐÒÔϼ¸µã£º

1. ÒòΪʹÓÃÁ˶¯Èí´úÂëÉú³ÉÆ÷£¬Éú³É´úÂë·½±ã£¬¾Íû¶àÏëÁË¡£

2.Èý²ã¼Ü¹¹µÄ¸ÅÄîµ¹ÊÇÁ˽âÁË£¬µ«ÊÇûÓÐÈ¥ÉîÈë˼¿¼¾ÍÄÃÀ´Ó¦ÓÃ

3.Óöµ½Öظ´µÄ´úÂ룬ûÓÐÖØ¹¹µÄ¸ÅÄÕâÊÇ˼ÏëµÄÎÊÌ⡪¡ªË¼Ïë±ÈÄãµÄÄÜÁ¦ÖØÒª

ÖÁ½ñΪֹ£¬»¹ÊǺܶàÈËʹÓôúÂëÉú³ÉÆ÷£¬ÄÇôÎÒÃÇÓ¦¸ÃÔõô¶Ô´ýÕâ¸öÎÊÌâÄØ¡£ÎÒÈÏΪ£¬´úÂëÉú³ÉÆ÷ȷʵ¿ÉÒÔ¼õÉÙÄã²»ÉÙ¹¤×÷£¬µ«ÊÇÉÙÓã¬ÄÇÐ©ÖØ¸´ÐԵŤ×÷£¬³ýÁ˲¿·ÖȷʵÊÇûÓа취µÄ£¬ÆäËû´ó²¿·Ö¶¼ÊÇ¿ÉÒÔͨ¹ý¿ò¼Ü½â¾öµÄ£¬¾ÙÀýÀ´Ëµ£¬ÏñÈý²ã¼Ü¹¹£¬ÕæÕýÐèÒªÓõ½´úÂëÉú³ÉÆ÷µÄ£¬Ò²¾ÍÊÇModelÀà¶øÒÑ£¬ÆäËûµÄÍêÈ«¿ÉÒÔÔÚ¿ò¼ÜÖÐÍê³É¡£Òò´ËÄãÒª½ß¾¡È«Á¦µÄ˼¿¼ÔõôÔÚ¿ò¼ÜÖÐÀ´¼õÉÙÄãµÄÖØ¸´ÐÔ¹¤×÷£¬¶ø²»ÊÇÒÀÀµÓÚ´úÂëÉú³ÉÆ÷¡£

ÁíÍ⣬Èç¹ûÄ㻹ÊÇÔÚÓÃÏà¹ØµÄ´úÂëÉú³É¹¤¾ß£¬ÇëÖØÐ¶¨Òå¡°¶¯Èí´úÂëÉú³ÉÆ÷¡±µÄ´úÂëÄ£°å£¬×Ô¼ºÐ´Ò»¸öÄ£°å£»»òÕßʹÓÃCodeSmithÀ´ÍêÈ«ÖÆ¶¨×Ô¼ºµÄ´úÂëÉú³É£¬ÒòΪ¶¯Èí¸øµÄ´úÂëÄ£°åÕæÐÄÂÒ£¬±ÈÈçÏÂÃæÕâ¶Î´úÂ룺

for (int n = 0; n < rowsCount; n++)
{
model = new DBAccess.Model.eventweek();
if(dt.Rows[n]["GroupNo"].ToString()!="")
{
model.GroupNo=int.Parse(dt.Rows[n]["GroupNo"].ToString());
}
if(dt.Rows[n]["Week0"].ToString()!="")
{
model.Week0=int.Parse(dt.Rows[n]["Week0"].ToString());
}
if(dt.Rows[n]["Week1"].ToString()!="")
{
model.Week1=int.Parse(dt.Rows[n]["Week1"].ToString());
}
}

Ê×ÏÈ£¬Äã¾Í²»ÄÜÓà var row=dt.Rows[n] Ìæ´úÂð?Æä´Î£¬Ö±½ÓÓÃint.ParseÈç¹ûÅ׳öÁËÒì³£ÐÔÄܵÃÓжàµÍ£¿ÔٴΣ¬Õâ¶Î´úÂëÒªÊÇÓеãÐ޸ģ¬ÎÒ²»ÊÇҪÿ¸ödt.Rows[n]µÃ¸ÄÒ»±é£¿

²»ÒªÖظ´·¢Ã÷ÂÖ×Ó

ÎÒÃÇÔÙÀ´¿´¿´ÆäËûµÄһЩ´úÂ룺

public List<string> GetDevices(string dev){
List<string> devs=new List<string>(); int start=0;
for(int i=0;i<dev.Length;i++){
if(dev[i]=='^'){
devs.Add(dev.SubString(start,i));
start=i+1;
}
} return devs;
}

ÓÐûÓкÜÑÛÊ죬û´í£¬Õâ¾ÍÊǶÔString.Split()º¯ÊýµÄ¼òµ¥ÊµÏÖ¡£ÎÒµÄǰ±²Ó¦¸ÃÊÇ´Óc++³ÌÐòԱת¹ýÀ´µÄ£¬Ï°¹ßÁ˸÷ÖÖ¹¦ÄÜ×Ô¼ºÊµÏÖÒ»±é£¬µ«ÊÇËûºöÂÔÁËC#µÄºÜ¶à¶«Î÷¡£ÎÒÃDz»È¥ÆÀÅÐÕâ¶Î´úÂëµÄÓÅÁÓ£¬¶øÊµ¼ÊÉÏËûÔںܳ¤Ò»¶Îʱ¼ä¶¼ÔËÐеúܺá£ÎÒÃÇÀ´¿´¿´Ê¹ÓÃÕâÒ»¶Î´úÂëÓÐʲô²»ºÃµÄµØ·½£º

1. ÖØ¸´·¢Ã÷ÂÖ×Ó¡£»¨·ÑÁ˶îÍâµÄʱ¼ä£¬º¯ÊýµÄ½¡×³ÐԺͺܲî

2.¿É¶ÁÐԲÆäʵÊÇÒ»¸öºÜ¼òµ¥µÄ¹¦ÄÜ£¬µ«ÊÇÓÃÉÏÁËÕâôһ¶Îº¯Êý£¬Æð³õÎÒ»¹ÒÔΪÓÐÊ²Ã´ÌØ±ðµÄ¹¦ÄÜ¡£

ÄÇô£¬ÎÒÃÇÓ¦¸ÃÔõÑùÈ¥±ÜÃâÖØ¸´·¢Ã÷ÂÖ×ÓÄØ£¿ÎÒ´Ó¸öÈ˵ľ­ÀúÀ´Ìá³öÒÔϼ¸µã£¬Ï£ÍûÄܹ»¶Ô¸÷λÓÐËù°ïÖú£º

1. Á˽âÄãËùѧµÄ±à³ÌÓïÑÔµÄÌØÐÔ¡£Äã¿ÉÒÔ¿´Ò»±¾»ù´¡µÄÈëÃÅÊé¼®£¬°ÑËùÓеÄÌØÐÔä¯ÀÀÒ»±é£¬»òÕßÉÏMSDN£¬°ÑÏà¹ØµÄÄÚÈݹýÒ»±é¡£

2.ÔÚÄã¾ö¶¨¶¯ÊÖ·¢Ã÷Ò»¸öÂÖ×Ó֮ǰ£¬ÏÈËÑË÷Ò»ÏÂÏֳɵĽâ¾ö·½°¸¡£Ä㻹¿ÉÒÔµ½CodeProject¡¢GitHubÖ®ÀàµÄÍøÕ¾ËÑË÷һϡ£ÔÚÖªºõÉÏÓкܶàÈ˶¼ÔÚÅúÆÀÕâôһÖÖÏÖÏó£¬ÀÏÊÇÎÊÒ»Ð©ÖØ¸´ÐÔµÄÎÊÌ⣬ȻºóÓÖÖ°ÔðÖªºõûÂäÁË£¬Ã»ÓÐÈ˻شðËûµÄÎÊÌ⣬ʵ¼ÊÉÏÏà¹ØÎÊÌâÒѾ­ÓÐÁ˺ÜÏêϸµÄ½â´ð£¬ÄÇÌáÎÊ֮ǰ£¬²»ÄÜÊ×ÏÈÈ¥ËÑÒ»ÏÂÊÇ·ñÓÐÏֳɵĴ𰸣¬·´¶øÖ¸ÔðûÓлشðËûµÄÎÊÌâÄØ£¿

3.ÄãÓÐÒ»¶¨µÄ»ù´¡Ö®ºó£¬»¹Ó¦¸ÃÈ¥¶ÁÒ»ÏÂÏà¹ØµÄ¾­µäÊé¼®£¬ÉîÈëÁ˽âÆäÖеÄÔ­Àí¡£±ÈÈ磬Äã¾õµÃÄãÓÐÒ»¶¨µÄ»ù´¡ÁË£¬ÎÒ½¨ÒéÄãÈ¥°Ñ¡¶CLR Via C#¡·¶à¶Á¼¸±é£¬ÄãÁ˽âÔ­ÀíÔ½¶à£¬ÄãÔ½ÊÇÄܹ»ÀûÓÃÕâ±à³ÌÓïÑÔµÄÌØÐÔ£¬´Ó¶øÀ´ÊµÏÖÔ­±¾ÄÇЩÄãÈÏΪҪ¿¿×Ô¼ºÐ´´úÂëµÄ¹¦ÄÜ¡£

ÕâÀïÎÒÔÙ¾ÙÒ»¸öÎÒ×Ô¼ºµÄÀý×Ó¡£ÔÚÎÒÏÖÓеijÌÐòÖУ¬ÎÒ·¢ÏÖÎÒÐèÒªÔ½À´Ô½¶àµÄÏß³ÌÀ´Ö´ÐÐһЩ¼òµ¥µÄÈÎÎñ£¬±ÈÈçÔÚÿÌì¼ì²âÒ»ÏÂÓ²ÅÌÊÇ·ñ´ïµ½90%ÁË£¬Ã¿Ìì9µãÒª¿ØÖÆÒ»Ï¿յ÷µÄ¿ªÆô¶øÔÚÍøÉÏ6µãµÄʱºò°Ñ¿Õµ÷¹Øµô¡£Ïß³ÌʹÓÃÔ½À´Ô½¶à£¬ÎÒÔ½ÊǾõµÃÀË·Ñ£¬ÒòΪÕâЩÏÖ³¡½ö½öÖ»ÐèÍê³ÉÒ»´Î»òÕßÓÐÏ޵ļ¸´Î£¬´ó²¿·Öʱ¼ä¶¼ÊÇûÓÐÒâÒåµÄ£¬ÄÇôÔõô°ìÄØ£¿ÎÒ¾ö¶¨×Ô¼ºÐ´Ò»¸öÈÎÎñÀ࣬À´Íê³ÉÏà¹ØµÄÊÂÇ顣˵¸É¾Í¸É£¬ÎҺܿì°ÑÕâ¸öÀàд³öÀ´ÁË¡£

public abstract class MissionBase : IMission
{
    private DateTime _nextExecuteTime;
    protected virtual DateTime[] ExecuteTimePoints { get; private set; }
    protected virtual int IntervalSeconds { get; private set; }
    protected IEngine Engine { get; private set; }

    public bool IsCanceled{get{¡­¡­}}
    public bool IsExecuting{get{¡­¡­}}
    public bool IsTimeToExecute{get{¡­¡­}}

    public abstract bool Enable { get; }
    public abstract string Name { get; }

    protected MissionBase(IEngine engine)
    {
        ExecuteTimePoints = null;//ĬÈϲÉÓüä¸ôµÄ·½Ê½
        IntervalSeconds = 60 * 60;//ĬÈϵļä¸ôΪ1¸öСʱ

        Engine = engine;
    }

    /// ÈÎÎñµÄÖ´Ðз½·¨
    public void Done()
    {
        if (Interlocked.CompareExchange(ref _isExecuting, 1, 0) == 1) return;

        try
        {
			¡­¡­
        }
        finally
        {
            Interlocked.CompareExchange(ref _isExecuting, 0, 1);
        }
    }
	
	///ʵ¼Ê·½·¨µÄÖ´ÐÐ
    protected abstract void DoneReal();
}

µ«ÊÇ£¬Êµ¼ÊÉÏÕâ¸öÈÎÎñ·½·¨£¬²¢²»ºÃÓã¬ÒªÐ´µÄ´úÂë²»ÉÙ£¬¶øÇÒ¿É¿¿ÐÔ»¹Ã»Óб£ÕÏ¡£µ±È»£¬ÎÒ¿ÉÒÔ¼ÌÐøÍêÉÆÕâ¸öÀ࣬µ«ÊÇÎÒ¾ö¶¨ËÑË÷Ò»ÏÂÊÇ·ñ»¹ÓÐÆäËûµÄ·½·¨¡£Ö±µ½ÓÐÒ»Ì죬ÎÒÔÙ´ÎÔĶÁ¡¶CLR Via C#¡·£¬¿´µ½Ïß³ÌÕâÒ»Õ£¬½²µ½ÁËSystem.Threading.TimerÒÔ¼°ThreadPoolÀàʱ£¬ÎÒ¾ÍÖªµÀÁË£¬Ê¹ÓÃTimerÀàÍêÈ«¿ÉÒÔ½â¾öÎÒµÄÕâ¸öÓþ¡Á¿ÉÙµÄÏß³ÌÍê³É¶¨Ê±ÈÎÎñµÄÎÊÌâ¡£

ÒòΪ´ÓÔ­ÀíÉÏÀ´Ëµ£¬TimerÀàÎÞÂÛÄãÉùÃ÷Á˶àÉÙ¸ö£¬Æäʵ¾ÍÖ»ÓÐÒ»¸öÏß³ÌÔÚÖ´ÐС£µ±Äãµ½ÁËÖ´ÐÐʱ¼äʱ£¬Õâ¸ö¹ÜÀíÏ̻߳áÓÃThreadPoolÀ´Ö´ÐÐTimerÖеĺ¯Êý£¬ÒòΪʹÓõÄThreadPool£¬Ö´ÐÐÍê³ÉÖ®ºó£¬Ï߳̾ÍÂíÉÏ»ØÊÕÁË£¬Õâ¸öÆäʵ¾ÍÍêȫʵÏÖÁËÎÒËùÐèÒªµÄ¹¦ÄÜ¡£

µÈÄãÎÞ·¨Öع¹µÄʱºòÔÙ¿¼ÂÇÖØÐ´

ÎÒ´ø¹ýºÜ¶àÓÅÐãµÄ³ÌÐòÔ±£¬Ò²ÓëºÜ¶àÓÅÐãµÄ³ÌÐòÔ±¹²Ê¹ý¡£ÓÐÒ»´ó²¿·ÖµÄ³ÌÐòÔ±ÔÚ¿´µ½Ò»Ì×ϵͳ²»ÊÇÄÇôÂúÒ⣬»òÕß´æÔÚijЩÃ÷ÏÔµÄÎÊÌ⣬¾Í×ÜÊÇÈ̲»×¡Òª°ÑÕûÌ×ϵͳ°´×Ô¼º¾õµÃ¿ÉÒÔÓÅ»¯µÄ·½ÏòÀ´ÖØÐ´£¬½á¹û£¬ÖØÐ´½á¹¹ÍùÍù²¢²»ÁîÈËÂúÒ⡣ϵͳÖÐȷʵ´æÔںܶ಻ºÏÀíµÄµØ·½£¬µ«ÊÇÓв»ÉÙµÄÕâÖÖ´úÂ룬ǡǡÊÇΪÁ˽â¾öÒ»Ð©ÌØ¶¨³¡¾°ÏµÄÎÊÌâµÄ¡£Ò²¾ÍÊÇ˵£¬ËùÓеĹ淶ÒÔ¼°±à³ÌµÄÔ­Ôò£¬ÆäʵҲÊÇÓÐÌõ¼þÏÞÖÆµÄ£¬Ëû¿ÉÄÜÔڴ󲿷ֵÄʱºòÊÇÕýÈ·µÄ£¬Äܹ»Ö¸µ¼ÄãÍê³ÉÄãµÄÈÎÎñ£¬µ«ÊÇ£¬²¢²»ÊÇÔÚËùÓеط½¶¼ÊÇÊÊÓõġ£±ÈÈçÊý¾Ý¿â·¶Ê½£¬µ«Êµ¼ÊÖÐÎÒÃǵÄÉè¼ÆÍùÍù»á¿¼ÂÇÈßÓ࣬ÕâÊÇÎ¥±³·¶Ê½µÄ£¬µ«ÊÇΪʲô»¹ÓÐÄÇô¶àÈËÇ÷Ö®ÈôðÍÄØ£¿ÒòΪÎÒÃÇ¿ÉÄÜÐèÒªÓÿռ任ʱ¼ä¡£

Èç¹ûÎÒÃÇÒ»¿ªÊ¼¾Í¿¼ÂÇÖØÐ´£¬ÄÇôÄã¿ÉÄÜ»áÏÝÈëÒÔϵÄÀ§¾³£º

1.ÐèÒª»¨¸ü´óµÄ¾«Á¦À´Íê³ÉһЩ¿´ËƼòµ¥µÄBUG

ÄãÒªÖªµÀ£¬ÓÐÒ»²¿·Ö¿´ËÆ´íÎó»òÕ߷dz£²»ÓÅÃÀµÄ´úÂ룬ÆäʵǡǡÊÇΪÁ˽â¾öһЩ·Ç³£µó×êµÄÎÊÌâµÄ¡£

2.ÔÙÒ²ÎÞ·¨¼æÈÝÀϵÄϵͳÁË

Äã¼±ÓÚ°ÑÔ­ÓÐÏµÍ³ÖØÐ´£¬È´ÍùÍùºöÂÔÁ˶ÔÔ­ÓÐϵͳµÄ¼æÈÝ£¬ÄÇôÄãеÄϵͳµÄÍÆ½øÔò»áÊ®·Ö»ºÂý¡£¶øÀÏϵͳµÄά»¤£¬ÓÖ»áÏÝÈë¼°ÆäÞÏÞεÄÇé¿ö¡£

3.¹ý¶ÈÉè¼Æ£¬µ¼ÖÂÖØÐ´¼Æ»®³Ù³ÙÎÞ·¨Íê³É

ÓÐÖØÐ´³å¶¯µÄ³ÌÐòÔ±ÍùÍùÊÇÔڼܹ¹Éè¼ÆÉÏÓÐһЩ¶Áµ½µÄ¼û½â£¬ËûÃÇÉÆÓÚÀûÓÃËùѧµÄ¸÷ÖÖÉè¼ÆÄ£Ê½ºÍ¼Ü¹¹¼¼ÇÉÀ´½¨Á¢ÏµÍ³£¬µ«ÊÇÔ½ÊÇÏ뾡¿ÉÄܵÄÀûÓÃÉè¼ÆÄ£Ê½£¬Ô½ÊÇÏÝÈë¹ý¶ÈÉè¼ÆµÄÀ§¾Ö£¬µ¼ÖÂÖØÐ´µÄ¼Æ»®³Ù³Ù¶¼ÎÞ·¨Íê³É¡£

4.ÎÞ·¨ÓÐЧÀûÓÃÏÖÓÐϵͳÒѾ­Íê³É²¢²âÊԵĴúÂë

Èç¹ûÄãȷʵÓбØÒª½øÐÐÖØÐ´£¬ÎÒ»¹Êǽ¨ÒéÄã°Ñ´úÂ뾡¿ÉÄܵÄÖØ¹¹¡£ÒòÎªÖØ¹¹Ö®ºóµÄϵͳ£¬Äܹ»ÈÃÄã¸üÇáÒ×µÄÖØÐ´£¬ÓÖ×î´óÏÞ¶ÈÁ˱£ÁôÒÔǰ¿ÉÓõÄÒµÎñ´úÂë¡£

ÎÒ¾Ù¸öÀý×Ó£¬ËµÃ÷ÈçºÎͨ¹ýÖØ¹¹¸üºÃµÄÀûÓÃÏÖÓдúÂëµÄ¡£

ÎÒÓÐÒ»¸ö·Ç³£ÅÓ´óµÄϵͳ£¬ÆäÖÐÓÐÒ»¿é¹¦ÄÜÊÇÓÃÓÚÊý¾Ý²É¼¯¡¢´æ´¢¡¢¸æ¾¯¹ÜÀíÒÔ¼°µç»°¡¢¶ÌÐŵȸ澯֪ͨ¡£´óÖµĽṹÈçÏ£º

class MainEngine:IEngine{
	public MainEngine(ConfigSettings config){
		
	}

	public void Start();
	public void Stop();
}

ÐèÒªÔö¼ÓеÄÒµÎñ¹¦ÄÜʱ£¬³ÌÐòԱдµÄ´úÂëÍùÍùÊÇÕâÑùµÄ£ºÊ×ÏÈʱÐÞ¸ÄÅäÖÃÀà

class ConfigSettings{
public bool NewFuncEnable{get;private set;}
public ConfigSettings(){
NewFuncEnable=xx;//´ÓÅäÖÃÎļþ¶ÁÈ¡
}
}

½Ó×ÅÐÞ¸ÄÖ÷³ÌÐò£º

class MainEngine:IEngine{
	private NewFuncClass newCls=new NewFuncClass();
	public MainEngine(ConfigSettings config){
	}

	public void Start(){
		if(config.NewFuncEnable)
			newCls.Start();
	}
	public void Stop(){
		if(config.NewFuncEnable)
			newCls.Stop();
	}
}

ÔÚÐ޸ĵĹý³ÌÖУ¬ÍùÍùÊǸù¾ÝÅäÖÃÎļþÀ´ÅжÏй¦ÄÜÊÇ·ñÆôÓá£ÉÏÃæ´úÂë»áÔì³ÉʲôÎÊÌâÄØ£º

1.Ö÷³ÌÐò´úÂëºÍÀ©Õ¹¹¦ÄÜñîºÏÐÔ̫ǿ£¬Ã¿Ôö¼ÓÒ»¸ö¹¦Äܶ¼ÒªÐÞ¸ÄÖ÷³ÌÐò´úÂ룬ÕâÀï·Ç³£·Ç³£ÈÝÒ׳ö´í¡£ÓÈÆäÊÇеÄÈ˽ø¶È¿ª·¢×飬ºÜÈÝÒ×¾ÍÍüÖ÷³ÌÐòÖÐÔö¼ÓÁËһЩÖÂÃüÐԵĴúÂë¡£±ÈÈçÉÏÊöµÄÀ©Õ¹¹¦ÄÜ£¬¿ÉÄÜÊÇÔÚÌØ¶¨µÄÏîÄ¿ÖвŻáÓÐÕâ¸öÀ©Õ¹¹¦ÄÜ£¬µ«ÊÇ£¬Ð´´úÂëµÄÈËÍü¼ÇÔö¼ÓÊÇ·ñÆôÓõÄÅäÖÃÑ¡ÏîÁË£¬µ¼ÖÂËùÓеÄÏîÄ¿¶¼Ó¦ÓÃÁËÕâ¸ö¹¦ÄÜ£¬¶øÕâ¸ö¹¦ÄÜÐèÒªÌØ¶¨µÄ±í£¬ÕâÑù¾Í±¯¾çÁË¡£¼´Ê¹ÊÇÄãÔö¼ÓÁËÅäÖã¬Ò²ÊǷdz£µÄ²»ÃÀ¹Û£¬ÒòΪÔÚͨÓõİ汾ÖÐʹÓÃÁËÕâ¸öÅäÖã¬ÍùÍù»áÈö¨ÖÆÏîÄ¿ÒÔÍâµÄÈËÔ±¸Ðµ½À§»ó¡£

2.Ôö¼ÓÀ©Õ¹¹¦ÄܵÄÈË»¹Ðè¶ÔÕû¸öMainEngine´úÂëÓÐÒ»¶¨µÄÊìϤ£¬·ñÔò£¬Ëû¸ù±¾¾Í²»ÖªµÀÔÚStart·½·¨ºÍStop·½·¨½øÐÐnewClasµÄ¶ÔÓ¦·½·¨µÄµ÷ÓÃ

3.Èç¹ûÄã´òËã¶ÔÕâ¶Î´úÂë½øÐÐÖØÐ´£¬ÄÇô£¬Äã»á¸Ðµ½·Ç³£µÄÀ§ÄÑ£¬ÒòΪÄã·Ö²»Çå³þnewClsÕâ¸öÐÂʵÀýµÄ×÷Óã¬ÒªÃ´Ä㻨´ó¾«Á¦È¥°ÑËùÓдúÂëÀíÇå³þ£¬ÒªÃ´Ö±½Ó¾Í°ÑÕâ¶ÎÐÂÔöµÄÒµÎñ´úÂëÈ¥µôÁË¡£

ÄÇôÎÒÃÇÈçºÎ¶ÔÕâ¶Î´úÂë½øÐÐÖØ¹¹ÄØ¡£Ê×ÏÈ£¬ÎÒÃǰÑй¦ÄÜ×¢²áµÄ´úÂë³éÈ¡³öÀ´£¬Í¨¹ý·´ÉäÀ´ÊµÏÖÐµĹ¦ÄܵÄ×¢²á¡£

private void RegisterTaskHandlerBundles()
{
var bundles = xxx.BLL.Caches.ServiceBundleCache.Instance.GetBundles("TaskHandlerBundle");
if (bundles != null && bundles.Count > 0)
{
var asmCache = new Dictionary<string, Assembly>();
foreach (var bundle in bundles)
{
try
{
if (!asmCache.ContainsKey(bundle.Category)) asmCache.Add (bundle.Category, Assembly.Load(bundle.AssemblyName));
var handler = (ITaskHandler)asmCache[bundle.Category].CreateInstance (bundle.ClassName, false, BindingFlags.Default, null,
new object[] { this, bundle }, null, null);
_taskHandlerBundles.Add(bundle, handler);
}
catch (Exception e)
{
NLogHelper.Instance.Error("¼ÓÔØbundle[Name:{0},Assembly:{1}:Class:{2}]Òì³££º {3}", bundle.Name, bundle.AssemblyName, bundle.ClassName, e.Message);
}
}
}
}

ÐÞ¸ÄMainEngine´úÂë

class MainEngine:IEngine{
private NewFuncClass newCls=new NewFuncClass();
public MainEngine(ConfigSettings config){
RegisterTaskHandlerBundles();
} public void Start(){
_taskHandlerBundles.Start();
}
public void Stop(){
_taskHandlerBundles.Stop();
}
}

OK£¬ÏÖÔÚÎÒÃÇÔÙÀ´¿´¿´ÔõôʵÏÖÔ­À´µÄÐÂÔö¹¦ÄÜ£ºÄãÖ»Ðè°´¹æ·¶Ð½¨Ò»¸öÀ࣬¼Ì³ÐITaskHandler½Ó¿Ú£¬²¢ÊµÏֽӿڵķ½·¨¡£×îºóÔÚXTGL_ServiceBundle±íÖÐÐÂÔöÒ»Ìõ¼Ç¼¼´¿É¡£ÎÒÃÇÔÙÀ´¿´¿´Õâô×öÓÐʲôºÃ´¦£º

1. ÐÂÔöµÄÀàÖ»Ðè°´¹æ·¶Ð´¼´¿É£¬ÍêÈ«¶ÔMainEngine´úÂëûÓÐÈκÎÓ°Ïì¡£ÄãÉõÖÁ¿ÉÒÔ°ÑÕâ¸öMainEngine´úÂëдÔÚÒ»¸öн¨µÄDllÖС£

2.ÐÂÔö¹¦ÄܵÄÕâ¸öÒµÎñÀà¸úÔ­À´µÄ´úÂë½âñ·Ç³£·½±ã½øÐÐй¦ÄܵÄÒµÎñ²âÊÔ£¬¶øÎÞÐ迼ÂÇÔ­Óпò¼ÜµÄÓ°Ïì

3.ÐÂÔö¹¦ÄܵÄÒµÎñÀàÓë¼Ü¹¹ÍêÈ«·ÖÀ룬ÎÒÃÇÔÚÖØÐ´´úÂëÖÐÖ»Òª±£Ö¤½Ó¿ÚµÄÎȶ¨ÐÔ£¬ÎÞÂÛÎÒÃÇÔõô°Ñϵͳ¼Ü¹¹ÖØÐ´£¬ÎÒÃÇ¿ÉÒÔÂíÉϾÍÖØÓÃÉÏÔ­ÓеÄÒµÎñ¹¦ÄÜ´úÂë¡£

ÖØ¹¹µÄÄ¿±êÖ®Ò»£¬¾ÍÊǰѿò¼ÜºÍÒµÎñÍêÈ«·ÖÀë¡£

ÓÐÖ¾ÓÚÉîÈëÁ˽âµÄͬѧ£¬¿ÉÒÔÁ˽âÏ·´Éä¡¢IocºÍ²å¼þ»°±à³ÌµÈ¡£

ѧ»áµ¥Ôª²âÊÔ£¬ÅàÑøÄãµÄÖØ¹¹Òâʶ

¿ÉÄÜÉÏÃæËµÁËÕâô¶à£¬»¹ÊÇÓкܶàÈ˲¢²»Àí½âÖØ¹¹¡£Ã»¹ØÏµ£¬ÔÚÕâÀïÎÒ½ÌÄãÃÇÒ»¸ö¿ìËÙÈëÃŵİ취£¬¾ÍÊǵ¥Ôª²âÊÔ¡£Ê²Ã´Êǵ¥Ôª²âÊÔ£¬Çë×ÔÐÐgoogle¡£µ¥Ôª²âÊÔÓÐʲôҪÇ󣿾ÍÊÇÒªÇóÄãÒª°Ñÿ¸ö·½·¨¶¼Åª³É¾¡Á¿¿ÉÒÔ²âÊԵġ£¾¡Á¿ÈÃÄãµÄ·½·¨±ä³ÉÊǿɲâÊԵ쬾ÍÊÇÅàÑøÄãÖØ¹¹ÒâʶµÄÀûÆ÷¡£ÔÚÄãÒªÇó°Ñ·½·¨±ä³É¿É²âÊԵĹý³Ì£¬Äã¾Í»á·¢ÏÖÄã±ØÐëµÃ²»¶ÏµÄÐÞ¸ÄÄãµÄ·½·¨£¬ÈÃËüµÄÖ°Ôð¾¡Á¿µ¥Ò»£¬ÈÃËü¾¡Á¿µÄÓëÉÏÏÂÎÄÎ޹أ¬ÈÃËü¾¡¿ÉÄÜͨ¹ý·½·¨²ÎÊýµÄÊäÈëÊä³ö¾ÍÄÜÍê³ÉÏà¹ØµÄ¹¦ÄÜ£¬ÈÃÒÀÀµµÄÀà¶¼¾¡Á¿¸ÄΪ½Ó¿Ú¶ø²»ÊÇʵÀý¡£×îÖÕ£¬Äã¾Í»á·¢¾õ£¬Õâ¾ÍÊÇÖØ¹¹£¡¶øÇÒÊÇÔÚ²»Öª²»¾õÖУ¬ÄãÖØ¹¹µÄ¹¦Á¦¾Í»á´ó´óÌáÉý£¬Äã±à³ÌµÄˮƽҲ»á´ó´óÌáÉý£¡

¿´µ½ÕâÀÓо­ÑéµÄ³ÌÐòÔ±¾Í»áÎÊ£¬ÄãÕâÊÇÔÚ¹ÄÀøÎÒʹÓÃTDDÂ𣿲»£¬²»Êǵġ£TDD(Test-Driven Development)¹ÄÀøµÄÊDzâÊÔÇý¶¯¿ª·¢£¬Î´¿ª·¢Ö®Ç°Ïȱàдµ¥Ôª²âÊÔÓÃÀý´úÂ룬²âÊÔ´úÂëÈ·¶¨ÐèÒª±àдʲô²úÆ·´úÂë¡£ÕâÊÇÒ»ÖֱȽÏÏȽøµÄ¿ª·¢·½·¨£¬µ«ÊÇÔÚ±à³ÌµÄʵ¼ù¹ý³ÌÖУ¬ÎÒÈÏΪËü¹ýÓÚ·±Ëö£¬ºÜ¶àÖÐСÆóÒµºÜÄÑʵʩ£¬¸ü±ðÌáÎÒÃǸöÈË¿ª·¢Õß¡£ÎÒÕâÀïÌᳫÄãÓõ¥Ôª²âÊÔÅàÑøÄãµÄÖØ¹¹Òâʶ£¬¿ÉÒÔ˵ÊÇÒ»ÖÖºóÇý¶¯£¬ÓÃÓÚÌá¸ßÄãµÄÖØ¹¹ÄÜÁ¦ºÍÖØ¹¹Ô¸Íû£¬ÄãÍêÈ«¿ÉÒÔ°ÑÎÒµÄÕâ¸ö·½·¨³ÆÎª¡°TDR(Test-Driven Refactoring)¡ª¡ª²âÊÔÇý¶¯Öع¹¡±¡£µ±È»£¬ÔÚ¿ª·¢Ö®Ç°Èç¹ûÄãÓÐÒâʶµÄÈ÷½·¨¿É²âÊÔ£¬ÄÇôÄãд³öÀ´µÄº¯Êý½«»áÊDZȽϸßÖÊÁ¿µÄ´úÂë¡£µ±ÄãµÄº¯Êý¶¼ÊÇÒ»¸ö¸ö¿ÉÖØÓÃÐԸߵĺ¯Êý֮ʱ£¬Ä㽫»á·¢ÏÖ£¬Ð´´úÂëÆäʵ¾ÍÏñ¶Ñ»ýľһÑù£¬¿ÉÒÔ°ÑÒ»¸ö´óÐ͵ÄÐèÇó·Ö½â³ÉÎÞÊýϸСµÄ¹¦ÄÜ£¬ºÜ¿ìµÄ°ÑÐèÇóʵÏÖ¡£

ÒÔÏÂÊÇÒ»¸ö³¬´ó·½·¨ÖеÄÒ»¶Î´úÂ룬Èç¹ûÄã¶®µÃÔõÑùÈÃÕâ¶Î´úÂë±à³ÌÒ»¸ö¿É²âÊԵķ½·¨£¬ÄÇô£¬¹§Ï²Ä㣬ÄãÈëÃÅÁË¡£

ËùÎ½ÖØ¹¹

Èç¹ûÄãÓÐÄÍÐÄ¿´µ½ÕâÀÄãÓ¦¸ÃÖªµÀ£¬ÎÒ²¢·ÇÒ»¸ö±êÌâµ³£¬¶øÕâÆªÎÄÕÂÒ²Ðí³ÆÎª¡°ÈçºÎÔÚ±à³ÌÖÐÓ¦ÓÃÖØ¹¹µÄ˼Ï롱¸üΪÌùÇУ¬µ«ÊÇÎÒ²»ÏëÓÃÕâôÑÏËàµÄ±êÌâ¡£

ºÜ¶à±à³Ì³õѧÕߣ¬»òÕßÓжàÄê±à³Ì¾­ÑéµÄÈ˶¼¾õµÃÔĶÁ±ðÈ˵ĴúÂë·Ç³£À§ÄÑ£¬Öع¹¸üÊÇÎÞ´Ó̸Æð£¬ËûÃÇҪô¶ÔÕâЩ´úÂëÍûÑóÐË̾£¬ÒªÃ´¾ÍÊÇÍÆ·­´ÓÀ´¡£µ«ÊÇ£¬Èç¹ûÎÒÃÇÓÐÖØ¹¹µÄÒâʶ£¬ÒÔ¼°ÔÚ±à³ÌµÄ¹ý³ÌÖÐÊìϤһЩ´úÂëµ÷ÕûºÍÓÅ»¯µÄС¼¼ÇÉ£¬Äã×ÔÈ»¶øÈ»¾Í»áÅàÑø³öÖØ¹¹µÄÄÜÁ¦¡£

ÖØ¹¹£¬ÆäʵºÜ¼òµ¥£º

1.°Ñ»ù´¡´òÀιÌ

2.¶à¿´µãÓÅÐãµÄ´úÂë

3.±ÜÃâ¸´ÖÆÕ³Ìù£¬Èç¹û¿´¼ûÖØ¸´´úÂëʱӦ¸ÃÓÐÒâʶҪÏûÃðËü

4.¼õÉÙ¶Ô´úÂëÉú³ÉÆ÷µÄÒÀÀµ0

5.ÔÚ´¦ÀíÏÖÓдúÂëʱ¾¡Á¿ÓÃÖØ¹¹´úÌæÖØÐ´£¬ÔÚÖØÐ´Ö®Ç°Ò»¶¨ÒªÏÈÖØ¹¹

6.¾¡Á¿ÈÃËùÓеķ½·¨¶¼ÊǿɲâÊÔµÄ

Èç¹ûÄã¼á³ÖÕâôȥ×öÁË£¬Ò»¶Îʱ¼äÖ®ºó¸Ð¾õ×ÔÈ»¾Í³öÀ´ÁË¡£

ÖØ¹¹µÄÄ¿µÄ£¬ÊÇÈÃÄãµÄ´úÂë¸üΪ¾«¼ò¡¢Îȶ¨¡¢Äܹ»ÖØÓã¬ÊÇ×î´ó³Ì¶ÈµÄÈù¦ÄܺÍÒµÎñ·ÖÀë¡£ÔÚÖØ¹¹µÄ¹ý³ÌÖУ¬ÄãµÄÔĶÁ´úÂëµÄÄÜÁ¦¡¢Ð´³öÓÅÐã´úÂëµÄÄÜÁ¦ÒÔ¼°ÏµÍ³¼Ü¹¹ÄÜÁ¦¶¼»áÎȲ½ÌáÉý¡£Äã³ÉΪһ¸öÓÅÐãµÄ³ÌÐòÔ±½«Ö¸ÈÕ¿É´ý¡£

   
3155 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
 
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
 
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ʹÓÃdecj¼ò»¯Webǰ¶Ë¿ª·¢
Web¿ª·¢¿ò¼ÜÐγÉÖ®ÂÃ
¸üÓÐЧÂʵÄʹÓÃVisual Studio
MVP+WCF+Èý²ã½á¹¹´î½¨¿ò¼Ü
ASP.NETÔËÐлúÖÆÇ³Îö¡¾Í¼½â¡¿
±àд¸üºÃµÄC#´úÂë
10¸öVisual Studio¿ª·¢µ÷ÊÔ¼¼ÇÉ

.NET¿ò¼ÜÓë·Ö²¼Ê½Ó¦Óüܹ¹Éè¼Æ
.NET & WPF & WCFÓ¦Óÿª·¢
UML&.Net¼Ü¹¹Éè¼Æ
COM×é¼þ¿ª·¢
.NetÓ¦Óÿª·¢
InstallShield

ÈÕÕÕ¸Û .NET Framework & WCFÓ¦Óÿª·¢
Éñ»ªÐÅÏ¢ .NETµ¥Ôª²âÊÔ
±±¾© .NetÓ¦ÓÃÈí¼þϵͳ¼Ü¹¹
̨´ïµç×Ó .NET³ÌÐòÉè¼ÆÓ뿪·¢
ÈüÃÅÌú¿Ë C#Óë.NET¼Ü¹¹Éè¼Æ
¹ã¶«ºËµç .NetÓ¦ÓÃϵͳ¼Ü¹¹