یکی از محصولات نسبتاً محبوب در زمینه برنامهنویسی با استفاده از Widgetها، با نام SharePiont Portal Server2003 مطرح است که Widgetهای قابلاستفاده مجدد خود را WebPart نامیده است.
شرکت مایکروسافت در ASP.NET2.0 کاملاً از WebPartها حمایت میکند و جای تعجب ندارد که برنامه MicroSoft Office SharePoint Server2007 به همراه مجموعه Office عرضه شده است.
در این مقاله اصول پایه مطرح در چهارچوبهای WebPart مورد بررسی قرار میگیرد. میتوان این مقاله را به عنوان پایهای برای مباحث پیشرفتهتر نظیر چگونگی پشتیبانی از WebPartها در برنامه MOSS2007 در نظر گرفت.
مؤلفههای اصلی چهارچوب WebPart در ASP.NET2.0

|
شکل 1 |
قبل از بررسی یک صفحه ساده وب که با استفاده از WebPartها طراحی شده است، ابتدا مهمترین عناصر قابل استفاده در چهارچوب کاریNET. را مورد بررسی قرار میدهیم که برای تولید این صفحه استفاده شدهاند:
- WebPartها: WebPart، یک Widget با قابلیت استفاده مجدد است که در صفحات وب به کار میرود. کاربر میتواند WebPart را به صفحات خود بیفزاید، آن را متناسب با نیاز خود تنظیم کند یا حتی رابطههایی را بین این WebPartها تعریف کند.

|
شکل 2 |
پیش از هر چیز باید دانست که 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ها انتخاب کند.

|
شکل 3 |
Communication Mode، یکی دیگر از حالتها برای تنظیم صفحه است. در صورت انتخاب این حالت میتوان بین WebPartهای مختلف مسیرهای ارتباطی متعددی تعریف کرد.
- Various Zones: به نواحی مختلف صفحهZone میگویند. پیادهسازی اینها از طریق کنترلهای سرور زیر صورت میگیرد که به همراه چهارچوب ارائه میشوند:

|
شکل 4 |
- WebPartZone: یک WebPartZone عبارت است از کنترلی که ناحیهای از صفحه را تعیین میکند تا آن ناحیه میزبانی یک یا چند WebPart را برعهده گیرد. همچنین WebPartZone کنترل نحوه نمایش یک WebPart را برعهده دارد.
همچنین هر کنترلی که از کلاس WebPart به ارث نرسیده باشد، میتواند به صورت یک WebPart ظاهر گردد و در یک WebPartZone ساکن شود. این کار از طریق کلاس Generic طراحی شده برای WebPartها انجام میشود که از کلاس پایه WebPart به ارث میرسد. البته با انجام این کار، از بخشی از تواناییها و عملکردهای کلاس WebPart محروم میشوید.
CatalogtueZone: عبارت است از فهرست یا کاتالوگی که طراح میتواند از میان گزینههای آن موارد مورد نظر خود را انتخاب کرد. این کنترل سرور تعداد کنترلهای CatalogueParts را در خود نگه میدارد و این کنترلها نیز به نوبه خود WebPartهایی را نگه میدارد که تا کنون به سایت افزوده شدهاند و میتوان آنها را به صفحات وب مختلف موجود در سایت افزود. کاربر میتواند WebPartها را از کاتالوگ بردارد و به چندین WebPartZone موجود در یک صفحه بیفزاید.

|
شکل 5 |
سه نوع CatalogueParts وجود دارد که عبارتند از: DeclarativeCatalogPart ،PageCatalogPart وImportCatalogPart.
EditorZone: ناحیهای از صفحه است که از کاربر نهایی میخواهد WebPart را بنابر نیاز خود سفارشی کند. همچنین میتوان یک WebPart را در حالت اشتراکی (Share Mode) سفارشی کرد. در این صورت یک مدیر میتواند WebPart را سفارشی کند و سایر کاربران میتوانند آن را مشاهده کنند، ولی مجاز به سفارشی کردن آن نیستند.

|
شکل 6 |
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 ساده

|
شکل 7 |
حال که با عناصر اصلی طراحی صفحات وب در 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
{
{

|

|
شکل 8 |
شکل 9 |
فعلاً در مورد ویژگیهای قابلیت جستوجو در وب و امکان سفارشیسازی صفحات خود نگران نباشید. نحوه ایجاد این امکانات به زودی بررسی میشود. فعلاً کافی است بدانید که این یک کنترل ساده سرور است که جعبه نمایشمتن (DisplayText) را تنظیم میکند. سؤال دومی هم که باید حتماً بررسی شود، این است: چگونه میتوانم از این WebPart استفاده کنم؟
نحوه استفاده از یک WebPart
یک سایت ساده را با استفاده از ASP.NET2.0 ایجاد کنید. سپس به کلاس کتابخانهای که WebPart تولید شده توسط شما در آن قرار دارد، یک رابط ارجاع (Reference) اضافه کنید. مراحل زیر را روی کد مربوط به فایل تولید شده با نام Default.aspx اجرا کنید.
- از ناحیه ToolBox یک WebPartManager را بردارید و روی صفحه قرار دهید (Drop & Drag) .
- دو WebPartZone را نیز به روش کشیدن و انداختن از ToolBox به صفحه اضافه کنید (این دو را به روشی که علاقه دارید، ویرایش کنید). WebPartZoneها من برای ساده کردن کار مطابق با شکل 1 که در محیط design view قابلمشاهده است، ویرایش شده است.
- حال WebPart سادهای را که در مرحله قبل نوشتهاید، به ناحیه WebPartZone1 اضافه کنید. بعد از انجام این کار صفحه طراحیشده در محیط design view به شکل 2 است.
- حالا این صفحه را اجرا کنید. باید WebPart شما به درستی در مرورگر نمایشداده شود. همچنین یک منوی مناسب در کنار WebPartZone نمایش داده میشود. وقتی گزینه Minimize را انتخاب کنید (مطابق شکل3)، پنجره تولید شده توسط WebPart به راحتی بسته میشود.
کد ایجاد شده تا این لحظه در فهرست زیر آمده و بسیار ساده است:
<"form id="form1" runat="server>
<"asp:WebPartManager ID="/img/2006/07/WebPartManager1" runat="server>
<"asp:WebPartZone ID="/img/2006/07/WebPartZone1" runat="server>
<"cc1:simplewebpart id="SimpleWebPart1>
<"asp:WebPartZone ID="/img/2006/07/WebPartZone2" runat="server>
سلام
پس کجایی
دیگه سری به ما نمیزنی
منتظره نظرات زیبات هستم
خیلی سالارید .
ما که توان اظهار نظر راجع به مطالب تخصصی شما را نداریم .
شما هم حالی از ما نمیپرسید .
سلام وبلاگ جالبی دارید
بیا دنبالم کارت دارم
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
حالا بیا دنبالم...
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
.
.
.
بیا نترس من باهاتم...
..
.
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
بیا پایین تر..
بیا حالا..
..
.
.
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
.
.
نه بابا سر کاری نیس...
بیا تو
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
یه خبر داغ داغ واست دارم..
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
.
.
دوس داری بدونی چیه اره؟
.
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.پس بیا...دیگه چیزی نمونده
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
.
.
.
چیه خسه شدی؟آره؟.
.
.
.
.
.
........(_.........
.../_)...) ........
../ (....(__)......
.(__)...oooO....
Oooo..............
.
.
.
.
.
.
خوب حالا چشاتو ببند تا بگم
1
2...
.
.
.
.
.
.
.
3
حالا بیا به من سر بزن
با قدمهایت وبلاگم را صفایی ده
سلام
خیلی وقته سر نزدم ببخشید
وبلاگت خیلی جالب شده من با وبلاگم کمی مشکل پیدا کردم واسه همین وبلاگ دیگری دارم که آدرس آن را میذارم خوشحال میشم به اینم سر بزنی