اگه هدف صرفا" اين باشه كه برنامه هاي دات نت توي كامپيوترهايي كه دات نت فريم ورك ندارند هم اجرا بشه ، راههاي آسونتري هم از زمان دات نت 1.0 بوده تا حالا ! مثلا بعضي ابزارهاي محافظت از كد ، يكي از كارهاشون هم ساختن يك Native PE هست كه خب ديگه نيازي به دات نت فريم ورك نداره ... اين ابزارها رايگان نيست ! ولي اونهايي كه بايد داشته باشند ، دارندش !
ولي Ngen بحثش گسترده تره !
يكي از مواقعي كه به Ngen فكر ميشه ، وختيه كه افزايش سرعت و پرفورمنس برنامه اهميت پيدا ميكنه . چون همونطور كه ميدوني CLR كه خودش نمياد IL رو تفسير كنه ! بلكه از JIT استفاده ميكنه
ولي وختي از NGen استفاده كنيم CLR ديگه مجبور نيست كه اول مثلا با لود كردن mscorjit.dll و اينا ، stub هاي JIT را استفاده كنه تا كد را توليد كنه ... بلكه بدون نياز مستقيم به JIT ، اين كار را انجام ميده و خب نتيجه هم كه توي Native Image Cache ذخيره ميشه. ( مثلا ميتونيد مثل من بشينيد و از وخت اضافه اي كه با لاگين نكردن توي برخي فرومها بدست مياريد استفاده كنيد و كدنهايي كه Ngen توليد ميكنه را با كدي كه CLR توسط JIT توليد ميكنه مقايسه كنيد تا ببينيد كه جفتشون در نهايت از يك كد يكسان استفاده ميكنند !!!!! ) ... چون اين stub هاي JIT واقعا وخت گير هستند ، چون وقتي Virtual Table را براي JIT تشكيل ميشه ، اونوقت براي هر متدي يك stub پيدا ميشه كه بايد بره سراغ mscorjit.dll تا متده را ترجمه كنه و بعد دوباره Jump بزنه به slot اون متده توي VTable و .... اوووه !!
بقيش هم MSDN !!!.. خسته شدم واااه !
براي شروع ميشه نگاهي هم به اينجا انداخت !