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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¼òÎö .NET Core ¹¹³ÉÌåϵ
 
À´Ô´£ºcnblogs ·¢²¼ÓÚ£º 2017-7-3
  3932  次浏览      27
 

¼òÎö .NET Core ¹¹³ÉÌåϵ

Roslyn ±àÒëÆ÷

RyuJIT ±àÒëÆ÷

CoreCLR & CoreRT

CoreFX(.NET Core Libraries)

.NET Core ´úÂ뿪·¢¡¢²¿Êð¡¢ÔËÐйý³Ì

×ܽá

ǰÎĽéÉÜÁË.NET Core ÔÚÕû¸ö.NET ƽ̨Ëù´¦µÄµØÎ»£¬ÒÔ¼°Óë.NET FrameworkµÄ¹ØÏµ(Ô­ÎÄÁ´½Ó)£¬±¾ÎĽ«Ïêϸ½éÉÜ.NET Core ¿ò¼ÜµÄ¹¹³ÉºÍ¸÷Ä£¿éÖ÷Òª¹¦ÄÜ£¬ÒÔ¼°ÈçºÎʵÏÖ¿çÆ½Ì¨¡£

ÉÏͼÃèÊöÁË .NET CoreµÄϵͳ¹¹³É£¬×îÉϲãÊÇÓ¦Óò㣬ÊÇ¿ª·¢»ùÓÚUIÓ¦ÓõĿò¼Ü¼¯£¬°üÀ¨ÁËASP.NET Core(ÓÃÓÚ´´½¨web app)£¬ºÍ UWP(ÓÃÓÚ´´½¨Windows10 app)¡£

Öмä²ãÊǹ«¹²¿â(CoreFX),ʵÏÖÁË.NET Standard Library ,ÄÒÀ¨Á˳£ÓÃϵͳ¼¶²Ù×÷ÀýÈ磨Îļþ¡¢ÍøÂçµÈ£©¡£

ÔÚCoreFxÏÂÊÇÔËÐÐʱ»·¾³£¬.NET Core °üº¬ÁËÁ½ÖÖÔËÐÐʱ(CoreCLR¡¢CoreRT),CoreCLRÊÇÒ»ÖÖ»ùÓÚ¼´Ê±±àÒë³ÌÐò(Just in time compiler,JIT)µÄÔËÐÐʱ,ËüʹÓÃÁË¿çÆ½Ì¨¿ªÔ´µÄ±àÒëÆ÷RyuJIT,¶øCoreRTÊÇʹÓÃÌáǰ±àÒëÆ÷(Ahead of time compiler,AOT)µÄÔËÐÐʱ,Ëü¼È¿ÉÒÔʹÓÃRyuJITÀ´ÊµÏÖAOT±àÒëÒ²¿ÉÒÔʹÓÃÆäËûµÄAOT±àÒëÆ÷¡£ÓÉÓÚAOTÌáǰ±àÒëIL³ÉÁË»úÆ÷Â룬ÔÚÒÆ¶¯É豸ÉÏÒ²¾ßÓиüºÃµÄÆô¶¯ËٶȺͽÚÄÜÐÔ¡£

×îºó»¹ÒªÌáµ½Ò»¸ö¿ªÔ´µÄ¿çƽ̨Դ´úÂë±àÒëÆ÷Roslyn£¬ËüÓбðÓÚ¸Õ²ÅÁ½¸ö±àÒëÆ÷£¬JITºÍAOT±àÒëÆ÷Ö÷ÒªÓÃÓÚ½«IL±àÒë³É±¾»ú»úÆ÷Â룬¶øRoslynÊǽ«C# »ò VB.net ´úÂë±àÒë³É³ÌÐòÖмäÓïÑÔ(intermediate language,IL)¡£

Roslyn ±àÒëÆ÷

Roslyn±àÒëÆ÷ÓÃÓÚ½«C#»òVB.Net´úÂë±àÒëΪ³ÌÐò¼¯(assembly)£¬ËüµÄ±àÒë¹ý³ÌÊÇÒ»¸ö¹ÜµÀʽµÄ´¦Àí¹ý³ÌÒ»¹²°üº¬4¸ö²½Ö裬¾ßÌå¹ý³Ì¼ûÏÂͼ¡£

A. Parser(½âÎö)

¸ù¾ÝÓï·¨¶ÔÔ´´úÂë½øÐнâÎö¡£

B. Declaration (ÉùÃ÷)

Ϊ´úÂëÉú³ÉÔªÊý¾Ý(metadata),ÔªÊý¾ÝÊÇÒ»¸öÊý¾Ý±íµÄ¼¯ºÏ£¬ÃèÊöÁËÔÚµ±Ç°´úÂëÖж¨ÒåµÄÊý¾ÝÀàÐͺͳÉÔ±£¬Í¬Ê±Ò²ÃèÊöÁËÒýÓõÄÀàÐͼ°³ÉÔ±¡£

C. Bind(°ó¶¨)

½«Éú³ÉµÄIL´úÂëÓëÃèÊöËüµÄÔªÊý¾Ý°ó¶¨ÔÚÒ»Æð£¬Éú³ÉÍйÜÄ£¿é(managed module)¡£

D. Emit(Éú³É)

½«Ò»¸ö»ò¶à¸öÍйÜÄ£¿éºÏ²¢Éú³É³ÌÐò¼¯(assembly)¡£

RyuJIT ±àÒëÆ÷

ÔÚ³ÌÐòÔËÐÐÖÐÐèÒªÖ´ÐÐijһ¸ö·½·¨£¬Ê×ÏÈÐèÒª½«ÒѾ­±àÒëºÃµÄILת»»±¾»úµÄ»úÆ÷Â룬¶øÕâ¸öÈÎÎñ¾Í½»¸øÁËRyuJIT¡£ËüÊÇÐÂÒ»´úJIT±àÒëÆ÷£¬µÚÒ»´ÎʵÏÖÁËAMD64µÄ¼Ü¹¹£¬RyuJITÄܹ»±ÈJIT64(ÉÏÒ»´ú±àÒëÆ÷)¸ü¿ìµØÉú³É´úÂ룬ÒÔÌá¸ß³ÌÐòÔËÐÐЧÂÊ(²âÊÔÏêÇéÁ´½Ó)¡£

CoreCLR & CoreRT

CoreCLR ºÍ CoreRT ¶¼ÊÇ.NET CoreµÄÔËÐÐʱ(Runtime),

ËüÃÇÌṩÁËÓë.NET Framework CLR ÀàËÆµÄºËÐŦÄÜ(ÄÚ´æ¹ÜÀí¡¢³ÌÐò¼¯¼ÓÔØ¡¢°²È«ÐÔ¡¢Òì³£¡¢Ï̹߳ÜÀíµÈ)£¬¿ÉÓÉÃæÏòÓÚÔËÐÐʱµÄËùÓÐÓïÑÔʹÓá£

CoreRT ºÍ CoreCLR ²»Í¬µÄÊÇ£¬CoreRT ÌṩÁËÒ»Ì×

AOT µÄ»úÖÆ,¿ÉÒÔ½«.NET Core³ÌÐò±àÒë³ÉÔ­Éú´úÂ룬²»ÒÀÀµ .NET ÔËÐÐʱ¶øÔËÐÐÔÚËÞÖ÷»úÆ÷ÉÏ¡£³ý´ËÖ®ÍâÁ½¸öÔËÐÐʱ´ó²¿·Ö¹¦ÄÜ´úÂëÊǹ²ÏíµÄ£¬±ÈÈçGC¡£AOTµÄÓÅ»¯´øÀ´²»Éٺô¦£º

±àÒëºóÉú³ÉÒ»¸öµ¥Îļþ£¬°üº¬ËùÓеÄÒÀÀµ£¬°üÀ¨ CoreRT£¬ÎÞÐè°²×°Framework

Æô¶¯Ê±ÊÇ»úÆ÷Â룬²»ÐèÒªÉú³É»úÆ÷Â룬Ҳ²»Òª¼ÓÔØJIT±àÒëÆ÷

¿ÉÒÔʹÓÃÆäËûÓÅ»¯±àÒëÆ÷£¬°üÀ¨ LLILC ,IL to CPP

CoreRTÓÐÁ½¸ö·½Ê½Éú³É»úÆ÷Â룬µÚÒ»¸öʹÓÃÊÇÖ±½Ó±àÒëIL³É»úÆ÷Â룬ĬÈÏÇé¿öÏ£¬RyuJIT ×÷Ϊһ¸ö AOT ±àÒëÆ÷½«IL±àÒë³É»úÆ÷Â룬ÁíÒ»¸ö·½Ê½Êǽ«C#´úÂë±àÒë³ÉC++´úÂ룬Ȼºóµ÷ÓöÔӦƽ̨µÄC++±àÒëÆ÷ÓÅ»¯±àÒë³É»úÆ÷Âë¡£

ʹÓà RyuJIT ±àÒë³É»úÆ÷Âë

dotnet restore

dotnet build --native --ilcpath <repo_root>\bin

\Product\Windows_NT.x64.Debug\packaging\publish1

±àÒëÉú³É C++ ´úÂë

dotnet restore

dotnet build --native --cpp --ilcpath <repo_root>\bin\Product\Windows_NT.x64.Debug\packaging\

publish1 --cppcompilerflags /MTd

CoreRTÒ²Óв»×ãÖ®´¦£¬ËüÐèҪΪ²»Í¬Æ½Ì¨±àÒëÒ»´Î£»µ«·²ÊÂÓе«ÊÇ£¬ËüÔÊÐí¹¤³Ìʦ¿ÉÒÔ²»·¢²¼µ½²»ÏëÖ§³ÖµÄƽ̨£¨±ÈÈçijÓÎÏ·½öÖ§³Ö×ÀÃæ£¬²»Ö§³ÖÊÖ»ú£©¡£

×¢£ºÕâÁ½¸öÃüÃûÔÚ.NET Core RC2 °æ±¾ÖоùÎÞ·¨Ê¹Ó㬰´ÕÕ¹Ù·½Ëµ·¨ÊÇÔÚµ±Ç°°æ±¾ÖÐÒѾ­ÒƳýÕâ¸öÃüÁîÁË£¬¾ßÌåµÈ6ÔÂ27ÈÕÕýʽ°æ·¢³öºó²ÅÖªµÀ×îºóµÄÇé¿ö

CoreFX(.NET Core Libraries)

CoreFXÖ÷Òª°üº¬Êý¸ö¹«¹²¿â£¬ÀýÈç System.Collections, System.IO, System.XmlµÈ¡£CoreFXÊÇ .NET Standard Library µÄʵÏÖ£¬Í¬ÑùµÄ.NET Framework 4.6.3Ò²ÊÇ»ùÓÚ.NET Standard LibraryµÄʵÏÖ¡£ËüÃÇĿǰ¶¼ÊÇ»ùÓÚ.NET Standard Library1.6°æ±¾£¬¾ßÌå¼ûÏÂ±í£º

.NET Core ´úÂ뿪·¢¡¢²¿Êð¡¢ÔËÐйý³Ì

´ÓÉÏͼ¿ÉÒÔ¿´µ½Ê¹ÓÃJIT±àÒëºÍʹÓÃAOT±àÒëÔ´´úÂë²¢ÔËÐгÌÐòÊÇÁ½ÖÖ²»Í¬µÄÁ÷³Ì¡£

Èç¹ûʹÓÃJIT±àÒëÆ÷²¿Êð³ÌÐòʱֻÐèÒª½«³ÌÐò´ò°üΪILµÄassemblies£¬ÔÚ·½·¨µÚÒ»´ÎÖ´ÐÐǰ±àÒëÆ÷½«IL±àÒëΪĿ±ê»ú»úÆ÷Âë(Native code)£¬¶øAOT±àÒë»áÔÚ±àÒëʱ½«Ô´´úÂëÖ±½Ó±àÒëΪĿ±ê»ú»úÆ÷Âë¡£

AOT½«Ô´´úÂë±àÒëΪ»úÆ÷Â룬ӵÓÐÈçÏÂÌØÐÔ£º

Óþ²Ì¬´úÂëÌæ»»·´É䣬ÀýÈçÈç¹ûÒ»¸öÖµÀàÐÍ(value type)ûÓÐÖØÐ´ ValueType.Equals µÄequalsµÄ·½·¨£¬Ä¬ÈÏÇé¿öÅжÏÏàµÈ£¬»áʹÓ÷´ÉäÕÒµ½filedinfoÒÔÈ·¶¨typeÊÇ·ñÏàµÈ£¬È»ºóÔٱȽÏvalueÊÇ·ñÏàµÈ¡£¶øÔÚAOT±àÒëÖÐÓÉÓÚÌæ»»ÁË·´ÉäÒò´ËÖ»ÄܱȽÏvalueÊÇ·ñÏàµÈ¡£

ÒÀÀµµÄµÚÈý·½Àà¿âÒÔ¼°.NET Libraries¾ù´ò°üÖÁ×îÖÕ±àÒëµÄ³ÌÐòÖС£

´ò°üºóµÄ³ÌÐòÔËÐÐÔÚÒ»¸ö¾«¼ò°æµÄÔËÐÐʱÉÏ(CoreRT)Ö÷Òª°üº¬À¬»ø»ØÊÕÆ÷£¬¶øÔËÐÐʱҲ»á´ò°üÔÚappÎļþÖС£

ËäÈ»±àÒëʱ»áÌæ»»·´Éä´úÂ룬µ«Óö¶¯Ì¬·´Éä´úÂëÎÞÄÜΪÁ¦£¬ÔËÐÐʱÈôÓö¶¯Ì¬·´Éäµ÷ÓÃÔò»áÒòÕÒ²»µ½¶ÔÓ¦µÄÔªÊý¾Ý¼°ÊµÏÖ¶øÅ׳öÒì³£¡£½â¾ö°ì·¨ÊDZàÒëǰÅäÖÃÔËÐÐʱָÁîÎļþ(Runtime directive file)Ö¸¶¨ÐèÒªÓõ½µÄ³ÌÐò¼¯¡£

×ܽá

±¾½Ú½éÉÜÁË.NET CoreµÄ¹¹³ÉÌåϵ£¬°üÀ¨ÐÂÔöµÄ¶à¸ö±àÒëÆ÷ÒÔ¼°×ñÑ­.NET Standard LibraryµÄCoreFX,×ÜÌåÀ´Ëµ.NET Core½Ï֮ǰµÄ.NET Framework ´ÓÐÔÄܺͿª·¢Ð§ÂÊÉ϶¼ÓкܴóµÄÌáÉý¡£¹Ø¼üÊÇÊ×´ÎʵÏÖÁË.NETµÄÍêÈ«¿çƽ̨ÄÜÁ¦µÄ»ù´¡¼¼ÊõÕ»¡£

.NET Core »ùÓÚ¿çÆ½Ì¨ÄÜÁ¦£¬²¢Ã»Óн«Óë GUI ¸ß¶ÈÏà¹ØµÄ API ÒÆÖ²µ½ .NET Core ÄÚ£¬Òò´ËÏñÊÇ Windows Forms »òÊÇ Windows Presentation Foundation (WPF) ²¢Î´ÒÆÖ²µ½ .NET Core¡£.NET Core Ö§³Ö¿ØÖÆÌ¨Ó¦ÓóÌÐò (Console Application) ÒÔ¼°Àà¿â (Class Library) ÀàÐ͵ÄÏîÄ¿¡£

²»¹ý΢ÈíÔÚÆä Universal Windows Platform (UWP) ¿ª·¢Æ½Ì¨Ê¹ÓÃÁË .NET Core£¬²¢ÇÒÀûÓà .NET Native ¼¼Êõ½«ÆäÐÔÄÜÌáÉýÖÁÊ®·Ö½Ó½üÔ­ÉúÂëµÄËÙ¶È¡£

ASP.NET Core ÔòÒÔ¿ØÖÆÌ¨Ó¦ÓóÌÐòÇý¶¯ÆäÍйܻ·¾³ Kestrel Server ÒÔÖ§³Ö ASP.NET Core ³ÌÐòµÄÔËÐС£

 

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

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

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

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì