برای تازه کارها و اونا که می خوان اطلاعاتی در مورد دات نت داشته باشند ، این موضوع را ایجاد کردم تا هر کی از دات نت هر چی می دونه بگذاره و اگه برای کسی سوالی پیش اومد بنویسه تا در مورد اون بحث بشه!
Printable View
برای تازه کارها و اونا که می خوان اطلاعاتی در مورد دات نت داشته باشند ، این موضوع را ایجاد کردم تا هر کی از دات نت هر چی می دونه بگذاره و اگه برای کسی سوالی پیش اومد بنویسه تا در مورد اون بحث بشه!
دات نت یک فرم ورک است. یک فریم ورک ترکیبی از ابزارها برای واقعیت بخشیدن به یک منظور خاص است.
دات نت فریم ورک در ابتدا بعنوان یک راه ساده تر برای توسعه COM، Win32 API و امثال آن طراحی شده بود، اما بعدا تکامل یافت و علاوه بر تامین امکانات برای برنامه نویسی آسان تر تکنولوژی های مبتنی بر ویندوز، امکاناتی را نیز برای برنامه نویسی آسان تحت وب ارائه داد. بر خلاف تصور کسانی که با دات نت نا آشنا هستند دات نت چیزی مانند Win32 API نیست، بلکه مبتنی بر آن است.
اگر سوالی دارید بنویسید.
منم با اجازه اساتید چند تا نکنه بگم:
1- دات نت یک زبان برنامه نویسی نیست.
2- دات نت یک فریم ورک است که برای طراحی و توسعه نرم افزار پدید آمده است.
3- نرم افزار هایی که می توان با دات نت نوشت محدودیتی ندارد.
4- دات نت چند زبانه است یعنی می توان در یک برنامه که مثلا" با vb.Net (یکی از ربان هایی که دات نت پشتیبانی می کند) نوشته شده است می توان از یک کد نوشته شده به زبان مثلا" C# یا هر زبان دیگری که دات نت پشتیبانی می کند استفاده نمود.
5- برنامه های نوشته شده در تکنولوژی دات نت قابلیت حمل دارند یعنی به سیستم عامل و یا ماشین وابسته نیستند.
6- دات نت برنامه نویسی کاربردی را واقعا" ساده نموده است.
7- خیلی موارد دیگر که این ها مهمترین بودند.
net FrameWork چه چیزهایی را نصب می نه که در برنامه های تحت دات نت از اونها استفاده می شه؟
یک سری DLL و Service
من تا حالا تحت دات نت برنامه ننوشتم اما در مثالهای دلفی 2006 یک برنامه ی چت که در نسخه های قبلی نیز وجود اشت دیدم.در این برنامه از هیچ شیئ ویژوالی استفاده نشده بود؛آیا اصولا این ربطی به دات نت داره یا ...
متن زیر رو یادم نمی یاد از کدوم سایت گرفتم.
کاملا درسته . چون ماشین ترجمه گر دات نت با وین 32 نوشته شده و کد ها رو در نهایت به همان وین 32 می بره . سرعت کمش هم (که بعضی افراد می گن) به خاطر وجود همین لایه است .نقل قول:
بر خلاف تصور کسانی که با دات نت نا آشنا هستند دات نت چیزی مانند Win32 API نیست، بلکه مبتنی بر آن است.
آیا مزیت اصلی دات نت بر وین 32 همین آسان بودن برنامه نویسی تحت وب است ؟نقل قول:
امکاناتی را نیز برای برنامه نویسی آسان تحت وب ارائه داد
اصولا برنامه های نوشته شده در دات نت غیر از وابسته نبودن به ماشین چه مشخصه ویژه ای دارند ؟
اصلا باید این را گفت که چیزی به نام مستقل بودن از محیط به اون معنا وجود ندارد .نقل قول:
اصولا برنامه های نوشته شده در دات نت غیر از وابسته نبودن به ماشین چه مشخصه ویژه ای دارند ؟
حتی جاوا مستقل از محیط نیست . ممستقل از محیط بودن منظور این است که ماشین را برای چند سیستم عامل نوشته اند و کد ها در آخر در لینوکس به یه چیزی و در ویندوز به وین 32 تبدیل می شوند .
مثلا فرض کنید من بیام یه سیستم عامل بنویسم . آیا در این صورت برنامه های جاوا روی اون اجرا می شن ؟؟؟
در کل می توان گفت همه چیز در ویندوز به وین 32 انتها پیدا می کنه . دات نت لایه هایی برای برنامه نویسی رو قرار می ده .که در بعضی جاها مفید و بعضی جاها مضر است .
دات نت فریم ورک ضمن داشتن محاسن خود عیوب بزرگی هم دارد
از جمله :
برای اجرای یک برنامه مثلا 100 کیلو بایتی نیاز به نصب دات نت فریم ورک 20 مگابایتی دارید.
سورس کلاسهای دات نت موجود نیست ( بطور مثال mfc در ویژوال سی سورس کدها را داشت)
سرعت اجرا بدلیل آمدن CLR در لایه واسط کم شده
و نهایتا سوال اینکه چند برنامه نویس سراغ دارید که در یک پروژه از چند زبان استفاده کرده باشد؟!
با نظر آقای پیشوایی موافقم. برنامه نویسهای حرفه ای به هیچ وجه از دات نت به عنوان محیط برنامه نویسی خودشون استفاده نمیکنند.
سرعت لود شدن برنامه هنگام اجرا مورد کم اهمیتی نیست که بدلیل Intermediate Language بودن برنامه های تولید شده با این تکنولوژی سرعت لود شدنش خیلی کمه، حالا اگه حجم برنامه تولید شده بیشتر باشه که بدتر.
کلاسها و NameSpace های دات نت فقط کد نویسی رو راحت تر کرده و در کل هیچ مزیتی نداره.
(خودمونیم آخه دلفی خودمون چه مشکلی داره آخه؟ یا بنده خدا ویژوال سی 6)
بعضی از دوستان اصلا به عنوان تاپیک دقت نمیکنند عنوان تاپیک کاملا مشخصه که یکی از دوستان پرسیده دات نت چیست؟ نپرسیده که خوبه یا بده؟ در ضمن فکر کنم اون دوستمون که این سوال رو پرسیده توی چند پست اول به جوابش رسیده .متاسفانه بحثها به صورت سلیقه ایی به انحراف کشیده میشه.
با سلام می خواستم بپرسم که
1.اصولا منظورتون از فریم ورک چیه ....(توضیح متخصصانه میخوام نه درک شخصی ...)
2.آیا راهی هست که بشه فقط توابع کتابخانه ای رو که تویه برنامه احتیاج هست به فایل exe فرستاد ...؟؟
سلام
من همه مطالب بالا رو خواندم و میدونم هم که وقتی یک برنامه NET. کامپایل میشه اول به زبان MSIL ترجمه میشه و بعد از اون با JIT به زبان ماشین، ولی دوست دارم که بدونم کامپایلر NET چطوری هست که میتونه تمام زبانها را کامپایل کنه؟ یعنی ویژگیهای یک کامپایلر VBو یا C# و یا ++C را دارد؟ این غیر ممکن خواهد بود.
آیا میتونید منو راهنمایی کنید که در مورد کامپایلر NET. یک منبع خوب پید کنم؟
مرسی
یعنی منظورتون این هست که (کامپایلر) یا تبدیل کننده NET. تمام ویژگیهای کامپایلرهایی مثل VB و #C و ++C و غیره را داره؟
اجازه بدین سوالم رو طوره دیگه ای مطرح کنم.
چه ویژگیی net. برای کامپایل کردن یک کد VB اضافه تر نسبت به یک کامپایلر VB دارد؟
دقیقا متوجه منظورتون نشدم.
همونطور که گفتم کامپایلر NET. مجموعه ای از کامپایلرها است که بر اساس زبانی که شما برنامه خودتون رو نوشته اید کدها رو با اون کامپایلر (مثلا وقتی با #C برنامه نوشته اید با کامپایلر زبان #C) کدهای نوشته شده به MSIL تبدیل می شوند.
مرسی . متوجه شدم. فقط اگر یک منبع خوبی در این رابطه دیدید و به من معرفی کنید ممنون میشم.
دوستان عزیز، من از VC#.NET استفاده میکنم. متاسفانه این مشکل رو دارم:
برای اجرای یک برنامه مثلا 100 کیلو بایتی نیاز به نصب دات نت فریم ورک 20 مگابایتی دارید.
میشه توی Visual Studio تنظیماتی چیزی رو دستکاری کرد تاNET. رو Cancel کردD:
منظورم اینه که با همون نرم افزار برنامه هامو بنویسم ولی نیازی به NET Framework. نداشته باشه؟
ممنون میشم اگه جوابمو سریعتر بفرمایید، آخه خیلی نیاز دارم به جواب این سوال.
باز هم ممنون
در این مورد به مراتب توی سایت صحبت شده و انواع روشها هم بررسی شدن، جستجو کنیدنقل قول:
برای اجرای یک برنامه مثلا 100 کیلو بایتی نیاز به نصب دات نت فریم ورک 20 مگابایتی دارید.
میشه توی Visual Studio تنظیماتی چیزی رو دستکاری کرد تاNET. رو Cancel کردD:
منظورم اینه که با همون نرم افزار برنامه هامو بنویسم ولی نیازی به NET Framework. نداشته باشه؟
ممنون میشم اگه جوابمو سریعتر بفرمایید، آخه خیلی نیاز دارم به جواب این سوال.
باز هم ممنون
می تونید از کتاب Jeffrey Richter به نام Applied .NET Framework استفاده کنید. کتاب Customizing Common Language Runtime هم از MS Press می تونه خیلی توی معماری .NET و درک بهتر اون بهتون کمک کنه.
موفق باشید.
با سی شارپ شما حتما به فریمورک نیاز دارید عملا هیچ راهی دیگری نیست
البته با ویژوال سی ++ میتوانید پروژه های ویندوز 32 بیتی بنویسید
به مراتب در مورد حذف فریم ورک و نحوه انجام اون توی سایت صحبت شده، و این کار کاملا هم امکان پذیرهنقل قول:
با سی شارپ شما حتما به فریمورک نیاز دارید عملا هیچ راهی دیگری نیست
به اینجا یک نگاهی بندازید.
و به مراتب هم نتیجه گیری شده که یا امکان پذیر نیست یا اگر هم هست به صورت کاملا محدود و با دردسر های زیادی همراه .
این نتیجه گیری خود شما بوده است :
نقل قول:
من فکر کردم با توضیحاتی که دادم دیگه مشخص شده که اصلا باید فریم ورک رو حذف کنیم یا نه. اما باز هم برای نتیجه گیری میگم.
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
استفاده از ابزارهایی که فریم ورک رو حذف می کنن مثل همین نرم افزاری که معرفی شد و یا انجام این کار به صورت دستی بهتره تا حد ممکن انجام نشه، چون تنها سودی که داره اینه که حجم برنامه رو کاهش میده، اما بدی هایی هم داره که به زودی در مورد اونها هم توضیح میدم.
دوستان عزیز خیلی خیلی ازتون ممنونم. و خیلی هم خوشحالم که زود به جوابم رسیدم:
ar.shirazi نوشته است:
بهترین راه برای این کار اینه که به کاربر بگیم باید فریم ورک رو روی سیستم خودش نصب شده داشته باشه تا بتونه به سادگی از تمام برنامه های نوشته شده در .NET استفاده کنه.
ببینم عزیزان من یه چیزی برام نامفهومه:
تمام کسانی که میخوان فریم ورک رو حذف کنن مثل اینکه به یه سری چیزها توجه نمیکنن.
ببینید عزیزان اگه قرار باشه کاربری از یه نرم افزار که با دات نت تهیه شده استفاده کنه باید سیستم مناسبی هم برای راه اندازی اش تهیه کنه،دیگه اون عصر فلاپی دیسک های 200 کیلو بایتی هم گذشت.حالا برای شما چیش مشکل سازه که برای نصب برنامه های دات نت نیاز به 20 مگابایت فریم ورک هست ؟ خوب مگه چی میشه ؟
سیستم فضای کافی داره،سخت افار مناسب هم مهیا هست و 100% هم برای اجرای هرچه بهتر و درست برنامه شما بهش نیاز هست.حالا چرا میخواین حذفش کنین ؟
یعنی مثلا شما اگه بخواین سی دی یکی از نرم افزار هاتون رو به فروش برسونید یا به کاربری بدین،خیلی براتون فرق میکنه و مهمه که فریم ورک 20 مگاباتی هم کنارش باشه یا نه ؟
در مورد اینکه چجوری میشه فریم ورک رو حذف کرد و فقط از کتابخانه های لازم استفاده کرد هم بحث شده و نتیجه تجربی خود بنده خیر هست. این کار یا شدنی نیست و یا خیلی مشکل و باگ ایجاد میکنه.
ببینید ، به هر حال فریمورک یک محدودیت است . هرچقدر هم دات نت فریمورک کم حجم باشد و ...
برای کارهای مثل سی دی های آموزشی و ... که autorun و ... میخواهند مناسب نیست.
اصولا حذف فریمورک کاری است غیر اصولی .
دوستان برام سواله که :
کلمه ado.net مخفف چه کلمه ای است ؟
net. چی ؟
با سپاس
Microsoft .NET is an umbrella term that applies to a wide collection of products and technologies from Microsoft. Most have in common a dependence on the Microsoft .NET Framework, a component of the Windows operating system.
for more information click here.
زبانهای برنامه نویسی در دات نت برای اینکه به Code Machine تبدیل شوند تا توسط CPU مورد استفاده قرار بگیرند ابتدا به Low Level Language تبدیل شده که به آن IL (Intermediat Languge) میگویند.سپس نوسط محیطی تحت عنوان Net Frame Work که بمانند یک سیستم عامل کوچک وظیفه مدیریت پروژه و کدها را بر عهده دارد به Code Machine که در اصطلاح تخصصی به آن Native میگویند تبدیل شده تا در حافظه RAM قرار گرفته و توسط CPU مورد استفاده قرار گیرند . لازم به توضیح است که این مکانیزم تبدیل Net Language به Machine Code ابتدا در زبان برنامه نویسی Java مورد استفاده قرار میگرفت با این تفاوت که به جای Net Frame Work از یک سیستم عامل کوچک به نام Virtual Machine استفاده می شده است.
با عذر خواهی از اظهار نظر این حقیر در وجود اساتید بزرگوار.
در تکمیل (و نیز تکرار) گفته ها در این زمینه، باید بگم این کار توسط CLR که قسمتی از .NET Framework رو تشکیل می ده انجام میشه. قسمتهای دیگه در این امر دخیل نیستن. اگر بخواهیم قضیه رو موشکافانه بررسی کنیم، وظیفه مذکور از وظایف JIT یا Just In-Time Compiler هست که در مورد نحوه عملکرد اون به تفصیل در سایت من و یا دیگر دوستان صحبت کردیم.نقل قول:
سپس نوسط محیطی تحت عنوان Net Frame Work که بمانند یک سیستم عامل کوچک وظیفه مدیریت پروژه و کدها را بر عهده دارد به Code Machine که در اصطلاح تخصصی به آن Native میگویند تبدیل شده تا در حافظه RAM قرار گرفته و توسط CPU مورد استفاده قرار گیرند
موفق باشید
سلام من یک سوال دارم.آیا راهی نیست که لازم نباشهNET Framework 2.0 رابرروی سیستمی که می خواهیم برنامه را برروی آن اجرا کنیم نصب کنیم.وهمچنین اگر راهی نیست چطور یک بسته بسازم که بتونه بر روی سیستمی دیگه هم NET Framework 2.0 و هم برنامه من رو نصب کنه؟ بی نهایت ممنون
در جواب اولی باید بگم نه و در جواب دومی : اگر برای برنامه هاتون توسط خود VS.Net ستاپ درست کنید این کار انجام میشه.
برای درست کردن فایل setup باید وقتی پروژه تون تو VS.NET باز هست منوی build رو باز کنید, و روی publish "project name" که project name اسم پروژه شماست, کلیک کنید و دستورها رو طی کنید.
من خودم فکر می کنم که با درست کردن فایل setup دیگه لازم با نسب فریم ورک نباشه. اما وقتی این همه خبره توش موندن پس حتماً فریم ورک هم تو این پروسه نسب می شه!
سلام
دات نت جدا از بحث IL و فنی آن، یک سری ابزار ها و امکانات در اختیار قرار میدهد که
برنامه نویسی که این امکانات را خوب بشناسد و درست استفاده کند از کار و زیبای net. لذت میبرد
و برنامه نویس ساده و تاز وارد را قادر به نوشتن برنامه های وب و ویندوز نسبتا خوبی میکند که باعث میشود
برنامه نویس تازه وارد احتمالا تنبل و پر توقع شود و شاید چون از این همه ابزار درست و به جا و کامل استفاده نمیکند
احتمالا فکر میکند ایراد کار از microsoft و net. است نه از برنامه بنده
در مورد این سوال که exe دات نت مستقل میشود یا نه فکر کنم اگه تو گوگلم جوستجو کنیم گوگل به barnamenevis.org لینک میده:چشمک:
http://blog.colinmackay.net/archive/2007/08/26/321.aspx
با این نرم افزار SoftInstall.net مثل آب خوردن فایل exe رو بی نیاز به net. میکنه
https://barnamenevis.org/showth...ight=framework
http://www.bitfactorysoftware.com/Pr.../Features.aspx
http://rapidshare.com/files/13461774...l.net.msi.html
با این نرم افزار هم میشه از این کارا کرد و جواب داده
http://www.thinstall.com/solutions/net_virtual.php
بعدشم اگه دوستان یکم صبر کنن یکی دو سه سال دیگه همه سیستم عاملها net. پشتیبانی میکنن
مثل ویستا
اسمبلی ایجاد شده از برنامه (IL) مثل مفسر ها اجرا میشه یعنی خط به خط ترجمه و اجرا می شه یا چون نزدیک به زبان ماشین هست طور دیگه ای اجرا میشه؟
Microsoft .NET (pronounced “dot net”) is a software component that runs on the Windows operating system. .NET provides tools and libraries that enable developers to create Windows software much faster and easier. .NET benefits end-users by providing applications of higher capability, quality and security. The .NET Framework must be installed on a user’s PC to run .NET applications.
هیچ کدوم
به صورت Just In Time و توسط JIT Compiler اجرا میشه
بدین صورت که هر قسمت کوچکی از IL که تو لحظه مورد نیاز باشه؛ به صورتی که به بهترین روش روی اون سخت افزار جاری اجرا بشه؛ کامپایل و اجرا میشه.
این که حداکثر کارآیی در چه صورت به وجود میآد رو JIT Compiler که اکثر CPU ها رو میشناسه؛تصمیم میگیره.
یا مثلا وقتی برنامت رو به صورت Parallel مینویسی؛ این JIT هستش که میبینه که چند تا CPU و Core وجود داره؛ و اون رو به مناسب ترین وجه اجرا میکنه.
اگه برنامه dynamic بوده باشه؛ اول تبدیل به IL میشه و بعد در صورت امکان اجرا میشه؛ یا خطا میده.
در کل به نظر من واقعا کارآیی بالایی داره؛ و این کارآیی رو فقط با ++C و C و اسمبلی میتونی به دست بیآری.
يكي از دوستان گفته بود كه چند كامپايلر داره دات نت اما بايد بگم :
نه اصلا اين طور نيست چون همه يك موضوع واحد دارند شما احساس كردي كه چند تا كامپايلر داره متن زير رو بخون:
All languages that execute within the .NET Framework compile down to the same thing: a
variety of bytecode known as Intermediate Language (or IL) rather than to a languagespecific
intermediate object code. This means that no matter if you compile a VB program, a
Visual C++ program, or a C# program, you’ll end up with the same form of intermediate
code
متشكرم
این که همه ی زبان ها پس از کامپایل به یک چیز ( IL ) تبدیل میشوند؛ دلیل نمیشه همه شون یه جور کامپایل شن !
از قم و رشت و تبریز و ورامین 4 نفر آدم راه میفتن میرن تهران
آخر سر همشون تهرانن؛ ولی لزوما از یه راه نیومدن
من هم با دوستمون sia_2007 موافقم ، بینید زمانی که یه کدی تو دات نت(به هر زبانی) نوشته میشه تا قبل رسیدن به مرحله IL توسط کامپایلر مخصوص به خود اون زبان کامپایل میشه
سلام،
مهمترین هدفی که مایکروسافت از ایجاد تکنولوژی دات نت دنبال کرده Manage کردن فرآیند ساخت و توسعه نرم افزار هست. دات نت سعی بر این داره که برنامه نویس تمرکز بر روی اصل مسئله داشته باشه نه اینکه درگیر مسائلی مثل مدیریت ایجاد و تخریب اشیاء در Heap، یا نگرانی در مورد برنامه نویسی موازی و چند نخی، Versioning ماژول های تشکیل دهنده نرم افزار و مانند اینها داشته باشه. در دات نت همه چیز شیء هست مثلاً عدد 5 در دات نت یک شیء محسوب می شه نه یک عدد!
به هر حال تاکید اصلی دات نت حفظ دید شیء گرائی ، مدیریت به معنی جلوگیری از درگیری برنامه نویس با مفاهیمی مانند هماهنگی میان نخ های اجرایی، مدیریت حافظه و امثال اینهاست و در نهایت حفظ شعار Keep it simple مایکروسافت هست.
http://i.msdn.microsoft.com/dynimg/IC104620.gif
مهمترین اهداف ایجاد:
To provide a consistent object-oriented programming environment whether object code is stored and executed locally, executed locally but Internet-distributed, or executed remotely.
To provide a code-execution environment that minimizes software deployment and versioning conflicts.
To provide a code-execution environment that promotes safe execution of code, including code created by an unknown or semi-trusted third party.
To provide a code-execution environment that eliminates the performance problems of scripted or interpreted environments.
To make the developer experience consistent across widely varying types of applications, such as Windows-based applications and Web-based applications.
To build all communication on industry standards to ensure that code based on the .NET Framework can integrate with any other code.
منبع: http://msdn.microsoft.com/en-us/library/zw4w595w.aspx
با سلام من یک سوال داشتم ایا واقعا IL یا MSIL روی همه سیستم عامل ها مثل mac , linux کامپایل میشه ؟ تا جایی که من می دونم فقط روی خود microsoft یا همون windows اجرا میشه تازه اونم به NET Framework نیاز داره , فقط جاوا روی تمام سیستم عامل ها بخاطر این bye code ش جواب میده , حالا راستش نمی دونم اگه میشه درستی یاغلطی رو به من هم بگین
ممنون