- محتویات اصلی صفحه
جستجو کن
Sharepoint Tips And Tricks
                        Ramin Ahmadi
خانه
  

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

با سلام خدمت دوستان و همراهان عزیز و گرامی .

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

در مقاله امروز زیاد با برنامه نویسی کاری نداریم و نحوه بهینه سازی محتوای صفحات شرپوینت قبل از ارسال به مرورگر را بررسی خواهیم کرد( admin  های عزیز شرپوینت حتما این مقاله را بخوانند ! ) ، در بیشتر موارد این کار بین 50 تا 80 درصد کاهش ترافیک و تقریبا 30 درصد افزایش سرعت را در بر خواهد داشت !

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

1 – فعال کردن Blob Caching

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

 

-  فعال کردن Blob Caching

Blob یا Binary Large Objects Cache  یکی از مهمترین امکانات برای کش کردن آبکجت هایی مثل تصاویر ، صداها و ویدئو ها می باشد که این اطلاعات را یکبار از دیتابیس فراخوانی کرده و بر روی سرور و یا کلاینت ذخیره میکند ، در واقع Blob Caching  توانایی انجام کارهای زیر را دارد :

1-  ذخیره آبجکت ها بر روی هارد دیسک سرور ( به منظور کاهش فراخوانی های دیتابیس )

2- کش کردن آیتم ها در کلاینت ( برای کاهش درخواست ها به سرور )

اما چطور میتونیم این امکان رو در شرپوینت فعال کنیم ؟

ابتدا یک کپی از فایل Web.config   سایت مورد نظر بگیرید و سپس آن را باز کنید و در قسمت configSections به دنبال <sectionGroup name="SharePoint"> بگردید ، و در این تگ و قبل از بسته شدن آن تگ زیر را وارد کنید ( البته اگر این تگ وجود داشت این مرحله را نادیده گرفته و به مرحله بعدی بروید ) :

<section name="BlobCache" type="System.Configuration.SingleTagSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ />

سپس به دنبال تگ BlobCache  بگردید ، BlobCach  به صورت پیش فرض غیرفعال می باشد و برای فعال کردن ان شما می بایست مقدار Enable  را به True  تغییر دهید :

<BlobCache location="C:\blobCache" path="\.(gif|jpg|png|css|js)$" maxSize="10" max-age="86400" enabled="true"/>

 

Location  محل ذخیره سازی فایل های کش شده می باشد .

Path  فیلتری است برای مشخص کردن فایل هایی که می خواهید کش شوند .

maxSize مقدار فضایی است که میخواهید برای کش کردن اطلاعات اختصاص دهید ( به گیگابایت ) .

Max-age  : ماکسیمم زمانی است که مرورگر کلاینت اطلاعات کش شده را دریافت میکند ( به ثانیه )

Enable  برای فعال و یا غیرفعال کردن این ویژگی به کار میرود .

- فعال کردن فشرده سازی

فشرده سازی یکی از امکانات بسیار خوب IIS  نسخه 6 می باشد که به صورت پیش فرض غیر فعال است .

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

- فایل های استاتیک مثل HTM ، CSS  ، txt

- فایل های داینامیک مثل asp ، dll  و یا exe

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

قبل از اینکه این امکان را فعال کنیدحتما یک نسخه پشتیبان از سایت خود بگیرید ، Command Prompt  را باز کنید و به آدرس به systemdrive%\inetpub\AdminScripts تغییر دهید .

برای فایل های استاتیک دو دستور زیر را اجرا کنید :

  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "css" "htc" "htm" "html" "js" "txt"
  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "css" "htc" "htm" "html" "js" "txt"

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

  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions "asp" "asmx" "aspx" "dll"
  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions "asp" "asmx" "aspx" "dll"

در برخی موارد اضافه کردن فایل های dll  ممکن است کارایی شما را کاهش دهد ، برای درک بهتر مفهوم فشرده سازی و استفاده بهتر از آن پیشنهاد میکنم مقالات Analyzing the use of HTTP compression و Things to consider  را مطالعه کنید .

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

  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel "9"
  • CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcDynamicCompressionLevel "9"

مقدار فشرده سازی بین 0 تا 10 است ( به صورت پیش فرض 0 می باشد ) ، اگر میزان آنرا بر روی مقادیر کمتر تعیین کنید منابع پردازنده و حافظه کمتر اشغال می شوند و اگر بر روی مقادیر بالا تنظیم شود میزان استفاده از پردازنده و حافظه بیشتر میشوند و فایل های کوچک نیز فشرده میشوند در حالی که در مقادیر پایین تر بیشتر فایلهای بزرگ فشرده سازی میشوند .

و در آخرین مرحله می بایست دستور IISReset  را اجرا کنید .

اگر مشکلی با دریافت فایلهای Zip  در شرپوینت به وجود آمد میتوانید این راهنما را بخوانید .

- اصلاح MasterPage  و Page Layouts  

این کار کمی سخت تر و زمان گیر تر میباشد اما نتایج بسیار مثبتی دارد ، آیا تاکنون به وجود تعداد بسیار زیاد آیکون ها توجه کرده اید ؟ شما می بایست فایل های اضافی Layouts  را پاک کنید ، در گوگل به دنبال عباراتی مثل page speed و yslow بگردید و بینید در مقالاتی که مطرح شده چه کارهایی را انجام دادند ، به طور مثال کارهایی که میتوانید در طراحی مجدد صفحات انجام دهید شامل موارد زیر است :

- پاک کردن وب پارت های مخفی از صفحات ( بعضی از صفحات ممکن است بیش از 20 مگابایت اطلاعات را لود کنند ! و این ممکن است به شدت کارایی شرپوینت را کاهش دهد )

- حذف وب پارت مدیریت محتوا ( content editor webpart  ) – در این مقاله میتوانید دلیل آن را بخوانید .

- تعداد master Page  های سایت خود را به 1 کاهش دهید ( بله ، این نکته هم بسیار تاثیر گذار است ، مخصوصا در سایت های اینترنتی )

اما نتایجی که شما بعد از عملیات 1 و 2 ( به جز مورد آخر ) به دست می آورید شبیه این موارد خواهد بود :

 

Original

Optimised

Improvement

Request Count

32

5

84%

Bytes Sent

16,969

3,360

80%

Bytes Received

172,899

31,223

82%

Aggregate Session time

00:00:01:4420

00:00:00:9213

36%

 

منابع و مقالات مرتبط :

msdn.microsoft.com/en-us/library/ms533020(VS.85).aspx#Use_Cache-Control_Extensions

blog.thekid.me.uk/archive/2007/07/17/speed-up-your-sharepoint-site-using-cache-control.aspx

www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=63

msdn.microsoft.com/en-us/library/bb727371.aspx

http://weblogs.asp.net/hiransalvi/archive/2008/02/10/configuring-blob-caching-for-sharepoint-web-application.aspx

http://blogs.msdn.com/ecm/archive/2006/11/08/how-to-make-your-moss-2007-web-site-faster-with-caching.aspx

http://msdn.microsoft.com/en-us/library/aa604896.aspx

 

منتظر نظرات شما هستم .

موفق و پیروز باشید
 Backup  و Restore  از طریق آبجکت مدل

با سلام خدمت دوستان عزیز و گرامی

امروز میخواهم برای شما مطالبی در مورد Backup  و Restore  از طریق آبجکت مدل شرپوینت ارائه کنم .

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

- استفاده از امکانات Backup  و Restore  موجود در Central Administration

- استفاده از stsadm  و دستور backup و Restore

- استفاده از شرپوینت دیزاینر و امکاناتی که در این نرم افزار برای Backup  و Restore  در نظر گرفته شده

در هر کدام از موارد بالا محدودیت ها و مشکلاتی در پیشروی شما قرار دارد ، به عنوان مثال با استفاده از امکانات Central Administration  شما نمیتوانید از سایت ها و وب ها به صورت  تکی نسخه پشتیبان تهیه کنید و حتما میبایست یک Web Application  را به صورت کامل backup  بگیرید .

یا در استفاده از دستورات stsadm  مشکلاتی در ضمینه حجم backup  گیری وجود دارد که شما نمیتوانید سایتی که بیش از 15 گیگابایت حجم داشته باشد را backup  بگیرید و یا اگر از سرویس پک 2 استفاده میکنید باید از  setsitelock استفاده کنید که در این صورت سایت شما تا انتهای عملیات به صورت فقط خواندنی تغییر خواهد یافت ، در ضمن Alert  و فرایند ها نیز در Backup  گیری نادیده گرفته می شوند ! و برای Restore  کردن هم مشکلات زیادی وجود خواهد داشت .

با استفاده از شرپوینت دیزاینر هم میتوانید عملیات Backup  و Restore  را انجام دهید که البته مشکلات کمتری هم نسبت به دو مورد بالا دارد ( البته بسیار عجیب است که این امکانات در شرپوینت دیزاینر 2010 حذف شده ! )

اما شما میتوانید از کلاسهای SPExport  و SPImport  نیز استفاده کنید ، این دو کلاس در فضای نام Microsoft.SharePoint.Deployment قرار دارد . این کلاس های به صورت پیش فرض توابعی را برای گرفتن Backup  و Restore  از سایت ، وب ، لیستها و بیشتر آبجکت های موجود در شرپوینت در خود دارند .

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

SPExportSettings settings = new SPExportSettings();

settings.FileLocation = @"C:\SPBackup";

settings.SiteUrl = "http://myServer/mySite";

settings.FileCompression = true;

settings.OverwriteExistingDataFile = true;

settings.BaseFileName = "export";

SPExport export = new SPExport(settings);

export.Run();

برای تنظیمات مربوط به Backup  ما از کلاس SPExportSettings  استفاده میکنیم ، با اجرای کد بالا فایلی با نام export.cmp  در c:\SPBackup  ایجاد میشود که در واقع از سایتی با آدرس http:/myServer/mySite  یک نسخه پشتیبان گرفته میشود . با استفاده از FileCompression از تکنیکهای فشرده سازی نیز برای backup  استفاده میشود ، OverwriteExistingDataFile مشخص میکند که اگر فایلی با این وجود داشته باشد فایل جدید را جایگزین فایل قبلی کند و سایر تنظیمات مثل FileLocation  ، SiteUrl  و BaseFileName  نیز به ترتیب مشخص کننده محل ذخیره فایل Backup ، آدرس سایت و نام فایل می باشد .

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

SPImportSettings settings = new SPImportSettings();

settings.FileLocation = @"C:\SPBackup";

settings.BaseFileName = "export";

SPImport import = new SPImport(settings);

import.Run();

در این مثال هم پارامترهای یکسانی برای تنظیمات نحوه Restore  وجود دارد ، اما تنظیمات دیگری هم برای این 2 کلاس وجود دارد ، مانند CommandLineVerbose که اگر مقدار True  داشته باشد مراحل اجرا را در کنسول به شما نمایش می دهد ، در واقع در این مثال ما از تنظیمات پیش فرض استفاده کردیم ، شما میتوانید با توجه به نیازهای خود این تنظیمات را اعمال کنید .

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

 

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

با سلام

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

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

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

برای ایجاد وب پارت شما 2 انتخاب متفاوت دارید ، وب پارت 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 نیز مقدار دلخواه خود را در کش قرار میدهیم که شامل 4 پارامتر می باشد ، پارامترهایStorage  و Key  مانند متد PartCacheRead می باشد ، علاوه بر این دو متد ، متدهای دیگر این متد عبارتند از :

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

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

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

اما اگر بخواهید در بین زمان تعیین شده اطلاعات را به روز کنید چه ؟ فرض کنید قسمتی را در وب پارت خود در نظر گرفته اید که کاربر علاوه بر اینکه وظایف خود را میبیند بتواند وظیفه ی جدیدی از طریق وب پارت شما ایجاد کند و پس از ایجاد بتواند آن را در لیست وظایف خود ببیند ، برای این کار شما کافیست در قسمتی که میخواهید اطلاعات به روز شوند از متد 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

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

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

 

تغییر آیکون فایل های ناشناخته  در شرپوینت 2010

یکی از مواردی که در هنگام کار کردن با شرپوینت با آن مواجه میشوید این است که اگر فایلی را که نوع آن در شرپوینت موجود نیست در یک مخزن اسناد آپلود کنید آیکون آن به صورت blank  نمایش داده میشود مثل فایل های PDF  که همچنان در شرپوینت 2010 هم آیکونی برای آن در نظر گرفته نشده :

icon 1

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

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES

تصویری با اندازه 16 * 16 در این فولدر قرار دهید ( اکثر آیکون هایی که در فولدر برای انواع مختلف فایل ها وجود دارند با ic  شروع شده اند ، شما نیز میتوانید از همین استاندارد استفاده کنید که دراین مثال ما نام فایل را icpdf.gif  قرار می دهیم )

بعد از کپی کردن تصویر به آدرس زیر بروید :

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\XML

فایل docIcon.xml  را باز کنید و خط زیر را در تگ ByExtension   اضافه کنید ( Backup  گرفتن از این فایل را فراموش نکنید ):

<Mapping Key="pdf" Value="icpdf.gif"/>

icon 2

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

icon 3

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

Drag and Drop Upload

با سلام

امروز میخوام کمی در مورد امکانات جالب آفیس 2010 صحبت کنم .

یکی از امکانات جالبی که پس از نصب آفیس 2010 ملاحظه خواهید کرد امکان آپلود اسناد به صورت Drag and Drop  می باشد ، جالب است بدانید این امکان بر روی شرپوینت 2007 نیز قابل استفاده می باشد .

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

حال  اسناد خود را به داخل صفحه Drag  کنید :

پس از تایید ملاحظه خواهید کرد که این پنل با استفاده از Ajax  فایل ها را آپلود خواهد کرد :

بسیار جالب است ! تنها چیزی که شما نیاز دارید نصب Microsoft Workspace 2010  میباشد تا بتوانید از امکانات جالب آن که به زودی مطالب بیشتری خدمت شما ارائه خواهم کرد استفاده کنید .

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

با سلامی مجدد

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

در نظر سنجی که از بازدیدکنندگان این سایت به عمل آمده بیش از 92 درصد از بازدیدکنندگان از این سرویس راضی بودند و جالب است که بیشتر قست های سایت را Silverlight  تشکیل داده .

در اوایل این مسابقات مایکروسافت Amber Johnson  و سپس Dylan Derryberry را برای انتقال تجربیات خود به این مسابقات فرستاده بود ...

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

اما همانطور که میدانید قرار بود شرپوینت 2010 در تابستان سال بعد ارائه شود اما تاریخ عرضه این محصول به May  تغییر کرده و برخی از منابع خبری تاریخ دقیق آن را 12 می 2010 اعلام کرده اند .

ما هم بی صبرانه منتظر عرضه رسمی شرپوینت 2010 هستیم .

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

چند خبر خوب برای بازدیدکنندگان و وبلاگ نویسان راهکار خلاق

با سلام خدمت دوستان عزیز و گرامی

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

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

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

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

- بن های  50 تا 80 درصدی تخفیف ، ویژه ی آزمون های مایکروسافت .

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

- اهداء فیلم های سمینارهای مایکروسافت از جمله سمینار معروف TechEd  .

- امکان استفاده رایگان از کلاس های تخصصی شرپوینت در راهکار خلاق .

- اهداء پکیج فارسی ساز و تقویم فارسی شرپوینت 2007 و 2010 .

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

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

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

دسته بندی منوی 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

پوسترهای جدید شرپوینت 2010 منتشر شد
با سلام
چند روزیست مایکروسافت پوسترهای جدیدی از معماری ، راهبری و توسعه شرپوینت 2010 را منتشر کرده است ، پیش از این 4 پوستر در مورد ارتقا شرپوینت 2007 به 2010 منتشر شده بود ، این پوسترها با فرمت های مختلف از جمله PDF و VSD  و هچنین XPS موجود می باشند .
 

image imageimageimageimage imageimageimage

image image

imageimage imageimage

 

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

1 - 10 بعدی

 ‭(Hidden)‬ مدیریت وبلاگ