به علت تعدد این قبیل مشکلات مایکروسافت قابلیت سفارشی سازی کلاینت ساید ( client-side customization ) را ارائه کرد. خصوصا Content editor web partها و Script editor web partها برای این منظور استفاده میشدند، اما توانایی اندک آنها در مقایسه با قابلیت سولوشنهای قدرتمند سرورساید به هیچ وجه قابل مقایسه نبود به عنوان مثال هیچ گاه شما قادر به ایجاد Event Receiver و Server Job و سایر قابلیتهایی که براحتی درFarm solution تان ایجاد میکردید در وب پارتهای کلاینتی نخواهید بود، ضمن اینکه هر کاربری با داشتن مجوز ویرایش صفحه براحتی میتوانست تغییرات موجود در وب پارتهای Content editor و Script editor را براحتی تغییر دهد، یا حتی آنها را از کار بیاندازد. به علاوه وب پارت script editor توسط بسیاری از سایت تمپلیتهای پیش فرض شیرپوینت بلاک میشد، به عنوان مثال اگر شما در شیرپوینت یک تیم سایت ( Team site ) یا گروه سایت ( Group site ) ایجاد میکردید دیگر امکان استفاده از وب پارت ویرایشگر اسکریپت را در آن نداشتید.
قبل از اینکه بخواهیم در مورد شیرپوینت فریم ورک بپردازیم باید کمی در مورد انواع شیرپوینت و متدولوژیهای توسعه شیرپوینت که از سوی شرکت مایکروسافت ارائه شده توضیحاتی ارائه کنم :
همانطور که مستحضرید نسخه متداول شیرپوینت( به بیشتر در کشور ما مورد استفاده قرار میگیرد ) نسخه On-Premises است ، اما امکان استفاده از شیرپوینت Online نیز وجود دارد ( که هر روز بیشتر از گذشته مورد استفاده قرار میگیرد )
فرمت مرسوم سولوشنهای شیرپوینتی WSPها بودند برای شیرپوینت نسخه On-premises امکان ایجاد بستههای wsp به دو صورت فارم سولوشن و سندباکس سولوشن فراهم بود ولی در نسخههای شیرپوینت Online امکان استفاده از Farm solution ها به صورتی که در شیرپوینت On-premises فراهم بود، میسر نیست.
اگر تجربه توسعه شیرپوینت را داشته باشید به خوبی میدانید که sandbox سولوشنها قابلیتهای فارم سولوشن را ندارند و استفاده از آنها برای پروژههای عملیاتی به هیچ وجه متداول نیست.
سپس مایکروسافت Add-in مدل را ارائه نمود که این متدولوژی شاملapp Sharepoint hosted و Sharepoint Provided host app بود این متدولوژیهای توسعه برای هر دو نسخه on-premises و شیرپوینت آنلاین کاملا قابل اطمینان هستند اما نظر شخصی بنده اینست که Sharepoint Provided host app و Sharepoint hosted app کاربرد بسیار محدودی دارند و خیلی مورد استفبال قرار نگرفتهاند ، شاید علت این موضوع به خاطر فرآیند نصب پیچیده آنها باشد و اینکه خیلی برای محصولات 3rd party مناسب نیستند.
معرفی شیرپوینت فریم ورک :
به این ترتیب شرکت مایکروسافت شیرپوینت فریم ورک ( Sharepoint Framework ) را در اردیبهشت ماه سال 1396 ( می 2016 ) معرفی نمود. شیرپوینت فریم ورک صرفا فقط تسهیل کننده سفارشی سازی از طریق کلاینت ساید نبود، بلکه شامل api ها و ابزارهای مجزایی برای deploy کردن سولوشنهای customize شده از طریق کلاینت ساید بود. در یک جمله میتوان گفت فراهم ساختن بستری جهت پشتیبانی کامل از توسعه کلاینت ساید بود.
هدف از ارائه شیرپوینت فریم ورک :
هدف از ارائه Sharepoint Framework تبدیل مدل سفارشی سازی و توسعه از طریق کلاینت ساید ( client-side customization ) به مدل توسعه رسمی ( official ) ، توسط توسعه دهندگان شیرپوینت بود. به این ترتیب توسعه دهندگاه شیرپوینت به استفاده از ابزارهای ارائه شده قادر به پک کردن ( pack ) و نصب ( deploy ) بستهها در سایتهای شیرپوینتی خواهند بود، درست مانند شیرپوینت سولوشنها و Sharepoint add-ins در نسخههای قبلی شیرپوینت.
برخی از ویژگیهای شیرپوینت فریم ورک :
- تسهیل دسترسی به دیتاهای شیرپوینت
روش توسعه با استفاده از sharepoint framework به علت امکان استفاده از api های ارائه شده دسترسی به دیتاهای شیرپوینت ( sharepoint data ) را تسهیل مینماید. اما منظور از تسهیل دسترسی به دیتاهای شیرپوینت به معنی کاهش امنیت ویا محدودیت دسترسی نیست ، بلکه بیانگر یه مدل کلاینتی جهت دسترسی به دیتاسورس شیرپوینتی است.
- اجرای سفارشی سازی در context صفحه جاری
کامپوننتهای ساخته شده توسط شیرپوینت فریم ورک در context صفحه جاری ( صفحه ای که در هر لحظه مرور میکنید و باز است ، current page ) اجرا میشوند، برعکس مواردیکه قبلا مایکروسافت برای توسعه کلاینت سایت مطرح کرده بود به عنوان مثال قبلا content editor webpartها و script editor webpartها دریک iframe در صفحه جاری اجرا میشدند و این موضوع خود باعث کٌندی میشد. چون renderهای سفارشی سازی شده با شیرپوینت فریم در DOM صفحه جاری اجرا میشوند نه در iframe لذا مدل توسعه با استفاده شیرپوینت فریم روک از سرعت بیشتری نسبت به مدل سفارشی سازی قبلی دارد .
- امکان استفاده از responsive ( واکنشگرا )
به علت مواردیکه در بخش قبل گفته شد یعنی سفارشی سازی در DOM صفحه جاری نه در iframe ، همین مزیت باعث ایجاد امکان پیاده سازی سولوشنهای واکنشگرا ( ریسپانسیو ) خواهد شد.
- نزدیک شدن به مدل توسعه دهندگان وب
شرکت مایکروسافت در یک رویکرد جدید اقدام به معرفی و سرمایه گذاری برروی یک مدل توسعه جدید که بسیار با روشهای قبلی توسعه محصولات مرتبط با شیرپوینت است ، نموده است. در مدلهای قبلی توسعه دهندگان شیرپوینت مجبور به استفاده از Visual studio برای توسعه و ایجاد سولوشنهای شیرپوینتی بودند در صورتیکه هم اکنون مایکروسافت تصمیم گرفته است مدل توسعه شیرپوینت را به آن مدلی که عموما در توسعه وب به کار میرود نزدیکتر کند یعنی توسعه دهندگان میتوانند از ابزارهای Cross platform شامل یک text editor ساده و ابزارهایی نظیر NPM و Node.js و Yeoman و Gulp و Webpack استفاده نمایند که علاوه بر شیرپوینت در سایر تکنولوژیهای مبتنی بر وب نیز قابل استفاده هستند ، لذا این رویکرد باعث خواهد شد توسعه دهندگان بیشتری نسبت به توسعه شیرپوینت علاقمند شوند.
- استفاده از صفحات مدرن
سولوشنهایی که توسط Sharepoint framework ایجاد و دیپلوی کردهاید خواهد دید که علاوه بر publishing pageها و wiki pageها در modern pageها نیز قابل استفاده هستند، به این ترتیب ضمن استفاده از قابلیتهای قدیمی امکان استفاده و سفارشی سازی modern pageها نیز برای شما فراهم است.
ابزارهای مورد نیاز برای کار با شیرپوینت فریم ورک
با فرض آشنایی نسبی با شیرپوینت و Office 365 در حد مدیریت سایت کالکشن ( شامل ایجاد ساب سایت ، صفحات و وب پارتها و انواع لیستها و کتابخانه ها و ... ) ادامه این آموزش را follow میکنیم.
آشنای نسبی Html و Css و JavaScript لازم است ، البته بعدا به جای جاوااسکریپت از TypeScript و بجای css از Sass استفاده میکنیم . بنده لیست مواردیکه برای توسعه با شیرپوینت فریم ورک مورد نیازمان است را ارائه میکنم و سعی بنده بر اینست که تک تک موارد در ویدئوی آموزشی پایین صفحه مورد بررسی جهت آموزش قرار گیرد.
با فرض آشنایی نسبی با شیرپوینت و Office 365 در حد مدیریت سایت کالکشن ( شامل ایجاد ساب سایت ، صفحات و وب پارتها و انواع لیستها و کتابخانه ها و ... ) ادامه این آموزش را follow میکنیم.
آشنای نسبی Html و Css و JavaScript لازم است ، البته بعدا به جای جاوااسکریپت از TypeScript و بجای css از Sass استفاده میکنیم . بنده لیست مواردیکه برای توسعه با شیرپوینت فریم ورک مورد نیازمان است را ارائه میکنم و سعی بنده بر اینست که تک تک موارد در این مقاله آموزشی مورد بررسی جهت آموزش قرار گیرد.
ویدئوی آموزشی نحوه نصب و ایجاد یک محیط توسعه :