افزایش سرعت و کارایی برنامه نویسی در شرپوینت ( بخش سوم )

 

با
سلام

در
ادامه مجموعه مقالات افزایش کارایی و برنامه نویسی در شرپوینت امروز
میخواهم در مورد وب پارت مطالبی را خدمت شما ارائه کنم .

همه
ما در ایجاد نرم افزارهای تحت شرپوینت نیاز به ایجاد وب پارت پیدا خواهیم
کرد ، اما آیا تاکنون به فکر این بوده اید که چطور یک وب پارت با قابلیت و
کارایی بهتر بنویسید ؟ برای پاسخ به این سوال به ادامه مقاله توجه کنید .

ASP.Net
 یا شرپوینت ؟

برای
ایجاد وب پارت شما ۲ انتخاب متفاوت دارید ، وب پارت
ASP.Net  و وب پارت شرپوینت !

اولی
از فضای نام
System.Web.UI.WebControls.WebParts استفاده میکند و دومی از فضای
نام
Microsoft.SharePoint.WebPartPages .

در
واقع وب پارت های شرپوینت از زیر ساخت وب پارت های
ASP.Net  به ارث میبرند که در شکل زیر کاملا مشخص شده است :

 

چه موقع از وب پارت های ASP.Net  استفاده می کنیم ؟

یکی
از مهمترین مزیت هایی که این وب پارت ها برای ما دارند این است که شما
میتوانید آنها را در پروژه های دات نت نیز به کار ببرید در واقع با یک تیر
دو نشان بزنید . این مورد بیشتر زمانی استفاده می شود که شما بخواهید از وب
پارتی که ایجاد میکنید برای مقاصد تجاری استفاده کنید و آن را محدود به
شرپوینت نکنید . یکی دیگر از موارد استفده هنگامی است که میخواهید از این
وب پارت برای کارهای ساده مثل کار با داده های لیست ها و سایر کامپوننت ها و
امکانات شرپوینت استفاده کنید ، وقتی شما با استفاده از ویژوال استودیو و
ابزار
Visual Studio
Extension for sharepoint
 اقدام به ایجاد وب پارت میکنید به صورت پیش فرض از کلاس System.Web.UI.WebControls.WebParts استفاده میکند .

چه موقع از وب پارت های شرپوینت استفاده می کنیم ؟

این
نوع وب پارت ها که به نوعی از کلاس
System.Web.UI.WebControls.WebParts به ارث برده می شوند البته همراه
با قابلیت هایی که به آن اضافه گردیده برای شما امکانات بیشتری را فراهم
میکند و در موارد زیر از این نوع وب پارت ها استفاده میکنیم :

·         ارتباط بین وب پارت ها خارج از Webpart Zone

·         وب پارت هایی که فقط قابلیت اجرا در محیط
شرپوینت را داشته باشند .

·         استفاده از ارتباطات کلاینت

·         استفاده از زیرساختهای کش کردن اطلاعات

کش کردن اطلاعات

اما
مهمترین موضوع مورد بحث ما در مورد کش کردن اطلاعات در وب پارت ها می باشد
، موضوعی که کمتر به آن اهمیت داده می شود و در برخی از موارد مشاهده شده
که علت اصلی کند شدن سیستم و گذاشتن بار زیاد بر روی سرور می باشد .

فرض
کنید وب پارتی را طراحی کرده اید که به طور مثال تمام وظایف یک شخص را در
سطح فارم جمع آوری کرده و در وب پارت نمایش می دهد ، با فرض این مسئله
متوجه خواهید شد که با هر بار لود شدن صفحه چه باری بر روی سرور گذاشته
خواهد شد ؟

اما
راه حل این موضوع استفاده از استراتژی های کش کردن اطلاعات برای افزایش
کارایی می باشد .

اما
راه های مختلفی برای استفاده از این امکانات وجود دارد ، یکی از این موارد
استفاده از
Output Cache می باشد که میتوانید آنرا در
فایل
Master Page  قرار دهید
تا برای تمام صفحات اعمال شود .

راه
دیگر استفاده از کد در وب پارت با استفاده از آبجکت
System.Web.Caching.Cache می باشد که در مورد این موضوع صحبت خواهیم کرد .

توابعی
که برای کش کردن داده ها در اختیار شما قرار داده شده است شامل
PartCacheRead ، PartCacheWrite و PartCacheInvalidate می باشد که به ترتیب برای خواندن داده ها از کش ، نوشتن
بر روی آن و حذف اطلاعات از کش استفاده می شود .

در
این قسمت ما وب پارتی ایجاد کرده و کدهای زیر را در قسمت
Page Init  وارد می کنیم :

if (this.PartCacheRead(Storage.Shared,
"MyKey") == null)

{

    this.PartCacheWrite(Storage.Shared,
"MyKey", DateTime.Now.ToLongTimeString(),
TimeSpan.FromSeconds(10));

}

 

در
این مثال ما ابتدا چک میکنیم که درون کش مقداری ذخیره شده است یا خیر و اگر
نباشد مقدار مورد نظر خود را درون کش ذخیره میکنیم .

متد
PartCacheRead 2 پارامتر دارد که شامل موارد زیر است :

Storage  : این
پارمتر شامل سه مقدار
Shared  ، Personal  و None  می باشد که به ترتیب مقدار کش را برای همه کاربران ، به
ازای هر کاربر و هیچ بر می پرگرداند که در مثال بالا مقدار کشی که برای همه
کاربران ذخیره شده و به نوعی حالت عمومی دارد را در اختیار ما قرار میدهد .

Key   : نام
مقداری که درون کش ذخیره شده و باید فراخوانی شود .

با
استفاده متد
PartCacheWrite نیز مقدار دلخواه خود را در کش
قرار میدهیم که شامل ۴ پارامتر می باشد ، پارامترهای
Storage  و Key  مانند متد
PartCacheRead می باشد ، علاوه بر این دو متد ،
متدهای دیگر این متد عبارتند از :

Value  : آبجکتی
است که میخواهیم درون کش ذخیره کنیم که از نوع
System.Object  میباشد .

TimeOut  : زمانی
بر اساس
system.TimeSpan  میباشد که
بازه زمانی که مقدار کش به روز میشود را مشخص میکند .

در
مثال بالا ما زمان حال را در کش قرار داده و هر ۱۰ ثانیه یکبار آن را به
روز میکنیم ، در واقع هر ۱۰ ثانیه یکبار اطلاعات به روز میشوند و اگر قبل
از این زمان صفحه دوباره لود شود عملیات دریافت اطلاعات انجام نمیشود ، این
زمان بستگی به نحوه استفاده شما دارد که میتواند زمان بسیار بیشتری باشد ،
به طور مثال اگر شما اطلاعاتی دارید که به صورت روزانه به روز میشوند
دلیلی ندارد که زمان کمی را برای کش کردن در نظر بگیرید و به این صورت
کارایی کدهای خود را بالا برده و سرور خود را از وجود بار زیاد حفظ میکنید .

اما
اگر بخواهید در بین زمان تعیین شده اطلاعات را به روز کنید چه ؟ فرض کنید
قسمتی را در وب پارت خود در نظر گرفته اید که کاربر علاوه بر اینکه وظایف
خود را میبیند بتواند وظیفه ی جدیدی از طریق وب پارت شما ایجاد کند و پس از
ایجاد بتواند آن را در لیست وظایف خود ببیند ، برای این کار شما کافیست در
قسمتی که میخواهید اطلاعات به روز شوند از متد
PartCacheInvalidate استفاده کنید ، این متد نیز از دو پارامتر Storage  و Key  تشکیل می شود :

void Button1_Click(object
sender, EventArgs e)

{

    this.PartCacheInvalidate(Storage.Shared,
"MyKey");

}

 

پس
از اجرای این متد مقدار
MyKey  از بین
رفته و با اطلاعات جدید به روز می شود .

شما
میتوانید وب پارتی که در این مقاله مثال زده شد که در واقع نمونه ی ساده
ای از استفاده از کش کردن اطلاعات میباشد را از
اینجا
دریافت کنید .

وب
پارت ها یکی از مهمترین امکانات شرپوینت به حساب می آیند که کارایی بسیاری
دارند و میتوانند در هر جایی از صفحات شما استفاده شوند و به این دلیل شما
می بایست نهایت دقت را در پیاده سازی وب پارت ها انجام دهید و از تمام
تکنیک های موجود استفاده کنید تا بهترین  کارایی را
برای شما داشته باشد .

از
دیگر مقالات بسیار خوب و کاربردی می توان مقالات زیر را معرفی کرد که
امیدوارم آنها را به دقت مطالعه کنید :

Best Practices for Developing Web
Parts for SharePoint Products and Technologies

Checklist for Testing SharePoint
Web Parts

امیدوارم
این مقاله برای شما مفید بوده باشه .

موفق
و پیروز باشید .

پاسخ دهید