PSPCommunity.org ورود | ثبت نام | كمك

بيشترين بازديد شده

دسته بندی منوی Quick Lunch
 

با سلام

ممکن است شما هم با این موضوع مواجه شده باشید که لینک هایی که در Quick Lunch قرار داده میشوند بسیار زیاد می شود و پیدا کردن یک لینک در آن بسیار دشوار می شود ، برای حل این مشکل میتوان از Jquery استفاده کرد و منوها را به صورت مرتب تری سازماندهی کرد .

( Quick Lunch قبل از استفاده از Jquery )

برای استفاده از این امکان ابتدا این فایل را دریافت کنید ، آن را از حالت فشرده خارج کنید و سپس با استفاده از Sharepoint Designer آنرا در ریشه سایت کپی کنید .

حال فایل MasterPage را باز کرده و کدهای زیر را در قسمت Head وارد کنید :

<script src="/scripts/jquery-1.2.6.min.js" type="text/javascript" language="javascript"></script>

<script src="/scripts/accordion.js" type="text/javascript" language="javascript"></script>

حال یکبار دیگر صفجه را لود کنید تا منوها را به صورت طبقه بندی شده و مرتب ببینید :

در این لینک هم روش دیگری معرفی شده که میتوانید با این روش هم این کار را انجام دهید و حتی از استایل های دلخواه خود استفاده نمایید .

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

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

با سلام

در این مقاله ادامه مبحث قبل در مورد سرعت و کارایی برنامه نویسی در شرپوینت را مورد بررسی قرار میدهیم .

4 – استفاده از Paging در جستجو ها

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

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

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

کلاس SPQuery مشخصه ای بنام ListItemCollectionPosition دارد که این امکان را برای شما فراهم میکند تا صفحه ی آغازین را مشخص کنید و همانطور که قبلا نیز گفته شد RowLimit مشخص میکند که در هر صفحه چند آیتم نمایش داده شود ، بیایید با هم نگاهی به یک مثال بیاندازیم :

SPQuery query = new SPQuery();

query.RowLimit = 10; // that is our page size

do

{

SPListItemCollection items = SPContext.Current.List.GetItems(query);

// do something with the page result

// set the position cursor for the next iteration

query.ListItemCollectionPosition = items.ListItemCollectionPosition;

} while (query.ListItemCollectionPosition != null)

List.GetItems هر بار با گرفتن Query فقط 10 آیتم به ما ارائه می کند و ListItemCollectionPosition همانند یک اشاره گر عمل کرده و صفحه بعدی که باید اجرا شود را در خود نگهداری میکند ، در شکل زیر میتوانید فعالیت های دیتابیس را ملاحظه کنید :

image 1

و اگر نگاه دقیق تری به دستورات SQL بیاندازیم میبینیم که آیتم ها از صفحه معین شده فیلتر می شوند :

5 – بروز رسانی تعداد زیادی آیتم

در مورد قبلی در مورد بهترین نحوه دسترسی به اطلاعات صحبت کردیم و حالا میخواهیم در مورد بهترین نحوه بروز رسانی آیتم ها را مورد بررسی قرار دهیم .برای اضافه کردن یا بروز رسانی آیتم ها راه های متفاوتی وجود دارد ، به طور مثال برای بروز رسانی از SPlistItem.Update و برای اضافه کردن آیتم از SPListItemCollection.Add استفاده میکنیم ، به طور مثال :

for (int itemIx = 0; itemIx < 100; itemIx++)

{

SPListItem newItem = items.Add();

// fill all the individual fields with values

newItem.Update();

}

اگر نگاه دقیقی به کدهایمان بنداریم متوجه خواهیم شد که با هر بار اجرا شدن متد Update یک متد داخلی به اسم SPListItem.AddOrUpdateItem نیز اجرا می شود که یک stored procedure برای انجام این عملیات را صدا میزند .

در این مثال اضافه کردن 100 آیتم به یک لیست 4.5 ثانیه طول می کشد .

اگر شما احتیاج دارید تا تعداد زیادی آیتم را بروز رسانی کنید بهتر است به جای استفاده از متد Update از تابعی به نام ProcessBatchData که توسط کلاس SPWeb قابل دسترسی می باشد استفاده کنید .

ProcessBatchData متدی که با فرمت XML ساخته می شود را اجرا میکند ( در این مقاله میتوانید توضیحات بیشتری در این ضمینه کسب کنید ) ، نگاهی به مثال زیر بیاندازید :

StringBuilder query = new StringBuilder();

for (int itemIx=0;itemIx<100;itemIx++) {

query.AppendFormat("<Method ID=\"{0}\">" +

"<SetList>{1}</SetList>" +

"<SetVar Name=\"ID\">New</SetVar>" +

"<SetVar Name=\"Cmd\">Save</SetVar>" +

"<SetVar Name=\"{3}Title\">{2}</SetVar>" +

"</Method>", itemIx, listGuid, someValue, "urn:schemas-microsoft-com:office:office#");

}

SPContext.Current.Web.ProcessBatchData(string.Format(

"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +

"<ows:Batch OnError=\"Return\">{0}</ows:Batch>", query.ToString()));

پس از اجرای این کد و مقایسه آن به روش قبلی میتوانید متوجه شوید که تقریبا 2 ثانیه اختلاف وجود دارد :

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

- حتما از StringBuilder استفاده کنید نه String .

- فراخوانی ها را به قطعات کوچک تر تقسیم کنید تا با خطای حافظه مواجه نشوید .

- به عنوان پیشنهاد دیگر شما میتوانید از متد UpdateListItems وب سرویس نیز استفاده کنید .

 

6 – کدام لیست ها کند هستند ، چرا از آنها استفاده میکنیم و چرا کند هستند ؟

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

اما سوال اصلی در اینجا اینه که : چطور میتونیم مشخص کنیم کدام لیست ها باعث کاهش کارایی می شوند و به صورت عادی چگونه مورد استفاده قرار می گیرند ؟

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

راه های زیادی برای بررسی عملکرد و نحوه دسترسی به داده ها در شرپوینت وجود دارد ، شما میتوانید از فایل های IIS Logs استفاده کنید ( برای اطلاعات بیشتر این مقاله را مطالعه کنید ) یا از SharePoint Usage Reporting Feature استفاده کنید .

بهترین راه برای مانیتور کردن کارایی لیست ها آنالیز زمان پاسخ دهی HTTP به آدرس لیست و نما ها میباشد . آدرس یک لیست شرپوینت فرمتی به صورت زیر دارد :

http://servername/site/{LISTNAME}/{VIEWNAME}.aspx.

شما میتوانید توسط ابزار های مختلفی به آنالیز این زمان بپردازید ، در اینجا ما از ابزار Business Transaction محصول شرکت DynaTrace  استفاده می کنیم ، در شکل زیر میتوانید نمایی از این سناریو را ملاحظه کنید :

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

ما میتوانیم این کار را توسط کلاس های شرپوینت مثل SPList  ، SPView  یا SPRequest.RenderViewAsHtml انجام بدیم . شکل زیر آنالیز لیست با استفاده از متد SPRequest  را نمایش می دهد :

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

http://servername/_layouts/listedit.aspx?List={GUID}

با مشخص شدن لیست ها و نماهایی که دسترسی به آنها بیشتر است میتوانیم مواردی که باعث کاهش کارایی می شوند را بررسی و مشکلات مربوط به آنها را برطرف کنیم . مواردی که باعث کند شدن لیست ها می شوند اغلب شامل موارد زیر است :

- تعداد زیادی آیتم در نمای لیست ها نمایش داده شود .

- بالا بودن تعداد آیتم ها بدون داشتن فیلترگذاری و ایندکس کردن ستون ها

- دسترسی نادرست به داده ها از طریق وب پارت

مدل شی گرا شرپوینت امکانات بسیار زیادی را برای توسعه دهندگان فراهم کرده است تا بتوانند تغییرات مورد نظر را در محیط شرپوینت  اعمال کنند و برای این کار راه های بسیار زیادی را در اختیار شما قرار داده است اما بسیار مهم است که هنگام پیاده سازی نرم افزارهای مبتنی بر شرپوینت کارایی آن را نیز مدنظر داشته باشید .

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

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

منبع : http://www.infoq.com
SharePoint 2010 Beta منتشر شد
 
با سلام
در کنفرانسی که چند هفته قبل در لاس وگاس برگزار شد ، استیو بالمر قول داده بود که در ماه نوامبر نسخه بتای شرپوینت را در دسترس عموم قرار دهد ، همانطور که در پست قبلی نیز ذکر کرده بودم شما میتوانستید برای دریافت آن ثبت نام کنید ، اما بالاخره استیو بالمر به قول خود عمل کرد و هم اکنون شما میتوانید شرپوینت 2010 ( SharePoint Foundation and SharePoint Server ) را از اینجا دریافت کنید .
 
SPS 2010
 
یه خبر دیگه اینکه به جز شرپوینت 2010 نسخه ی بتای Office 2010 ، SharePoint Designer 2010  و Visio 2010 نیز منتشر شده است .
SharePoint 2010 Beta 2
 
با سلام
همانطور که مطلع هستید شرپوینت 2010 بتا 2 در این ماه ( نوامبر ) در دسترس عموم قرار خواهد گرفت ، اگر هنوز برای دریافت این محصول ثبت نام نکرده اید میتوانید از این لینک ثبت نامه کنید تا پس از انتشار شرپوینت 2010 بتا جزئیات دریافت این نسخه برای شما ارسال شود .c
 
SharePoint 2010
SharePoint 2010 Beta 2
پوسترهای جدید شرپوینت 2010 منتشر شد
 
با سلام
چند روزیست مایکروسافت پوسترهای جدیدی از معماری ، راهبری و توسعه شرپوینت 2010 را منتشر کرده است ، پیش از این 4 پوستر در مورد ارتقا شرپوینت 2007 به 2010 منتشر شده بود ، این پوسترها با فرمت های مختلف از جمله PDF و VSD  و هچنین XPS موجود می باشند .
 

image imageimageimageimage imageimageimage

image image

imageimage imageimage

 

این پوسترها را میتوانید از این لینک دریافت کنید .

وب پارت نکته روز
 
با سلام
امروز برای شما وب پارتی را آماده کردم که به صورت روزانه و تصادفی یک جمله از بزرگان جهان را در صفحه شرپوینت شما نمایش می دهد .
 
Quote Webpart
 
میتوانید این وب پارت از اینجا دریافت کنید .
شما میتوانید جملات زیبایی که در اختیار دارید برای من ایمیل کنید تا در نسخه ی بعدی به این لیست اضافه شود .
 در ضمن شما میتوانید جملات خود را در لیست نکته روز که در سایتی که این وب پارت را در آن فعال کرده اید ، اضافه کنید .
همچنین منتظر پیشنهادات خوب شما نیز هستم .
موفق و پیروز باشید .
نگاهی به ویژگی های جدید ایجاد ورک فلو در SharePoint Designer 2010
 

در این مقاله نگاهی به امکانات جدید SharePoint Designer 2010 خواهیم داشت .

ظاهر Ribbon

همانند دیگر محصولات جدید مایکروسافت SharePoint Designer نیز از ویژگی Ribbon بهره مند است ، با باز کردن SharePoint Designer اولین ویژگی که با آن روبرو می شوید همین امکان است که منوهای اضافی از محیط برنامه حذف شده است .

همانطور که در تصویر ملاحظه می کنید دو دکمه برای Workflow وجود دارد که این امکان را به شما می دهد که بر روی لیست ها و کتابخانه بتوانید فرایندی را ایجاد کنید و Reusable Workflow نیز برای کار با داده های عمومی به کار می رود .

تغییر در محیط ایجاد فرایند

زمانی که میخواهید یک فرایند جدیدی را ایجاد کنید پنچره ای همانند شکل زیر برای شما نمایش داده می شود که میتوانید تغییرات اساسی که در آن صورت گرفته را ببینید :

همانطور که مشاهده میکنید دیگر برای ایجاد یک فرایند برای شما یک پنجره Popoup باز نمی شود و حالا شما میتوانید فرایندها را جزئی از ساختار محیط SharePoint Designer ببینید با ظاهری بسیار مرتب و همچنین قابلیت های بیشتر !

خوب ، مطمئنا نمی توان خیلی از ویژگی های جالب ورژن جدید را در شکل بالا دید ، با من همراه شوید تا به شما برخی از این امکانات جالب را نمایش دهم .

یکی از ویژگی های جالبی که در کار کردن با این ورژن مشاهده می شود این است که شما میتوانید کنترل بیشتری بر برنامه با استفاده از کیبورد داشته باشید و دیگر مانند ورژن قبل لازم نیست تمام کارها را با ماوس انجام دهید ، به محض تایپ در این محیط میتوانید به تمام مراحل فرایند و متغیرها و ... دسترسی داشته باشید :

وقتی که شما ماوس را بر روی تکست باکس ها قرار میدهید ، به شما لیست کامل از تمام Action ها نمایش داده میشود ، کافی است چند کلمه از Action را تایپ و کلید Enter را فشار دهید :

این ویژگی تا حدی شبیه امکان IntelliSense در ویژوال استودیو می باشد ، اما تفاوت هایی وجود دارد ، مثلا شما باید حتما Enter را بزنید تا لیست برای شما نمایش داده شود در حالی که در ویژوال استودیو در هنگام تایپ میتوانید به کلاس ها و توابع دسترسی داشته باشید :

پیکربندی Action ها

یکی از مهمترین و بهترین ویژگی هایی که در این ورژن مشاهده میشود امکانات پیکربندی Action هاست ، دیگر از پنچره های تو در تو و گیج کننده ی ورژن قبل خبری نیست و این کار به سادگی و در یک پنجره ی کوچک قابل انجام است :

دکمه ویرایش مشخصات همانند همان پنجره ی آشنای ورژن قبلا است ، لینکی که با کلیک بر روی آن پنچره ی کوچکی برای ویرایش باز می شود ، اما یکی از امکانات جالب دیگر این است که در این ورژن شما میتوانید موضوع داینامیک برای Email Action بسازید :

یکی دیگر از امکانات جالب در این ورژن ویژگی های جدیدی است که برای ساخت مقادیر رشته ای اضافه شده و کار را برای شما آسان تر میکند :

تنظیمات فرایند ها

آخرین ویژگی که آن را در این مقاله مرور خواهیم کرد تنظیمات فرایند هاست :

نوع محتوا تا قبل از انتشار فرایند قابل تغییر نیست ، همچنین در این قسمت چگونگی و نحوه ی اجرای فرایند را مشخص میکنید و سایر مشخصات که در شکل مشخص است .

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

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

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

با سلام

امکانات Object Model شرپوینت به شما این امکان را میدهند تا بتوانید نرم افزارهایی بر طبق این تکنولوژی ایجاد کنید ، در همین راستا مقالات بسیار زیادی هم در اینترنت در مورد نحوه استفاده صحیح از این امکانات وجود دارد ، به طور مثال Best Practices نمونه ای از این مقالات است که توسط مایکروسافت عرضه میشود و به برنامه نویسان شرپوینت این امکان را می دهد تا بتوانند نرم افزارهایی با قدرت و کارایی بالا ایجاد نمایند .

بیشتر سناریوهایی که برای ایجاد یک نرم افزار به کار گرفته میشود در مورد لیست هاست که شامل نمایش و تغییرات در آنها میباشد که متاسفانه بیشتر مشکلات و همچنین عدم کارایی را در این قسمت میتوانیم مشاهده کنیم زیرا از امکانات آبجکت مدل شرپوینت به خوبی استفاده نمیشود و این موضوع باعث کاهش کارایی نرم افزار می شود .

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

1 – چه تعداد آیتم در لیست ذخیره شده است ؟

جواب های مختلفی میتوان به این سوال داد ، در واقع راه های مختلفی برای به دست آوردن پاسخ این سوال وجود دارد ، به عنوان مثال در زیر میتوانید کدی را مشاهده نمایید که این کار را برای ما انجام می دهد :

int noOfItems = SPContext.Current.List.Items.Count;

این کد به ما تعداد آیتم هایی که در این لیست وجود دارد را نمایش میدهد اما حقیقت این است که این کد تمام آیتم های این لیست در دیتابیس را به ما برمیگرداند ، شکل زیر به ما نشان میدهد که در هنگام اجرا کردن کد و دسترسی به مشخصه Count چه اتفاقی می افتد :

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

اما راه حل چیست ؟

مایکروسافت یک ویژگی بسیار خوب را برای ما فراهم کرده است و آن ItemCount از شی ء SPList می باشد که در زیر میتوانید نحوه استفاده از آن را ملاحظه بفرمایید :

int noOfItems = SPContext.Current.List.ItemCount;

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

2 – نمایش تعداد آیتم های یک لیست با استفاده از SPList

راه های بسیار زیادی برای نمایش آیتم های یک لیست وجود دارد ، شما با استفاده از یک حلقه میتوانید محتویات یک لیست را به دست آورده و نمایش دهید ، این کار ممکن است در کامپیوتری که برای توسعه در نظر گرفتید و یا برای لیست های کوچک بسیار خوب کار کند اما باید به شما بگویم که با افزایش تعداد آیتم های لیست به شدت کارایی نرم افزار شما کاهش میابد !

برای اثبات این موضوع بیایید با هم نگاهی به کد زیر بیاندازیم که 100 آیتم اول لیست جاری را به ما نمایش میدهد :

SPList activeList = SPContext.Current.List;

for (int i = 0; i < 100 && i < activeList.Items.Count; i++)

{

SPListItem listItem = activeList.ItemsIdea;

htmlWriter.Write(listItem["Title"]);

}

فرض کنید که کمتر از 100 آیتم در این لیست موجود باشد ، فکر میکنید چند بار ارتباط با دیتابیس برقرار میشود تا بتوانید 100 عنوان اول این لیست را نمایش دهید ؟ با آنالیز تراکنش های کد بالا متعجب خواهید شد که تقریبا 200 بار این اتفاق رخ می دهد !

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

صفت Items کش نمی شود و به همین خاطر با هر درخواست این عمل تکرار می شود ، در شکل میتوانید این موضوع را به خوبی ملاحظه نمایید :

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

راه حل چیست ؟

مسلما بهترین راه برای حل این مشکل استفاده از SPListItemCollection میباشد ، با استفاده از شی ء دیتابیس فقط یکبار کوئری میزند و با شمارش حلقه نتیجه در این کالکشن ذخیره می شود ، نمونه کد اصلاح شده را در زیر میتوانید مشاهده نمایید :

SPListItemCollection items = SPContext.Current.List.Items;

for (int i = 0; i < 100 && i < items.Count; i++)

{

SPListItem listItem = itemsIdea;

htmlWriter.Write(listItem["Title"]);

}

در شکل زیر میتوانید نحوه اجرای برنامه پس از تغییر کد را ببینید :

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

3 – استفاده از SPQuery و SPView برای دریافت اطلاعاتی که به آنها نیاز دارید

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

اگر با دقت به 2 مسئله قبلی نگاه کرده باشید متوجه میشوید که با هر کوئری که بر روی دیتابیس اجرا میکنید ، دیتابیس تمام اطلاعات را مورد پردازش قرار می دهد ، به دستور Select در دو مسئله قبلی توجه کنید ( Select Top 2147483648 )

راه حل چیست ؟

یکی از راه های مناسب محدود کردن تعداد آیتم هایی است که مورد پرداش قرار خواهند گرفت که این کار را میتوانید با استفاده از صفت SPQuery.RowLimit انجام دهید .

به مثال زیر توجه کنید :

SPQuery query = new SPQuery();

query.RowLimit = 100;

SPListItemCollection items = SPContext.Current.List.GetItems(query);

for (int itemIx = 0; itemIx < items.Count; itemIx++)

{

SPListItem listItem = items[itemIx];

}

با اجرای این دستور میتوانید نتیجه متفاوتی را مشاهده نمایید :

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

دو روش برای محدود کردن تعداد فیلدها وجود دارد :

1 – استفاده از کلاس SPView به صورت زیر :

SPQuery query = new SPQuery(SPContext.Current.CurrentView.View);

2 – استفاده از صفت SPQuery.ViewFields به صورت زیر :

SPQuery query = new SPQuery();

query.ViewFields = "<FieldRef Name='ID'/><FieldRef Name='Text Field'/><FieldRef Name='XYZ'/>";

با اجرای هر کدام از روشهای بالا کوئری شما محدوده کمتری از اطلاعات را مورد پردازش قرار داده و در نتیجه کارایی برنامه شما بالاتر می رود ، به شکل های زیر توجه کنید :

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

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

Remote Procedure Call Protocol
 

سلام

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

Remote Procedure Call که به اختصار آنرا RPC می نامیم در واقع پروتکلی است که به کاربر اجازه میدهد برنامه را از میزبان اجرا کند .

پروتکل RPC اطلاعاتی که بین کامپیوترهای کلاینت و سرور شرپوینت رد و بدل میشود را کنترل میکند .

نکته : پروتکل ارتباطات ( Communications Protocol ) لایه ای است در بالای پروتکل HTTP که مرورگرها برای انجام فعل و انفعال با وب سرور از آن استفاده میکنند .

پروتکل RPC چگونه کار میکند ؟

این پروتکل با استفاده از HTTP Post Request ، متدها ( که همان درخواست های کاربر میباشد ) را به شرپوینت سرویس ارسال میکند ، این درخواست ها ( Requests ) ، این اجازه را به کاربر میدهد تا بتواند درخواست یک سند را بدهد ، یک وظیفه را به روز کند ،یک سند را در مخزن اسناد آپلود کند ، یک آیتم را ویرایش کند و ...

مقادیری که بازگشت داده میشوند شامل اطلاعاتی در مورد درخواست کاربر میباشند که در قالب یک فرم HTML به کلاینت تحویل داده میشود ، پس پروتکل RPC از دو بخش تشکیل میشود ، بخش اول متدهایی ( Methods ) است که شامل درخواست های کاربر میباشد و بخش دوم مقادیر بازگشتی ( Returns Value ) که نتایج درخواست را به کاربر نمایش میدهد.

حال که متوجه شدیم این پروتکل چیست میخواهیم یک مثال عملی را در اینجا بیان کنیم تا بیشتر با قابلیت های این پروتکل آشنا شویم .

دریافت اطلاعات لیست ها با استفاده از RPC Protocol

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

برنامه ما شامل 3 تکست باکس میباشد که اولی آدرس سایت که همان آدرس سرویس endpoint ما میباشد را از کاربر دریافت میکند ، تکست باکس دوم Request ما را دریافت و تکست باکس سوم پاسخی است که از سرور دریافت میکنیم :

کد زیر به شما نشان میدهد که چطور یک درخواست بر روی آدرس مورد نظر ایجاد و سپس پاسخ مورد نظر را دریافت کنیم :

HttpWebRequest objRequest = (HttpWebRequest)HttpWebRequest.Create(txtSiteUrl.Text);

objRequest.Method = WebRequestMethods.Http.Post;

objRequest.Credentials = CredentialCache.DefaultCredentials;

objRequest.Headers.Add("X-Vermeer-Content-Type", "application/x-www-form-urlencoded");

objRequest.ContentType = "application/x-www-form-urlencoded";

StreamWriter sw = new StreamWriter(objRequest.GetRequestStream());

sw.Write(txtRequest.Text);

sw.Close();

HttpWebResponse objResponse = objRequest.GetResponse() as HttpWebResponse;

StreamReader sr = new StreamReader(objResponse.GetResponseStream());

txtResponse.Text = sr.ReadToEnd();

sr.Close();

objResponse.Close();

همانطور که ملاحظه میکنید با استفاده از کلاسهای HttpWebRequest و HttpWebResponse اطلاعات مورد نظر را از سرور دریافت و در داخل تکست باکس سوم نمایش میدهیم .

در این مثال ما از متد List Documents استفاده میکنیم که شامل پارامترهای زیر میباشد :

method=list documents:server_extension_version

&service_name=/&listHiddenDocs=(true|false)&listExplorerDocs=

(true|false)

[&platform=client_os]&initialURL=url&listRecurse=(true|false)

&listLinkInfo=(true|false)&listFolders=(true|false)&listFiles=

(true|false)

&listIncludeParent=(true|false)&listDerived=(true|false)&listBorders= (true|false)

پس از اجرای برنامه ما متد List Documents را در قسمت Request وارد میکنیم ، همچنین آدرس سرویس را و نتیجه کار را میتوانید در شکل زیر ملاحظه نمایید :

همانطور که می بینید نتیجه در قالب HTML برگشت داده میشود .

از این پروتکل استفاده های بسیار زیادی میشود ، به ویژه در کار با برنامه های کلاینت / سرور ، شما میتوانید با این پروتکل با سرعت بسیار زیادی اطلاعات را دریافت یا ارسال کنید ، به طور مثال با استفاده از متد Put شما میتوانید در هر ثانیه اقدام به ارسال چندین فایل کنید که در بسیاری از پروژه ها بسیار کاربردی است .

کدهای مربوط به مطلب امروز را میتوانید از اینجا دریافت کنید .

همچنین لیست کامل متدهای پروتکل RPC  را از اینجا میتوانید مشاهده نمایید.

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

 

MVP Design Pattern
 

با سلام

امروز در مورد الگوی طراحی MVP مطالبی را خدمت شما ارائه کنم .

اما اجازه بدید قبل از اینکه به معرفی MVP بپردازیم ، تعریفی از الگوهای طراحی یا Design Patterns داشته باشیم.

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

یک الگوی طراحی در واقع یک طرح به اتمام رسیده نیست که بتوان آن را مستقیم در کدها استفاده کرد ، الگوهای طراحی شامل توضیحات یا قالب هایی است برای حل مشکلات .

به قول یکی از دوستان در سایت برنامه نویس : کسی که OOP رو خوب میدونه مثل کسی ست که اجزای تشکیل دهنده ی یک کیک رو میشناسه؛ اما کسی که الگوهای طراحی (Design Patterns ) رو میدونه دستور پخت دقیق اون کیک رو هم در اختیار داره.

نتیجه : کیک نفر اول همیشه یکدست و خوشمزه نمیشه؛ در حالیکه کیکی که نفر دوم میپزه همیشه خوشمزه و یکدست خواهد بود.

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

یکی از الگوهای طراحی که در برنامه های تحت وب و همچنین برنامه هایی که تحت شیرپوینت پیاده سازی میشوند کاربرد فراوانی دارد MVP میباشد . MVP مخفف کلمات زیر میباشد :

M = Model

V = View

P = Presenter

این الگو داده های برنامه را از هم تفکیک میکند ، یک صفحه ساده را در نظر بگیرید ، این صفحه شامل کنترل هایی برای دریافت نام ، نام خانوادگی ، تلفن و آدرس شخص میباشد ، کاربر میتوانید این فرم را تکمیل و پس از تایید آن پیغامی به او نمایش داده میشود .

شما به عنوان برنامه نویس در کلاسی که مربوط به این صفحه میباشد کدهایی را که این عملیات را انجام میدهد مینویسید ، اما چند تا مشکل وجود دارد :

1 – اگر تیم طراحی صفحه هنوز کنترل ها و ظاهر صفحه را ایجاد نکرده باشند ممکن است زمان را از دست بدهید

2 – نگهداری و پشتیبانی از این کدها دشوار میباشد

3 – تست کردن کدها مشکل است

4 – به سختی میتوانید کدهای خود را با صفحاتی که به نوعی با این کدها در ارتباط هستند به اشتراک بگذارید

این مدل ظاهر ( UI ) و رویدادها و توابع را از یکدیگر تفکیک میکند و در دو کلاس پیاده سازی میشوند ، View و Presenter

کلاس View برای پیاده سازی کنترلها و انتقال رویدادهایی که برای این کنترلها رخ میدهد به Presenter مورد استفاده قرار میگیرد .

کلاس Presenter برای پاسخ دهی به رویداد و به روز کردن Model ) که شامل لایه منطقی و داده میباشد ) به کار میرود

یکی از مزایای این الگو این است که کدهایی که در کلاس Presenter پیاده سازی میشوند میتوانند به راحتی در برنامه های تحت وب و ویندوز اجرا شوند .

دومین مزیت استفاده از این الگو این است که تیم برنامه نویسی بدون اینکه منتظر شوند تا طراحی ظاهر برنامه تکمیل شود ( بدون توجه به UI ) میتوانند کدهای خود را تست و اجرا کنند ، در شکل زیر میتوانید نمایی از این الگو را مشاهده نمایید :

خوب ، بهتره یک مثل عملی بزنیم تا بهتر بتوانیم مفهوم و کارایی این الگو را درک کنیم .

فرم ساده ی زیر را در نظر بگیرید :

گام نخست در ایجاد این الگو ساخت کلاس اینترفیس میباشد که در واقع همان View ما میباشد .

یک کلاس به اسم IContactUs.cs میسازیم و کدهای زیر را در آن وارد میکنیم :

public interface IReaderContactUs

  {

string Name { get; }

string Email { get; }

string PhoneNumber { get; }

string Message { get; }

string Result { set; }

  }

در اینترفیس ها ما هیچ پیاده سازی انجام نمیدیم فقط دستورعمل ها در اینترفیس تعریف میشوند . اینترفیسی که در بالا تعریف کردیم به ما میگوید که میتوانیم نام ، ایمیل ، شماره تلفن و پیام را دریافت ( Get ) و یک نتیجه را دریافت ( Set ) کنیم .

حالا ما به یک Presenter احتیاج داریم ، Presenter همچون یک کارگر زنبور عسل همیشه در حال کاره و یک نکته قابل توجه در مورد Presenter این است که Presenter هیچ اطلاعی در مورد UI ندارد .

Presenter معمولا به صورت یک کلاس جدا پیاده سازی میشود و در نهایت توسط UX (User Experience) که در این مثال یک صفحه وب میباشد استفاده میشود .

یک کلاس دیگر ساخته و نام آنرا ContactUsPresenter.cs میگذاریم و کدهای زیر را در آن وارد میکنیم :

public class ContactUsPresenter

{

private readonly IReaderContactUs view;

public ContactUsPresenter(IReaderContactUs view)

{

this.view = view;

}

public void ProcessForm()

{

StringBuilder sb = new StringBuilder();

sb.Append(string.Format("نام : {0}<br />", view.Name));

sb.Append(string.Format("ایمیل : {0}<br />", view.Email));

sb.Append(string.Format("تلفن : {0}<br />", view.PhoneNumber));

sb.Append(string.Format("پیام : {0}<br />", view.Message));

view.Result = string.Format("<h1>با تشکر ، پیام شما دریافت شد</h1>{0}<hr />", sb);

}

}

در این کلاس ما یک نمونه از اینترفیس ایجاد میکنیم ، همچنین Constructor ما شامل یک پارامتر است که از نوع اینترفیس ماست .

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

توجه داشته باشید که ما یک نمونه خصوصی از ContactUsPresenter میسازیم اما در هنگام فراخوانی متد OnInit آن را معرفی میکنیم ، هنگامی که دکمه ارسال کلیک شود ، متد ProcessForm اجرا میشود :

public partial class ContactUs : UserControl, IReaderContactUs

{

private ContactUsPresenter presenter;

 

public string Name { get { return txtName.Text; } }

public string Email { get { return txtEmail.Text; } }

public string PhoneNumber { get { return txtPhone.Text; } }

public string Message { get { return txtMessage.Text; } }

public string Result { set { lblResult.Text = value; } }

 

protected override void OnInit(EventArgs e)

{

base.OnInit(e);

presenter = new ContactUsPresenter(this);

}

protected void SubmitContactButton_Click(object sender, EventArgs e)

{

presenter.ProcessForm();

}

}

و میتوانید نتیجه کار خود را ببینید :

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

امیدوارم که مورد استفاده شما دوستان عزیز قرار گرفته باشد .

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

بررسی رویدادهای وب پارت
 

با سلام

چند روز مطلب جالبی در مورد رویدادهای وب پارت در وبلاگWictor Wilen پیدا کردم که به توسعه دهندگان شیرپوینت کمک میکند تا بتوانند وب پارتهایی با کارایی بهتر ایجاد کنند ، این رادیوگرافی به شما رویدادهایی که در طی چرخه حیاط یک وب پارت ، WebpartZone ، Webpart Manager و Page اتفاق میافتد را نشان میدهد :

میتوانید نسخه PDF و XSL آن را از لینک های زیر دریافت کنید:

 

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

سلام

امیدوارم که تا اینجا از مطالب ارائه شده استفاده لازم را برده باشید ، مخاطبین امروز ما بیشتر توسعه دهندگان هستند ، در این مقاله در مورد ایجاد صفحات در شیرپوینت ، MasterPage  ها و همچنین Feature  ها صحبت خواهیم کرد .

چگونه صفحات اختصاصی در شیرپوینت ایجاد کنیم ؟

یکی از سوالاتی که برای خیلی از توسعه دهندگانی که تازه با شیرپوینت آشنا شدند پیش میاد این است که چطور میتوانیم صفحات اختصاصی در شیرپوینت بسازیم ؟

همانطور که در مقاله اول توضیح دادم در شیرپوینت ما دو نوع صفحه داریم که در اینجا میتونیم کمی دقیقتر این موضوع رو بررسی کنیم ، در مقاله اول گفتیم که ما دونوع صفحه عمومی و صفحه اختصاصی در شیرپوینت داریم ، صفحات عمومی که در تمام سایتها وجود دارند به ما کمک میکنند تا تنظیمات و مشخصات سایتها را مشخص کنیم ، مانند صفحه " تنظیمات سایت " . همچنین نکته دیگری که در مورد این صفحات باید بدانید این است که تمام این صفحات در مسیر زیر قرار دارند :

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS

که با رفتن به این مسیر میتوانید سایر صفحات عمومی را مشاهده نمایید :

 

خوب ، در اینجا ما یک صفحه ASPX  ساده به نام SimplePage.aspx  می سازیم و در این مکان قرار میدهیم ، سپس شما میتوانید به IIS  بروید و آن را مشاهده نمایید :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

چگونه صفحات اختصاصی خود را به صفحات استاندارد شیرپوینت تبدیل کنیم ؟

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

برای اینکار ما میبایست از صفحات MasterPage  شیرپوینت استفاده کنیم ، در واقع برای اینکه ظاهر صفحات ما به شکل استاندارد شیرپوینت درآیند میبایست این استایل ها را از MasterPage  های شیرپوینت به ارث ببرند :

برای این کار ما میبایست تغییرات زیر را در صفحات خود بدهیم :

-          اضافه کردن اسمبلی های مرتبط با شیرپوینت

-          انتصاب یکی از MasterPage  های شیرپوینت

-          وارد کردن فضای نام شیرپوینت

-          همچنین ما سه Place Holder  را نیز وارد میکنیم ، یکی برای عنوان ، یکی برای قسمت مرکزی صفحه و یکی هم برای عنوان صفحه .

 

<!— First refer the assembly using the Assembly directive ->

<%@ Assembly Name="Microsoft.SharePoint,Version=12.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

<!— Refer the master page from the _layouts directory ->

<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master"

Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" %>

<!—Import the sharepoint namespace ->

<%@ Import Namespace="Microsoft.SharePoint" %>

<!—This is the content holder for page title ->

<asp:Content ID="Content3" ContentPlaceHolderId="PlaceHolderPageTitle" runat="server">

Let's learn SharePoint....

</asp:Content>

<!- This is the place holder for data for main page area ->

<asp:Content ID="Content1" ContentPlaceHolderId="PlaceHolderMain" runat="server">

SharepointSolutions.ir

</asp:Content>

<!- This is the placeholder for page title area ->

<asp:Content ID="Content2" ContentPlaceHolderId="PlaceHolderPageTitleInTitleArea" runat="server">

SharePoint is Simple.....

</asp:Content>

 

حالا صفحه شما چیزی شبیه شکل زیر خواهد شد :

چگونه میتوانیم برای صفحات خود کد بنویسیم ؟

اگر یک برنامه نویس باشید حتما این سوال برای شما پیش خواهد آمد که پس از ایجاد صفحات حالا چگونه میتوانیم کدهای خود را به آن اضافه کنیم ؟

یکی از اولین احتیاجات ما برای این کار این است که میبایست کدهای خود را در GAC  رجیستر کنیم در واقع میبایست کدهای خود را کامپایل و به DLL  تبدیل کنیم و سپس آن را در GAC  ( پوشه اسمبلی که در فولدر ویندوز قرار دارد ) رجیستر کنیم .

سپس ما میبایست از این DLL  در صفحات خود استفاده کنیم .

قدم اول :

در این مرحله ما دو Solution  در ویژوال استودیو میسازیم که یکی شامل کلاسی است برای کدهای ما و دیگری یک پروژه وبی میباشد که شامل یک صفحه به نام SimplePageCodeBehind.aspx  میباشد .

قدم دوم :

در این مرحله ما کلاسی ایجاد خواهیم کرد که شامل 2 لیبل خواهد بود که به آنها مقداری اختصاص خواهیم داد ، نکته مهم اینجاست که ما میبایست از فضاهای نام System.Web.UI  و همچنین Microsoft.Sharepoint  در این کلاس استفاده نماییم  و نکته دیگر اینکه کلاس ما LayoutsPageBase را از فضای نام Microsoft.sharepoint  به ارث خواهد برد .

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;

// need to refer the UI objects of ASP.NET

using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

// Need to refer the SharePoint DLL
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace ClassLibrary1
{

// Inherit the behind code from ‘LayoutsPageBase’ class of SharePoint

public partial class _Default : LayoutsPageBase
{

protected Label lblSiteQuestion;
protected Label lblSiteAnswer;

protected override void OnLoad(EventArgs e)
{
lblSiteQuestion.Text = " How can we implement behind code in SharePoint ?";
lblSiteAnswer.Text = " We need to register the behind DLL in GAC";
}
}
}

همچنین ما باید این DLL  را در GAC  رجیستر کنیم که میتوانید این کار را با استفاده از GACUTIL انجام دهید .

قدم سوم :

خوب ، حالا نوبت به طراحی اینترفیس صفحه رسیده ، که در زیر شما میتوانید ملاحظه کنید که ما چطور صفحه ASPX  خود را خواهیم ساخت :

در ابتدا میبایست اسمبلی ها مورد نیاز خود را به صفحه اضافه کنیم ، که یکی شیرپوینت میباشد و دیگری DLL ای که کدهای ما در آن قرار دارد ، سپس  نوبت به انتصاب MasterPage  میرسد :

<!—Refer the sharepoint assembly ->

<%@ Assembly Name="Microsoft.SharePoint,Version=12.0.0.0, Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>

<!—Refer the behind code, Note that the behind code is coded in a different assembly and registered in the GAC ->


<%@ Assembly Name="ClassLibrary1, Version=1.0.0.0, Culture=neutral,PublicKeyToken=af6d081bf267e17e" %>

<!— In order to maintain consistent look and feel we need to inherit from the Application.Master page ->

<%@ Page Language="C#" MasterPageFile="~/_layouts/application.master" Inherits="ClassLibrary1._Default" EnableViewState="false" EnableViewStateMac="false" %>

حالا میتوانیم محتویات صفحه ی خود را در داخل Place Holder  ها قرار دهیم :

<asp:Content ID="Main" contentplaceholderid="PlaceHolderMain" runat="server">
<table border="1" cellpadding="4" cellspacing="0" style='font-size:12'>
<tr>
<td>Question</td>
<td><b><asp:Label ID="lblSiteQuestion" runat="server" /></b></td>
</tr>
<tr>
<td>Answer</td>
<td><asp:Label ID="lblSiteAnswer" runat="server" /></td>
</tr>
</table>
</asp:Content>

<asp:Content ID="PageTitle" runat="server"
contentplaceholderid="PlaceHolderPageTitle" >
SharePoint Behind code implementation
</asp:Content>

<asp:Content ID="PageTitleInTitleArea" runat="server"
contentplaceholderid="PlaceHolderPageTitleInTitleArea" >
When we want to implement behind code we need to register the same in GAC.
</asp:Content>

نکته : پروژه را در داخل ویژوال استودیو کامپایل نکنید ، شما فقط میبایست کلاس خود را کامپایل کنید ، صفحه ASPX  شما میبایست در _Layout  کپی شود .

خوب ، حالا میتوانید صفحه ASPX خود را در Layout کپی کنید ( DLL را هم که از قبل میبایست درGAC رجیستر کرده باشید ) و صفحه خود را در مرورگر باز کنید تا نتیجه کار خود را ببینید :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

Feature  چیست ؟

یکی از مهمترین قابلیت هایی که Feature  ها برای ما فراهم میکنند امکان فعال یا غیر فعال کردن امکانات موجود در شیرپوینت میباشد ، در واقع وقتی که ما یک Feature  را در فارم نصب میکنیم میتوانیم از آن در تمام سایت ها استفاده کنیم بدون اینکه مجبور باشیم فایلهای مرتبط با آن را در هر یک از سایتها کپی کنیم .

با استفاده از Feature  ها میتوانیم کارهای ساده ای مثل اضافه کردن یک لینک به تنظیمات سایت تا کارهای پیچیده ای مثل نوشتن توابعی برای مدیریت پروژه ها را در شیرپوینت پیاده سازی نماییم  .

یکی از نکاتی که در مورد Feature  ها باید بدانید این است که تمام Feature  ها در مسیر زیر قرار میگیرند :

C:\Program Files\Common Files\Microsoft Shared\Web server extensions\12\Template\FEATURES

اگر به این مسیر بروید میتوانید تمام Feature   هایی که در سرور شما نصب شده است را مشاهده نمایید :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

نکته دیگری که در مورد Feature  ها میتوان گفت این است که هر Feature  شامل دو فایل XML  به نام های Feature.xml  و ElementManifest.xml  میباشد ، شیرپوینت با خواندن فایل Feature.xml  متوجه میشود که این پوشه شامل یک Feature  میباشد که البته هر Feature  شامل یک GUID  مخصوص به خود میباشد که آن را از سایر Feature  ها متمایز میکند ، در واقع فایل Feature.xml  یکسری اطلاعات اولیه در مورد این Feature  در اختیار شیرپوینت قرار میدهد .

نکته دیگر در مورد فایل Feature.xml  این است که اگر Feature  ما شامل کد باشد ، DLL  مربوط به آن میبایست در GAC  کپی شود .

 فایل ElementManifest.xml  نیز نحوه پیاده سازی Feature  را مشخص میکند :

در مقاله بعد بیشتر در مورد Feature  ها صحبت خواهیم کرد .

به پایان سومین بخش از سری مقالات شیرپوینت از نگاهی دیگر رسیدیم ، امیدوارم با نظرات خود مرا در نوشتن ادامه این مقالات همراهی نمایید .

در مقاله بعد در مورد نحوه ایجاد یک Feature  صحبت میکنیم و سپس در مورد Template  ها مطالبی را خدمت شما ارائه خواهم کرد .

 

بررسی ویژگی های جدید شیرپوینت 2010
 

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

برخی از مهمترین ویژگی های که در مورد شیرپوینت در کنفرانس ها و وب سایتهای معتبر مطرح شده به شرح زیر میباشد :

  • ظاهر جدید همراه با تکنولوژی جدید Ribbon
  • قابلیت های پیشرفته در ویرایش صفحات
  • پشتیبانی از وب پارت های Silverlight و AJAX
  • قابلیتهای پیشرفته در تغییر الگو و رنگ بندی سایتها
  • پشتیبانی از مرورگرهای بیشتر از جمله فایرفاکس
  • پشتیبانی از سرویس های Visio
  • قابلیت های جدید در SharePoint Designer
  • Business Connectivity Services ( نسخه تکامل یافته ی BDC )
  • پشتیبانی کامل از امکانات مالتی مدیا
  • تغییرات عمده در Central Administration

که در زیر به معرفی برخی از این ویژگی های جدید میپردازیم :

ظاهر جدید همراه با تکنولوژی جدید Ribbon

Ribbon امکانات سفارشی سازی و مدیریتی بسیار زیادی در اختیار شما قرار میدهد ، در واقع وقتی شما به یک Document Library میروید با نوار ایزار و تب های بسیار زیادی روبرو میشود که کار را برای شما ساده تر میکند :

نوار ابزار در مخزن اسناد ( Document Library )

نوار ابزار ویرایش

امکان انتخاب چندین فایل و تحویل گرفتن ( Check In ) و تحویل دادن آنها ( Check Out )

قابلیت های پیشرفته در ویرایش صفحات

ویرایش مستقیم صفحات و همچنین پیش نمایش همزمان تغییرات مانند نرم افزارهای آفیس که به شما امکان تغییر سریع و راحت تر متن ها و تصاویر را میدهد ، در شکل زیر میتوانید مقایسه ای بین ویرایش صفحات در شیرپوینت 2007 و شیرپوینت 2010 را ببینید :

پیش نمایش همزمان تغییرات مانند نرم افزارهای آفیس ( مثل Word )

تغییر اندازه فونت ( مانند نرم افزارهای آفیس شما میتوانید همزمان تغییر سایز را مشاهده کنید )

تغییر تصاویر که البته شما میتوانید از طریق اینترنت تصاویر را از کامپیوتر خود انتخاب کنید و همچنین این اجازه را دارید تا سایز تصاویر را نیز تغییر دهید :

پشتیبانی از وب پارت های Silverlight و AJAX

یکی از مهمترین ویژگی های شیرپوینت 2010 که برای Developer ها جذابیت خاصی داره افزودن امکانات استفاده از وب پارت های Silverlight و AJAX میباشد و همچنین شما میتوانید اینترفیس جدیدی را در ورود وب پارت ها به صفحات در شیرپوینت ببینید :

امکان زوم در محتوای وب پارت های Silverlight

 

قابلیتهای پیشرفته در تغییر الگو و رنگ بندی سایتها

با امکانات جدیدی که در شیرپوینت 2010 اضافه شده شما میتوانید الگوی صفحات خود را در پاور پوینت تغییر دهید و به راحتی رنگهای مورد نظر خود را در سایت اعمال کنید :

پیش نمایش و رنگ بندی الگوهای پاور پوینت با فونت های متفاوت

با آپلود الگوهای پاورپوینت شما میتوانید از آنها با رنگهای دلخواه خود در شیرپوینت استفاده نمایید :

با کلیک بر روی دکمه ی اعمال تغییرات سایت شما به شکل و شمایل جدید تغییر پیدا میکند :

پشتیبانی از مرورگرهای بیشتر از جمله فایرفاکس

یکی از مشکلاتی که در نسخه های قبلی شیرپوینت وجود داشت عدم سازگاری با مرورگرهای غیر از اینترنت اکسپلورر بود و در واقع هر جایی که شیرپوینت نصب میشد کاربران مجبور بودند تا از مرورگر اینترنت اکسپلورر استفاده کنند . در این نسخه از مرورگرهای بسیاری همچون فایرفاکس ، سافاری و اپرا پشتیبانی میشود .

شیرپوینت در مرورگر فایرفاکس

پشتیبانی از سرویس های Visio

شما میتوانید در این ورژن از شیرپوینت به راحتی دیاگرام های خود را مستقیما در شیرپوینت پابلیش کنید و بدون اینکه احتیاج به سرویس های کلاینت داشته باشید دیاگرام های خود را با استفاده از مرورگر تغییر دهید :

قابلیت های جدید در SharePoint Designer

همانند شیرپوینت 2010 تغییرات عمده ای در شیرپوینت دیزاینر 2010 هم به وجود آمده ، یکی از مهمترین تغییراتی که در اولین اجرای آن میتوانید ببینید ظاهر جدید شیرپوینت دیزاینر میباشد :

شیرپوینت دیزاینر 2010 امکانات فراوانی را برای تسریع کار توسعه دهندگان و همچنین کار با Workflow ها فراهم آورده است .

تغییرات عمده در Central Administration

یکی دیگر از بخشهایی که تغییرات زیادی در آن صورت گرفته بخش مدیریت شیرپوینت میباشد که باز هم میتوانید تغییرات ظاهری زیادی رو در آن ملاحظه کنید :

در مقاله های بعدی بیشتر در مورد امکانات جدید شیرپوینت و همچنین قابلیت های جدید که برای توسعه دهندگان شیرپوینت به وجود آمده صحبت خواهیم کرد .

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

شیرپوینت از نگاهی دیگر ( بخش دوم )

چگونه اولین مجموعه سایت را در شیرپوینت ایجاد کنیم ؟

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

برای این کار ابتدا به Sharepoint Central Administration  بروید ، بر روی Application Management  کلیک کرده و سپس Create Site Collection  را انتخاب کنید ( قبل از ایجاد مجموعه سایت شما میبایست سایت اصلی سازمان را ایجاد کرده باشید ، اگر اینکار را نکرده اید میتوانید با کلیک بر روی Create Or Extend Web Application  در Application Management  این کار را انجام دهید ) :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

وقتی بر روی Create Site Collection  کلیک میکنید ، برای شما فرمی نمایش داده میشود که شامل تمام جزئیاتی میباشد که برای ایجاد یک سایت احتیاج دارید ، تمام جزئیات به صورت ساده و قابل فهم میباشند و تنها نگرانی شما در 3 مورد میباشد ، اول انتخاب عنوانی برای مجموعه سایت ، دوم انتخاب یک الگو و در آخر هم انتخاب مدیر سایت  :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

همانطور که در شکل ملاحظه میکنید ، ما برای مجموعه سایت حسابداری به ترتیب یک عنوان ، شرح ، آدرس ، الگو و  مدیر انتخاب کردیم ، البته در شکل بالا من یک مدیر دیگر برای سایت ( Ramin  ) انتخاب کردم ، این گزینه به صورت انتخابی هست و شما میتوانید به جز مدیر اصلی یک مدیر دیگر برای مجموعه سایت خود انتخاب کنید ، وقتی دکمه Ok  را کلیک کنید مجموعه سایت ساخته شده و از طریق لینکی که برای آن مشخص کردید میتوانید به آن دسترسی داشته باشید .

 

چگونه میتوانیم سایتهای خود را سفارشی کنیم ؟

پس از ایجاد سایتها ، شما احتیاج دارید که سایتهای خود را مطابق اطلاعاتی که هر سایت دارد Customize  کنید ، برای این کار  شما میتوانید بر روی منوی Site Actions  که در گوشه سمت راست تصویر قرار دارد کلیک کنید ( این منو در نسخه های فارسی شیرپوینت به نام عملیات سایت میباشد ) و سپس Site Settings  یا تنظیمات سایت را انتخاب کنید .

با انتخاب گزینه مدیریت سایت شما لیستی از لینکهایی را مشاهده میکنید که برای سفارشی سازی سایت میباشد ، در اینجا قصد نداریم تمام این تنظیمات را توضیح دهیم اما در قسمت های بعدی برخی از تنظیمات مهم و اساسی را برای شما شرح خواهم داد ، اما فعلا میتوانید از قسمت look And Feel   یا ظاهر و شمایل شروع کنید که برای تغییر دادن عنوان سایت ، نمای ظاهری سایت ، منوها و ... میباشد .

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

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

همانطور که میدانید یکی از مهمترین ویژگی های شیرپوینت ایجاد محیط همکاری یا Collaboration  است ، همکاری شامل چهار موجودیت مهم و اساسی میباشد که عبارتند از افراد ( People  )، وظایف ( Tasks  )، داده ها ( Data  ) و ارتباطات ( Communication  ) .

برخی از مهمترین اهداف هر سازمان عبارتند از :

·          ما افرادی را در سازمان داریم یا استخدام میکنیم .

·          به افراد وظایفی ارجاع میشود .

·          برای انجام وظایف ما اجتیاج به رد و بدل کردن اطلاعات داریم .

·          همچنین ما احتیاج به ارزیابی و نظارت وظایف داریم .

برای رد و بدل کردن اطلاعات ما احتیاج به یک کانال ارتباطی مثل ایمیل یا ویکی و ... داریم .

شیرپوینت دارای امکانات آماده ای است که تمام نیازمندی های ما در همکاری تیمی را پوشش میدهد . برای مشاهده این امکانات بر روی عملیات سایت کلیک کرده و Create   یا ایجاد را انتخاب کنید . در این صفحه شما میتوانید لیستی از امکاناتی را مشاهده نمایید که میتوانید با به کار گیری آنها تمام نیازهای سازمان خود را برای همکاری تیمی برآورده سازید :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

در زیر به بررسی برخی از این امکانات میپردازیم :

افراد ] People  [

تماسها ( Contacts  )  : که میتوانید در قسمت Communication  یا ارتباطات به آن دسترسی داشته باشید و میتوانید از آن برای نگهداری اطلاعات اصلی افراد مانند شماره تماس ، ایمیل و .... استفاده نمایید .

وظایف ] Task  [

وظایف ( Tasks  ) : که میتوانید در قسمت Tracking  یا پیگردی به آن دسترسی داشته باشید . این لیست به ما کمک میکند تا بتوانیم وظایفی را به اشخاص ارجاع دهیم و همچنین آنها را پیگیری کنیم .

داده ها  ] DATA [

کتابخانه اسناد (Document Library  ) : که به ما کمک میکند تا بتوانیم اسناد خود را به اشتراک بگذاریم ، آنها را ویرایش کنیم و یا به نگارش بندی آنها بپردازیم .

کتابخانه تصاویر ( Picture Library ) : که به ما امکان به اشتراک گذاری تصاویر را میدهد .

مدیریت ترجمه ( Translation Management ) : که به ما امکان ایجاد اسناد چند زبانه را میدهد .

کتابخانه ارتباط داده ای ( Data Connection Library  ) : که به ما امکان به اشتراک گذاری فایلهایی را میدهد که اطلاعاتی در مورد داده های خارجی را شامل میشوند .

ارتباطات ] Communication  [

ویکی ( WIKI ) : که برای ایجاد سیستم هایی شبیه WIKI  مورد استفاده قرار میگیرد .

اعلانات (announcement ) : که امکان به اشتراک گذاری خبرها و وضعیت های جاری را میدهد .

گفتگوها ( Discussion Board ) : که به وسیله آن میتوانیم گروه های خبری را ایجاد نماییم .

 

همانطور که ملاحظه کردید شیرپوینت هر چهار موجودیت اصلی برای همکاری تیمی را پوشش میدهد ، البته شیرپوینت شامل امکانات بسیار دیگری نیز میباشد مثل امکانات نظارت یا Monitoring  که شامل :

وظایف پروژه ای ( Project Task ) : که میتوانید در قسمت Tracking  آن را مشاهده نمایید که به ما این امکان را میدهد که بتوانیم وظایف در نمای گانت نظارت کنیم .

پیگیری مشکلات ( Issue Tracking  ) : که یکی از امکانات مفید شیرپوینت میباشد و با استفاده از آن مشکلات پروژه ها را از آغاز تا پایان بر اساس اولویت های آنان مدیریت کنیم .

تقویم ( Calendar  ) : که میتوانیم با استفاده از آن تقویمی ایجاد کنیم برای وقایع مهم سازمان .

 

چگونه میتوانیم از این امکانات در سایت خود استفاده کنیم ؟

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

در واقع ما میخواهیم یک کتابخانه اسناد بسازیم ، شما میتوانید در سه مرحله به سادگی این کار را انجام دهید ، پس قدم به قدم با هم این کار را انجام میدهیم :

1 – بر روی منوی عملیات سایت کلیک کرده و ایجاد را انتخاب کنید .

2 – در این صفحه که قبلا نیز آن را معرفی کرده ایم ، بر روی کتابخانه اسناد یا Document Library  کلیک کنید .

3 - یک عنوان مانند آموزش شیرپوینت برای آن برگزینید و الگوی سند را نیز اسناد ورد انتخاب کنید و دکمه تایید را بزنید .

حالا شما میتوانید کتابخانه اسنادی که ایجاد کردید را مشاهده و اسناد خود را در آن بارگذاری کنید :

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

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

( برای مشاهده سایز بزرگتر تصویر اینجا را کلیک کنید )

نکته : شما میتوانید با توجه به نیازهای همکاری تیم خود از دیگر امکانات آماده شیرپوینت استفاده نمایید و آنها را به سایت خود اضافه نمایید .

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

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

 
شیرپوینت از نگاهی دیگر
 

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

شیرپوینت چیست ؟

شیرپوینت به اعضای یک تیم کمک میکند تا در یک محیط همکاری به ارتباط و تبادل اطلاعات بپردازند که این موضوع به متمرکز کردن اطلاعات سازمانی کمک بسیاری میکند ، برای نمونه به شکل زیر که نمایی عادی از فعالیت های یک سازمان را نشان میدهد توجه کنید :

فایلها و اسناد بر روی کامپیوترهای شخصی ذخیره سازی میشوند و اطلاعات معمولا از طریق پروتکل های اختصاصی رد و بدل میشوند ، پروتکل های ارتباطی برای انتقال فایلها و اسناد وابسته به اشخاص است ، بعضی افراد از ایمیل استفاده میکنند ، بعضی افراد از طریق share  کردن درایو و پوشه ها استفاده میکنند و ...

شیرپوینت اسناد واحدهای مختلف را در یک مکان متمرکز و از یک مکانیزم انتقال اطلاعات یکپارچه استفاده میکند ، در یک جمله میتوان گفت پرتال اطلاعات متمرکز سازمانی :

 

WSS  و MOSS  چیست ؟

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

1 – WSS  یا Windows Sharepoint Services  که در واقع پلتفورمی است که MOSS  را میسازد و به صورت رایگان همراه با ویندوز سرور 2003 عرضه شده است .

2 – MOSS  که نسخه تجاری شیرپوینت است که همراه با قابلیت های بیشتر نسبت به WSS  میباشد .

WSS   برای تیم ها و پروژه های کوچک مناسب میباشد و MOSS  سرویس ها و امکانات بیشتری نسبت به WSS  دارد و انتخاب بین این دو نسخه بستگی به بودجه سازمان ها دارد .

شیرپوینت چگونه کار میکند ؟

در واقع شیرپوینت به تنهایی کاری انجام نمیدهد و احتیاج به 2 محصول دیگر یعنی   و IISSQL Server  دارد .

 

شیرپوینت چگونه با IIS  کار میکند ؟

برای اینکه بدانیم شیرپوینت چگونه با IIS  کار میکند ابتدا باید دو مفهوم HTTP Handler  و HTTP Module  را بدانیم . کسانی که با برنامه نویسی وب آشنایی دارند حتما این دو مفهوم را میشناسند ، دوستانی که میخواهند در مورد این مفاهیم آشنایی پیدا کنند میتوانند این مقاله را که توسط دوست خوبم سید محمد رضا فراحی  نوشته شده را بخوانند .

با استفاده از HTTP Handler  و HTTP Module  درخواستها ابتدا به Sharepoint Runtime  و سپس به ASP.Net Runtime   ( aspnet_isapi.dll  ) تحویل داده میشوند .

برای درک بهتر میتوانید فایل web.config  شیرپوینت را باز کنید تا متوجه این موضوع بشوید :

<httpHandlers>

  <remove verb="GET,HEAD,POST" path="*" />

  <add verb="GET,HEAD,POST" path="*" type="Microsoft.SharePoint.ApplicationRuntime.SPHttpHandler, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

...

</httpHandlers>

 

<httpModules>

  <add name="SPRequest" type="Microsoft.SharePoint.ApplicationRuntime.SPRequestModule, Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

...

</httpModules>

سایت ( site  ) و مجموعه سایت ( Site Collection  ) چیست ؟

شیرپوینت تمام اطلاعات سازمانی را در بر میگیرد ، وقتی ما در مورد اطلاعات خاص شرکتها یا سازمانها صحبت میکنیم  چیزی شبیه به شکل زیر در ذهن ما مجسم میشود ( در واقع مجموعه ای از داده ها که در گروه ها و زیر گروه هایی قرار میگیرند ) :

شیرپوینت   های IIS Web Application را برای تطبیق ساختار اطلاعات تعیین شده ی بالا با استفاده از سایت ها و مجموعه سایتها توسعه می دهد :

 

مزیت اصلی استفاده از مجموعه سایت ها ( Site Collection  ) چیست ؟

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

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

چگونه از SQL Server  در شیرپوینت استفاده میشود ؟

SQL Server  برای ذخیره سازی محتوا و اطلاعات پیکربندی شیرپوینت استفاده میشود ، در واقع در شیرپوینت ما 2 نوع بانک اطلاعاتی داریم که شامل بانک اطلاعاتی محتوا و بانک اطلاعاتی پیکربندی یا تنظیمات میباشد .

محتوا بر اساس سایتها میباشد یعنی هر سایت محتوای مخصوص به خود را دارد ، برای مثال سایتهای پرداخت و استخدام هر کدام بانک اطلاعات محتوای جدا برای خود دارند .

بانک اطلاعات پیکربندی ( Configuration Database  ) برای تمام سایتهایی که در وب فارم استفاده میکنیم میباشد ، در واقع تنظیمات مختص به هر سایت و برخی تنظیمات که در میان تمام سایتها عمومی هستند :

برای اینکه بهتر متوجه این موضوع شوید میتوانید به SQL Server  خود نگاهی بیاندازید .

Virtual Path Provider  یا تامین کننده مجازی مسیر چیست ؟

در ASP.NET  ما دو نوع صفحه برای هر پروژه داریم ، یکی صفحات استاندارد و عمومی (  Common Pages  ) و دیگری صفحات اختصاصی ( Customized Page ) ، صفحات عمومی در دایرکتوری فایل ذخیره میشوند در حالی که نسخه اختصاصی صفحات در بانک اطلاعاتی محتوا نگهداری میشوند .

بنابراین ما احتیاج به مکانیزمی برای ترجمه یا رندر کردن صفحاتی که در بانک اطاعات محتوا و همچنین صفحاتی که در دایرکتوری های مجازی ذخیره میشوند داریم که این امر به وسیله Virtual Path Provider  در شیرپوینت انجام میگیرد .

بنابراین برای تمام صفحات اختصاصی ، Virtual Path Provider  آنها را از دیتابیس محتوا میخواند و تحویل ASP.NET Runtime  میدهد ، همچنین برای صفحات عمومی Virtual Path  به داخل دایرکتوری ها رفته و صفحات را تجزیه و سپس تحویل ASP.NET Runtime  میدهد .

در واقع Virtual Path  به عنوان یک جدا کننده صفحات استاندارد و صفحات اختصاصی میباشد که این صفحات را از دیتابیس محتوا یا فایلهای سیستم خوانده و به ASP.NET Runtime  پاس میدهد .

امیدوارم که تا اینجا استفاده لازم را از مطالب برده باشید ، اما در مقاله بعد در مورد مجموعه سایتها و ویژگیها ( Features  ) صحبت خواهیم کرد .

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

منبع

پست هاي بيشتر صفحه بعدي »