نقل از :
http://csharp-persian.netfirms.com/Net_Framework/Net_Overview_Sub.htm
================
مفاهيم تكنولوژي Net.
مقدمه
C# يكي از زبانهاي جديد برنامهسازي شيگرا است كه با ارائة رهيافت Component-Based به طراحي و توسعه نرمافزار ميپردازد. آنچه ما در حال حاضر از زبانهاي برنامهسازي Component-Based در اختيار داريم و آنچه كه C# در اختيار ما قرار ميدهد، افق جديدي به سوي توليد و طراحي نرمافزارهاي پيشرفته را در روي ما قرار ميدهند.
نرمافزار، به عنوان يك سرويس، هدف اصلي نسل بعدي در سيستمهاي محاسباتي است. براي مثال، C# زباني مناسب براي توليد و طراحي صفحات وب، ايجاد اجزايي با قابليت استفاده مجدد و ايجاد محيطهايي چند رسانهاي را به عنوان زباني كه هدفش توسعه ايجاد نرمافزارهاي پيشرفته است، در اختيار ما قرار ميدهد.
زبان برنامهسازي C#، به همراه تكنولوژي جديد شركت نرمافزاري مايكروسافت يعني.Net ارائه گرديد، از اين رو از تكنولوژي .Net اين شركت بهره ميبرد. پس در ابتدا به بيان مطالبي درباره محيط .Net ميپردازيم.
چرا .Net؟
در گذشته زبانهاي برنامهسازي، سيستمهاي عامل و محيطهاي اجرايي نرمافزارها براي دورهاي خاص ساخته ميشدند. هنگاميكه برنامهها از محيطهاي روميزي(Desktop) به اينترنت منتقل ميشدند، ابزارهاي موجود نيازمند API هايي اضافي و قابليتهاي ديگري بودند. بيشتر اين قابليتها در كنار زبانهاي برنامهسازي بعنوان ابزارهايي جهت رفع اين نيازمنديها ارائه ميشدند. هرچند اين ابزارهاي اضافي بصورت قابل توجهي نيازمنديها را حل كرده و باعث رسيدن اينترنت به وضعيت كنوني شدند، اما همچنان مسائل بسياري وجود داشت كه نياز به حل شدن داشتند.
.Net به منظور پشتيباني از كاربردهاي عصر جديد اينترنت ساخته شد. مواردي همچون گسترش، امنيت و versioning، كه از مسايل مهممي بودند، توسط .Net پوشش داده شدند. قسمت مركزي .Net بخش CLR (Common Language Runtime) است كه يك موتور اجرايي مجازي است كه از توسعه، امنيت و ارتقاي نسخه كد پشتيباني مينمايد. در گذشته چنين امكاناتي براي كدهاي كامپايل شده فراهم نبود. بدليل اينكه .Net توانست بر اين مشكلات اساسي فائق آيد، راه حل قدرتمندتري جهت ساخت برنامههاي تحت اينترنت به شمار ميرود.
.Net چيست؟
.Net محيطي جهت ساخت برنامههاي توزيع شده است كه شامل ابزارهايي نظير ""كتابخانه كلاسهاي پايه"(BCL : Base Class Library)، CLR و زبانهاي برنامهنويسي است. اين ابزارها امكان ساخت انواع مختلفي از نرمافزارها، از قبيل فرمهاي ويندوز، ADO.Net، ASP.Net و سرويسهاي وب، را فراهم ميآورند.
فرمهاي ويندوز، مجموعهاي از كتابخانهها جهت ساخت رابطهاي كاربر گرافيكي براي برنامههاي كاربردي است. اين كتابخانهها اغلب API هاي Win32 را در خود دارا ميباشند. همچنين امكان استفاده از رهيافت شيگرايي را جهت توليد آسان برنامههاي تحت ويندوز، فراهم ميآورند.
ADO.Net مجموعهاي از كلاسهاي شيگرايي است كه جهت ساخت مولفههاي داده و سطوح دسترسي داده در برنامههاي n-tiered مورد استفاده قرار ميگيرد.
ASP.Net شامل مدل برنامهنويسي فرمهاي وب است كه بوسيلة آن برنامههاي تحت وب ساخته شده و تحت اينترنت قابليت اجرا پيدا كرده و از طريق مرورگر(Browser) قابل دسترسي ميباشند. اين روش مدل بهبود يافته برنامهسازي وب است كه در آن كدها در سرور كامپايل ميشوند ولي همانند صفحات HTML در كامپيوتر مشتري اجرا ميشوند.
سرويسهاي وب، رهيافتي جديد، مستقل از platform و استاندار، جهت ايجاد ارتباط و فعاليت بين سيستمهاي ناهمگون در اينترنت، ميباشند. سرويسهاي وب .Net، از زير ساخت شيگرايي برنامهنويسي ASP.Net استفاده ميكنند، اما همچنان از استانداردهاي باز و مدلي بر پاية پيغام(Message Based Model) استفاده مينمايند. استفاده از استانداردهاي باز از قبيل XML، WSDL و UDDI باعث ميشوند تا سرويسهاي وب با ساير سرويسهاي وب استاندارد كه پيادهسازيهايي متفاوت دارند، بدون توجه به محيط و platform آنها، ارتباط برقرار نمايند.
اين چند نمونه، اندكي از انواع مختلف نرمافزارهايي بودند كه ميتوان تحت .Net به پيادهسازي آنها پرداخت.
كتابخانههاي كلاسهاي پايه(Base Class Library : BCL)
BCL در .Net، شامل هزاران نوع قابل استفاده، جهت افزايش بهرهوري در ساخت برنامههاي .Net است. به علت گستردگي BCL يادگيري تمام كلاسهاي آن وقتگير بوده و امكان پذير نميباشد، به همين دليل براي صرفهجويي در زمان بهتر است قبل از ايجاد يك نوع خاص به جستجوي نوعهاي موجود در BCL بپردازيم. نگاهي كلي به BCL ميتواند بسيار سودمند باشد. جدول زير Namespace هاي مهم و توضيح نوعهاي مختلف BCL را نمايش ميدهد.
جدول را در سایت اصلی مشاهده کنید. انتقالش فعلا مشکل بود.
(Common Language Runtime)CLR
CLR يك موتور اجرايي است كه با هدف اصلي اجراي هدايت شدة كدها در .Net ايجاد گرديده است. CLR به مديريت اجرا، ارتقاي نسخه و امنيت تمامي كدها در .Net ميپردازد. به همين دليل كدهاي .Net يا C# اغلب تحت عنوان كدهاي مديريت شده، شناخته ميشوند.(Managed Code) تمامي كدهايي كه به CLR مرتبت هستند، تحت عنوان "مديريت شده" و كدهايي توسط CLR مديريت نشدهاند، بلكه مستقيماً به كد ماشين تبديل ميشوند، تحت عنوان "مديريت نشده" بيان ميشوند.
كدهاي مديريت شده، به كد ماشين كامپايل نميشوند، بلكه به زبان سطح مياني مايكروسافت(MSIL) كامپايل شده و مورد استفاده قرار ميگيرند. اين زبان سطح مياني را ميتوان زباني شبيه به زبان اسمبلي تصور كرد. IL در حافظه بارگذاري ميشود و بلافاصله بوسيلة CLR در حافظه به كد ماشين كامپايل ميگردد.
برنامههاي .Net از اسمبليهايي تشكيل شدهاند كه اجزاي خودكار منطقي توسعه، شناسايي و امنيت به حساب ميآيند و تفاوت آنها با روشهاي قديمي در آن است كه اسمبلي ميتواند شامل يك يا چندين فايل باشد. اسمبلي .Net به صورت يك فايل اجرايي تك يا يك فايل كتابخانهاي است، اما ممكن است حاوي ماژولها، كه كدهايي غير اجرايي بوده و قابليت استفادة مجدد را دارند، نيز باشد.
مسئلة مهم ديگر در مورد CLR، نحوة بارگذاري(Load) و اجراي برنامه توسط آن است. به محض اينكه برنامة .Net شروع به اجرا ميكند، ويندوز اسمبلي .Net راتشخيص داده و CLR را اجرا ميكند. سپس CLR نقطه شروع برنامه را شناسايي و پروسة تعيين انواع كه در آن، محل قرارگيري انواع مختلف بكار رفته در برنامه مشخص ميشود را، اجرا ميكند. اسمبلي شناسايي شده در پروسة Loader بارگذاري ميگردد.
زبانهاي برنامهنويسي
قسمت مهم ديگر .Net، پشتيباني آن از چندين زبان برنامهنويسي متفاوت است. IL طوري طراحي شده است كه از چندين زبان برنامهنويسي پشتيباني نمايد. در حقيقت، هم اكنون دهها زبان برنامهنويسي مورد پشتيباني و پذيرش IL ميباشند. علاوه بر C#، .Net شامل زبانهايي نظير Visual Basic، Jscript، J# و C++ نيز ميباشد. برخي ديگر از زبانهاي برنامهسازي مهم كه بوسيلة IL پشتيباني ميشوند عبارتند از : Borland Delphi.Net، Cobol.Net، Fujitsu، Python.Net، Perl.Net و بسياري ديگر از زبانهاي برنامهسازي كه تحت .Net عمل ميكنند و بوسيلة آن مورد پذيرش هستند.
عامل اصلي نگهدارندة اين زبانها در كنار يكديگر، (Common Types System)CTS است. اگرچه هر يك از اين زبانها نوعهاي خود را در روشهاي خاص خود ارائه ميدهند، رفتار زيرساختي هر يك از آنها نسبت به CLR يكسان است. CTS اعضاي يك نوع را مشخص مينمايد : فيلد، متد، رخداد، ويژگي(Property) و انديكسر(Indexer). همچنين سطوح دسترسي به آنها را نيز معين مينمايد : عمومي(public)، داخلي(internal)، حفاظت شده (protected) ، حفاظت شده داخلي(protected internal) و خصوصي(private). البته بايد توجه كرد كه مسلماً كلمات كليدي هر يك از زبانها با ساير زبانها متفاوت است اما ساختار اصلي آنها در CLR يكسان است.
سوال مهمي كه در اينجا مطرح ميگردد، اينست كه چرا از چندين زبان استفاده ميشود؟ براي پاسخ به اين سوال توجه شما را به پروژههاي تجاري عظيم جلب ميكنم. همانطور كه ميدانيد هر پروژه تجاري داراي شرايط و ويژگيهاي خاص به خود است و يكي از مهمترين عوامل در توليد و راهبري پروژههاي امروزي امكان استفادة مجدد از برنامهها است. استفاده از چندين زبان برنامهنويسي اولاً ميتواند نياز هر نوع پروژهاي را طبق خواستهاي آن برآورده كند و ثانياً قابليت استفادة مجدد را افزايش ميدهد.
يكي ديگر از مزاياي استفاده از چندين زبان برنامهنويسي، تجارت بينالمللي است، بدين معنا كه هر شركت ميتواند نرمافزار و محصول خود را با يكي از زبانهاي مورد نظر خود ساخته و بدون نگراني از عدم همخواني آن با ساير محصولات به بازار ارايه نمايد. پشتيباني .Net از رنج وسيعي از زبانهاي برنامهنويسي امكان به اشتراكگذاري كدها و استفادة مجدد از برنامهها را به راحتي فراهم كرده و عصر جديدي را در توليد نرمافزار ايجاد نموده است.
مزاياي پشتيباني از چندين زبان برنامهنويسي
اين امكان باعث ميشود تا هر فرد با توجه به علايق و سوابق كاري خود به برنامهنويسي با زباني خاص بپردازد. بعنوان مثال فرض كنيد گروهي مدتها با COBOL برنامهنويسي كردهاند، حال چون .Net از اين زبان نيز پشتيباني ميكند، اين گروه با صرف مدت زماني كوتاه ميتوانند به .Net رويآورده و از مزاياي آن بهرهمند شوند. از ديگر مزاياي چند زياني استفادة مجدد از مولفهها و اجزاي برنامههاي نوشته شده است.
البته به يك نكته مهم بايد توجه كرد، كه منظور در اينجا اين نيست كه در يك پروژه با چندين زبان شروع به برنامهنويسي كنيم، اما با قابليت .Net ميتوانيم مثلاً dll هاي نوشته شده به زبان C# را در يك پروژهاي كه با زبان VB.Net نوشته ميشود، مورد استفاده قرار دهيم.
در اين جا بايد به اين نكته نيز توجه كرد كه همگوني و سازگاري بين دو زبان هميشه بصورت كامل و خودكار صورت نميگيرد و در برخي موارد هر زبان ويژگيهاي خاص خود را دارد كه در زبان ديگر قابل اجرا و شناسايي نميباشد. بعنوان مثال، برنامههاي VB.Net نميتوانند با dll هاي C# كه داراي متدهاي عمومي هستند و نوع آنها به طور اشارهگر(pointer) تعريف شده است، كار نمايند.
"خصوصيات عمومي زبان" يا CLS به منظور حل چنين مشكلاتي طراحي شده است. CLS ويژگيهاي عمومي يك زبان را مشخص ميكند و تعيين ميكند كه زبانها در صورت نياز به اشتراكگذاري كدها تا چه حدي ميتوانند عمل نمايند. بعنوان مثال، C# براي اينكه بخواهد با CLS همخواني داشته باشد، نبايد اشارهگرها و نوعهاي بدون علامت را به صورت عمومي(public) در نظر بگيرد.
===============================
نقل از :
http://www.tarfandestan.com/ftopict-1046.html
DLL چيست ؟
DLL (dynamic link library) ويژگي خاصي در مايكروسافت ويندوز و سيستم عامل OS/2 مي باشد واين امكان را فراهم مي سازد تا روالهاي اجرايي به عنوان فايل هاي جداگانه اي با پسوند DLL ذخيره شوند. وفقط هنگام نياز برنامه اي فراخواننده آنها ، بارگذاري شوند . اين ويژگي چندين مزيت دارد : اول اينكه چون فايل هاي DLL فقط در هنگام نياز بارگذاري مي شوند ، وقتي مورد استفاده نباشند ، حافظه اي رو مورد مصرف قرار نمي دهند . دوم اينكه چون فايل DLL فايلي جداگانه هست ، برنامه نويسان مي توانند بدون تاثير روي برنامه فراخوان يا فايلهاي DLL ديگر ، اصلاحات يا تغييراتي را در يك واحد ( فايل DLL ) انجام دهند .