كامپوننتهاي Data Source
سومين تغيير مهم در ASP.NET 2.0، به ميدان آمدن اشياي جديدي است كه Data Source ناميده ميشوند. چنان كه ميدانيد، در ASP.NET 1.x براي متصل كردن لايه نمايش يا همان صفحات وب (كه دربرگيرنده عناصر مختلف دايناميك مانند Server Control ها هستند) به لايه دادهها يا قسمت اصلي نرمافزار بايد برنامهنويس و طراح وب به صورت دستي مقداري كدنويسي كند. مثلاً اگر براي نمايش دادن فهرستي از مقالات از شيء DataGrid استفاده كرده باشيد، براي متصل كردن آن به بانك اطلاعاتي SQL Server يا اوراكل يا اكسس بايد از اينترفيس ADO.NET كمك بگيريد و مقداري كدنويسي كنيد تا نهايتاً يك شيء با ساختار و ماهيت IEnumerable مانند DataSet يا DataReader توليد كنيد و آن را به عنوان ورودي به DataGrid تزريق نماييد. اينها اساساً اشيايي مقيم در حافظه و غيرمتصل به پايگاهدادهها (disconnected) هستند كه هيچ تصويري درباره منشأ دادههايي كه داخل خودشان است ندارند.
علاوه بر اين، اگر بخواهيد روي اطلاعاتِ به نمايش درآمده كارهايي مانند مرتبسازي (storage) يا صفحهبندي
(custom paging) انجام دهيد، بايد چند تابع و چند خط كدنويسي ديگر هم انجام دهيد و در سراسر كد آن صفحه به ويژه مراقب عملكرد صحيح كد خود در اين زمينه باشيد. فلسفه مطرحشده اشياي Data Source در ASP.NET 2.0اين است كه زحمت اتصال به پايگاه دادهها و مديريتكردن عملياتي مانند مرتبسازي را از برنامهنويسي كم كند. در حقيقت شما به وسيله Data Source به جاي اينكه به يك شيء IEnumerable متصل شويد، مستقيماً به خود بانكاطلاعاتي وصل ميشويد.
اشياي Data Source ميتوانند تعدادي از عمليات پايهاي مانند Insert ،Delete ،Select ،Update ،Sort و Count را انجام دهند و لازم نيست براي انجام اين عمليات كدنويسي اضافي انجام دهيد. براي استفاده از اشياي Data source بايد شيء مورد نظر شما قابليت استفاده از Data Source را داشته باشد. شيء DataGrid اين قابليت را ندارد، اما در ASP.NET 2.0 شيء جديدي معرفي شده است كه GridView نام دارد و مدل توسعه يافتهاي ازDataGrid است كه همان قابليتها را به علاوه يك سري امكانات و تواناييهاي جديد در خود دارد.
يكي از اين قابليتهاي جديد، همين امكان اتصال به Data Source است. شكل 11 يك نمونه كد ساده را نشان ميدهد. در ابتداي اين كد يك شيء از نوع sqlDataSource معرفي شدهاست كه ميتواند فرمانهاي Select وUpdate را روي دادههاي يك جدول از يك بانك اطلاعاتي SQL Server اجرا كند. كمي پايينتر، يك GridView معرفي شده كه منبع اطلاعاتش همان sqlDataSource بالايي است.
در پتلفرم ASP.NET 2.0 نوع ديگري از Data Sourceها نيز وجود دارند. شكل 12 يك نمونه ObjectDataSource را نشان ميدهد. در اين دسته از اشياء ميتوانيد به جاي اتصال به پايگاههاي اطلاعاتي متداول، دادههاي مورد نياز را از شيء ديگري كه خودتان ساختهايد، بگيريد. مثال شكل 12 نشان ميدهد كه چگونه اين شيء فرامين Select وUpdate را با مراجعه به توابع GetArticles و ModifyArticles كه در شيء MyObject تعريف شدهاند به انجام ميرساند.
نكته جالب در مورد Data Source اين است كه اينها اشيايي دوطرفه هستند كه هم براي نمايش اطلاعات (انتقال به GridView) و هم براي دريافت اطلاعات (گرفتن تغييرات و دادههاي جديد از GridView) قابل استفادهاند. كد شكل 13 يك ورودي از نوع Textbox را معرفي ميكند كه توانايي دريافت اطلاعات و منتقل كردن آن به Data Source را دارد. اين كار توسط تابعي به نام Bind انجام ميشود، كه معكوس تابع Eval است. تابع Eval كه براي نمايش اطلاعات استفاده ميشود براي همه برنامه نويسان ASP.NET 1.x كاملاً آشنا است. اكنون Data Source مسير بازگشت اطلاعات را نيز فراهم كرده است.
●Web Parts
عناصر Web Part از نرمافزار SharePoint به ارث رسيدهاند و البته فناوري ASP.NET مايكروسافت يكي از آخرين پلتفرمهايي است كه به اهميت و جذابيت اين نوع المانهاي تحت وب پيبرده است. عناصر Web Part بيشتر در پورتالها كاربرد دارند. يك Web Part پنجرهاي است كه اطلاعاتي را به كاربر نشان ميدهد. اما اين پنجره قابل بسته شدن نيز هست.
به عبارت ديگر، ميتوانيد پنجره مربوط به يك سري اطلاعات خاص را كه علاقهاي به آنها نداريد، ببنديد و دفعه بعد كه به سايت مراجعه و Login ميكنيد، تنظيمات پيشين شما هنوز معتبرند. مثلاً ممكن است به يك پورتال خبري مراجعه كنيد كه هرگونه خبر و مطلبي در آن پيدا ميشود. اما شما به گروه اخبار علمي و فرهنگي علاقهاي نداريد، ولي مطالعه اخبار ورزشي را دوست داريد. در اين صورت ميتوانيد پنجره يا كادر مربوط به اخبار علمي، فرهنگي را ببنديد. از اين به بعد سايت مورد بحث فقط مطالب دلخواه شما را نمايش خواهد داد. اين بخش از ASP.NET 2.0 را ميتوانيد در تركيب با سيستم Personalization بهكار ببريد.
كنترلهاي جديد
فناوري ASP.NET 2.0 حاوي 45 شيء جديد از نوع Server Control است. تمام اين اشياي جالب و سودمند را در كنار اشياي قديمي و متداول در صفحات ASP.NET را ميتوانيد در پنجره Toolbox نرمافزار ويژوال استوديوي 2005 پيدا كنيد. شكل 14 نمايي از اين بخش را نشان ميدهد.
اين كنترلها در چند دستهبندي شامل Core براي گروه كنترلهاي اصلي و پرمصرف، Data براي كنترلهاي مربوط به اتصال به منابع اطلاعاتي، Validation براي كنترلهاي بررسي اعتبار وروديهاي تايپ شده توسط كاربر، Navigation براي كنترلهاي مربوط به تسهيل ايجاد منو و نقشه سايت براي راهنمايي بازديدكننده، Login براي كنترلهاي مربوط به ثبتنام و ورود و خروج كاربران، WebParts براي كنترلهاي ساخت Web Partها در صفحه وب، HTML براي المانهاي كلاسيك وب و Crystal Reports براي كنترلهاي مخصوص توليد گزارش از روي دادهها است.
●Themes
تمها موجودات جديدي در فضاي ASP.NET هستند كه به دنياي طراحي صفحات دايناميك طراوت ميبخشند. تمها پوستههايي هستند كه ميتوانيد روي صفحات خود بكشيد. هر تم از مجموعهاي از فايلهاي CSS، تصاوير و پوسته كنترلها تشكيل شده است. يك پوسته كنترل (Control Skin) يك فايل متني است كه تنظيمات بصري پيشفرض يكServer Control را در خود دارد. به عنوان مثال، ميتوانيد به يك DataList در صفحه يك پوسته نسبت بدهيد. در اين صورت ظاهر گرافيكي و بصري آن مطابق موارد درج شده در فايل مذكور خواهد بود.
●Localization
براي ساختن يك سايت بزرگ و چندزبانه ميتوان روش ساده و در عين حال دشواري را در پيش گرفت: از هر صفحه به ازاي هر زبان يك نسخه بسازيد. به اين ترتيب براي آماده كردن سايتي كه مثلاً سي صفحه دارد، طراح بايد نود صفحه بسازد. آيا اين روش خوبي است؟ البته كه نه و تازه بايد درمورد Duplicate كردن ديتابيس و ساير منابع اطلاعاتي سايت هم فكري كرد. پس راهحل چيست؟
برنامهنويسان وب طي چند سال اخير متدولوژيهاي مختلفي را براي ساختن سايتهاي چند زبانه پيشنهاد كردهاند. اغلب اين راهكارها را تحت عنوان Localization ميتوان دسته بندي كرد.
اين اصطلاح البته درباره بوميكردن قسمتهاي مختلف سايتي كه تنها به يك زبان نوشته شده است نيز استفاده ميشود. به هرحال اگر بخواهيد ذات يك سيستم نرمافزاري را انگليسي نگهداريد، ولي بتوانيد به كمك آن اينترفيس و اطلاعات را به زبانهاي ديگر هم به كاربر نشان دهيد، لازم است از اين راهكارها بهره بگيريد. تاكنون اغلب راهكارهاي ارائه شده پيچيده و پيادهسازي آنها براي برنامهنويس دشوار بوده است.
فناوري ASP.NET 2.0 مدعي است كه پيادهسازي اين راهكار را براي برنامهنويسان آسان كرده است. گذشت زمان ميزان صحت اين ادعا را روشن خواهد كرد. به هرحال يك API نيز براي اين راهكار درنظر گرفته شده است.