يكي از محصولات نسبتاً محبوب در زمينه برنامهنويسي با استفاده از Widgetها، با نام SharePiont Portal Server2003 مطرح است كه Widgetهاي قابلاستفاده مجدد خود را WebPart ناميده است.
شركت مايكروسافت در ASP.NET2.0 كاملاً از WebPartها حمايت ميكند و جاي تعجب ندارد كه برنامه MicroSoft Office SharePoint Server2007 به همراه مجموعه Office عرضه شده است.
در اين مقاله اصول پايه مطرح در چهارچوبهاي WebPart مورد بررسي قرار ميگيرد. ميتوان اين مقاله را به عنوان پايهاي براي مباحث پيشرفتهتر نظير چگونگي پشتيباني از WebPartها در برنامه MOSS2007 در نظر گرفت.
مؤلفههاي اصلي چهارچوب WebPart در ASP.NET2.0
قبل از بررسي يك صفحه ساده وب كه با استفاده از WebPartها طراحي شده است، ابتدا مهمترين عناصر قابل استفاده در چهارچوب كاريNET. را مورد بررسي قرار ميدهيم كه براي توليد اين صفحه استفاده شدهاند:
- WebPartها: WebPart، يك Widget با قابليت استفاده مجدد است كه در صفحات وب به كار ميرود. كاربر ميتواند WebPart را به صفحات خود بيفزايد، آن را متناسب با نياز خود تنظيم كند يا حتي رابطههايي را بين اين WebPartها تعريف كند.
پيش از هر چيز بايد دانست كه WebPart در ASP.NET2.0 از كلاسSystem.Web.UI.WebControls.Controls.WebParts.WebPart مشتق شدهاست. يك نمونه خوب، Widgetاي است كه ترافيك را نمايش ميدهد.
كاربر نهايي ميتواند طوري آن را تنظيمكند كه اطلاعات مربوط به بزرگراههاي خاصي را نمايش دهد و از طريق ارتباط با يك WebPart ديگر بزرگراههاي ديگري را تعيين كند و كاربر با كليك روي آنها، آخرين اطلاعات ترافيكي مربوط به آنها را مشاهده كند. توليد چنين سيستمي در ASP.NET2.0 كار زياد سختي نيست.
- WebPartManager: اين كنترل به عنوان مهمترين سيستم بازرسي براي WebPartها در ASP.NET2.0 مطرح است. هر صفحه بايد فقط شامل يك WebPartManager باشد و اين عنصر مسئول همه عملكردها، رخدادها، و سفارشيسازيهاي مربوط به WebPartهاي مختلف موجود در آن صفحه است و آنها را مديريت ميكند.
همچنين ميتوان WebPartManager را به حالت (Mode)هاي مختلف تنظيم كرد. براي مثال، اگر طراح WebPartManager را در حالت Catalogue تنظيم كند، ميتواند WebPartهاي مورد نظر براي صفحه خود را از ميان مجموعهاي از WebPartها انتخاب كند.
Communication Mode، يكي ديگر از حالتها براي تنظيم صفحه است. در صورت انتخاب اين حالت ميتوان بين WebPartهاي مختلف مسيرهاي ارتباطي متعددي تعريف كرد.
- Various Zones: به نواحي مختلف صفحهZone ميگويند. پيادهسازي اينها از طريق كنترلهاي سرور زير صورت ميگيرد كه به همراه چهارچوب ارائه ميشوند:
- WebPartZone: يك WebPartZone عبارت است از كنترلي كه ناحيهاي از صفحه را تعيين ميكند تا آن ناحيه ميزباني يك يا چند WebPart را برعهده گيرد. همچنين WebPartZone كنترل نحوه نمايش يك WebPart را برعهده دارد.
همچنين هر كنترلي كه از كلاس WebPart به ارث نرسيده باشد، ميتواند به صورت يك WebPart ظاهر گردد و در يك WebPartZone ساكن شود. اين كار از طريق كلاس Generic طراحي شده براي WebPartها انجام ميشود كه از كلاس پايه WebPart به ارث ميرسد. البته با انجام اين كار، از بخشي از تواناييها و عملكردهاي كلاس WebPart محروم ميشويد.
CatalogtueZone: عبارت است از فهرست يا كاتالوگي كه طراح ميتواند از ميان گزينههاي آن موارد مورد نظر خود را انتخاب كرد. اين كنترل سرور تعداد كنترلهاي CatalogueParts را در خود نگه ميدارد و اين كنترلها نيز به نوبه خود WebPartهايي را نگه ميدارد كه تا كنون به سايت افزوده شدهاند و ميتوان آنها را به صفحات وب مختلف موجود در سايت افزود. كاربر ميتواند WebPartها را از كاتالوگ بردارد و به چندين WebPartZone موجود در يك صفحه بيفزايد.
سه نوع CatalogueParts وجود دارد كه عبارتند از: DeclarativeCatalogPart ،PageCatalogPart وImportCatalogPart.
EditorZone: ناحيهاي از صفحه است كه از كاربر نهايي ميخواهد WebPart را بنابر نياز خود سفارشي كند. همچنين ميتوان يك WebPart را در حالت اشتراكي (Share Mode) سفارشي كرد. در اين صورت يك مدير ميتواند WebPart را سفارشي كند و ساير كاربران ميتوانند آن را مشاهده كنند، ولي مجاز به سفارشي كردن آن نيستند.
ConnectionZone: اين ناحيه صفحه از كاربر نهايي ميخواهد با نحوه تبادل اطلاعات بين WebPartهاي مختلف قرار گرفته در يك صفحه را تعيين كند. براي مثال، ميتوانيد يك خواننده اطلاعات نوع RSS را بسازيد. در اين حالت يكي از WebPartها، OPMLهاي مربوط به كاربران را نگهداري ميكند و ديگري RSS را متناسب با سليقه مشتركان تغيير ميدهد.
ارتباط بين ايندو WebPart به اين صورت است كه WebPart از نوع OPML كه رديفهاي URL مربوط به RSS را تهيه ميكند و سپس WebPart خواننده RSS آن رديف را ميگيرد، مورد استفاده قرار ميدهد و آن را به شكلي مناسب نمايش ميدهد.
از آنجا كه اين مثال يك برنامه ساده از نوع ASP.NET2.0 است، ميتوانيد اين WebPart را به همراه الگوهاي Atlas نيز به كار ببريد (الگوهايي در محيط NET. براي پيادهسازي آسان فناوري ايجكس).
از جمله اين الگوها ميتوان به UpdatePanel يا كنترل ثانويهاي مانند telerik AJAX Panel اشاره كرد. حتي ميتوانيد PostBackها را با CallBack جايگزين كنيد و براي اين كار تقريباً نياز به نوشتن هيچگونه كدي وجود ندارد (در PostBack با اعمال هر گونه رخدادي توسط كاربر و ايجاد هرگونه تغييري روي كنترلها بايد كل صفحه وب نوسازي شود، ولي در CallBack اين تغييرات توسط كدهاي جاوا اسكريپت مديريت ميشود و به اين ترتيب ارسال اطلاعات به سرور و دريافت داده، بدون نياز به نوسازي كل صفحه انجام ميشود).
توليد يك WebPart ساده
حال كه با عناصر اصلي طراحي صفحات وب در ASP.NET2.0 آشنا شديد، زمان آن فرا رسيده است تا شروع به كار كنيد و اولين WebPart خود را ايجاد كنيد.
ميتوانيد هر كنترلي را با استفاده از كلاس Generic WebPart به اين نوع تبديل كنيد، اما چنين WebPartي يك مورد واقعي نخواهد بود؛ زيرا يك WebPart واقعي بايد از كلاس پايه System.Web.UI.WebParts.WebPart مشتق شده باشد. كد يك WebPart ساده كه فقط قرار است يك خط كد را نمايش دهد، به صورت زير است:
public class SimpleWebPart : WebPart
}
;"!private string displayText = "Hello World
[(WebBrowsable (true),(Personalizable (true]
public string DisplayText
}
{;get{return displayText
{;set{displayText = value
{
(protected override void Render(System.Web.UI.HtmlTextWriter writer
}
(writer.Write (displayText
{
فعلاً در مورد ويژگيهاي قابليت جستوجو در وب و امكان سفارشيسازي صفحات خود نگران نباشيد. نحوه ايجاد اين امكانات به زودي بررسي ميشود. فعلاً كافي است بدانيد كه اين يك كنترل ساده سرور است كه جعبه نمايشمتن (DisplayText) را تنظيم ميكند. سؤال دومي هم كه بايد حتماً بررسي شود، اين است: چگونه ميتوانم از اين WebPart استفاده كنم؟
نحوه استفاده از يك WebPart
يك سايت ساده را با استفاده از ASP.NET2.0 ايجاد كنيد. سپس به كلاس كتابخانهاي كه WebPart توليد شده توسط شما در آن قرار دارد، يك رابط ارجاع (Reference) اضافه كنيد. مراحل زير را روي كد مربوط به فايل توليد شده با نام Default.aspx
منبع: ماهنامه شبکه، با تشکر از گروه مهندسی فناوری اطلاعات دانشگاه پیام نور کرج