امنیت
امنیت دارای دو جنبه است. جنبه اول پیکربندی صحیح دسترسی به محتوا و عملکردها برای کاربران مجاز میباشد.
جنبه دوم آن اطمینان از این موضوع است که هکرها قادر به ایجاد اختلال و حفره در برنامه و دسترسی غیر مجاز به محتوا و عملکردهای برنامه نخواهند بود.
در ریما، ما به موارد ذیل توجه خاصی داریم :
-
مجوزهای دسترسی و لیست های کنترل دسترسی
-
پیکربندی صحیح وب پارت ها
-
بررسی و پاک سازی ورودی های کاربران به منظور جلوگیری از حملات sql injection، cross site scripting و ...
-
امن سازی فضای ذخیره سازی و تبادل اطلاعات
واسط کاربری بخش مدیریتی، کترل ها و واسط برنامه نویسی ایمن سازی برنامه را از طریق امکاناتی مانند واسط کاربری ساده، حفاظت های خودکار و ابزارهای مختلفی آسان کرده است.
کارایی
در بسیاری از مواقع توسعه دهندگان فقط بر روی عملکرد صحیح آنچه که کدنویسی کرده اند متمرکز می شوند. این کار باعث بروز ایرادات جدی در قابلیت توسعه، افزایش هزینه ها و حتی نارضایتی کاربران می گردد. ریما امکانات بهینه سازی بسیاری دارد که بصورت خودکار و درون سیستمی انجام می شوند و راه های پیشنهادی را ارائه کرده است تا پروژه های شما بهترین کارایی را داشته باشند :
-
کش یا catche بهترین و اولین روش :
-
خروجی وب پارت ها ر ا می توان با استفاده از مکایزم کش جزئی ذخیره کرد.
-
کش داده های خروجی به صورت جداگانه و به اشتراک گذاشتن آن ها در سیستم با استفاده از کش محتوا.
-
واسط برنامه نویسی قدرتمند برای کش کردن که امکان کش داده های پیچیده و دارای وابستگی های پیچیده را فراهم می کند.
-
مکانیزم های کش خروجی که می توان از آن در هر صفحه ای استفاده کرد.
-
واسط های برنامه نویسی که برای بازیابی داده های مورد نیاز طراحی شده اند.
-
ابزار اشکال زدایی توکار که امکان دسترسی و مشاهده عملکردهای درونی سیستم را فراهم کرده است.
با اینکه سیستم مدیریت محتوای ریما بسیاری از مسائل را بصورت خودکار انجام می دهد، با این حال بروز اشکالات در کارایی برنامه های تولید شده امری اجتناب ناپذیر است. در اینجا ما برخی از نکاتی که به توسعه دهندگان خودمان توصیه می کنیم تا همواره آن ها را بخاطر داشته باشند به صورت خلاصه آورده ایم:
-
تا جایی که امکان دارد نباید از پرس و جو های sql استفاده شود.
-
داشتن یک استراتژی مشخص و عملیاتی در ارتباط با مسئله کش.
-
بازبینی کدهای تولید شده با استفاده از ایزار اشکال زدایی از طریق واسط کاربری بخش مدیریتی سیستم.
-
بازبینی نحوه پیکربندی پروژه، چرا که فعال بودن برخی از امکانات سیستم مانند آنالیزور وب یا بازاریابی آنلاین می تواند سربار زیادی بر روی پردازش درخواست ها ایجاد کند.
-
توجه به زمان بارگذاری صفحه برای اولین بار و همچنین زمان بارگذاری صفحه هنگام استفاده از مکانیزم کش.
-
توجه به استفاده از ابزارهای جانبی جهت بهبود هرچه بیشتر کارایی، مانند استفاده از ابزارهایی که کدهای html یا اسکریپت را فشرده سازی و بهینه می کنند.
وابستگی ها
وقتی چیز جدیدی ساخته می شود باید توجه داشت که به چه چیزهایی وابسته است (ساختارهای داده، واسط های برنامه نویسی ثانویه و ...) و چه چیزهایی وابسته به آن است (قالب ها، ماژول های دلخواه و ...).
توجه به نحوه تعامل آنچه که ایجاد می شود با وابستگی ها از لحاظ جلوگیری از دوباره کاری از اهمیت ویژه ای برخوردار است. همچنین توجه به نحوه استقرار امکانات و عملکردهای جدید در سیستم نیز پر اهمیت است.
برخی از وابستگی هایی که باید درباره آن ها چاره اندیشی شود :
-
انواع صفحات و محتویات لازم قبل از آن که بتوان یک قالب را ایجاد کرد.
-
مکانیزم وابستگی های کش باید به درستی پیکربندی شود.
-
فایل های کد و رشته های منبع که قبل از تولید ماژول دلخواه برای نمایش واسط کاربری آن لازم هستند.
-
کتابخانه های ثانویه همگی باید در دات نت فریم ورک و یا با استفاده از تکنولوژی WebAPI تولید شده باشند تا بتوانید از طریق ریما با آن ها ارتباط برقرار کنید.
-
درک کاملی بین روابط امکانات تولید شده باید وجود داشته باشد.
قابلیت نگهداری
اینکه پروژه توسط همان تیم تولید کننده نگهداری و پشتیبانی خواهد شد یا توسط تیم دیگری،پیاده سازی همواره باید با در نظر گرفتن قابلیت نگهداری و پشتیبانی انجام شود.
اگر هر چیزی که ساخته می شود، در بدو امر بدون برنامه ریزی و درهم و برهم ایجاد شود باعث افزایش هزینه نگهداری و پشتیبانی می شود. پس توجه به جنبه های مختلف کاری که انجام می شود از این منظر اهمیت خاصی دارد.
برخی از مسائلی که ما و توسعه دهندگان ما هنگام ایجاد هر امکانی در ریما به آن ها توجه دارند ذیلا اشاره شده است :
-
در مورد وب پارت ها، استفاده از شناسه های کوتاه و عناوین توصیفی که هدف و عملکرد وب پارت و شناسه آن را مشخص می کنند (برای مثال شناسه:"NM"، عنوان:"منوی اصلی").
-
نام گذاری مناسب کدهای فایل.
-
ذخیره فایل های کد در یک مکان مناسب که می تواند بیانگر عملکرد آن فایل ها باشد(برای مثال cmswebparts / webservices / gridservises.aspx)
-
استفاده از سیستم loging موجود ریما برای لاگ کردن رویدادهای محلی که در کدها رخ می دهند.
-
توجه به فاکتورگیری مجدد (refactoring) در متدهایی که کدهای طولانی دارند و ایجاد لایه های انتزاعی به منظور افزایش خوانایی و قابلیت استفاده مجدد کدها.
-
استفاده از امکاناتی که سیستم مدیریت محتوای ریما برای توسعه قابلیت های خود سیستم در اختیار توسعه دهنده قرار می دهد. مانند استفاده از Global Event ها یا Provider ها.
-
استفاده از یک رویه نامگذاری مشخص برای استفاده از پروژه. اینکار باعث می شود تا از فرم هایی که مشابه آن ها در سیستم وجود دارد استفاده نشود.
تجربه کاربر
این عمل هم مربوط به بازدید کنندگان است و هم مربوط به ویراستاران. وقتی که راهکاری ارائه می شود باید در مضمون خودش کاربری آسان را فراهم آورده باشد. در این صورت ویراستاران و تولید کنندگان محتوا وقت و انرژی کمتری برای مدیریت سایت صرف کرده و بیشتر بر روی تولید محتوای با کیفیت تر متمرکز خواهند شد. از طرفی باعث می شود تا بازدید کنندگان سایت هر چه بیشتر درگیر سایت شما شوند.
در اینجا به برخی از مواردی که کمک می کند تا بتوان محیطی عالی و پر از لذت برای بازدید کنندگان و ویراستاران ایجاد شود، اشاره می کنیم :
-
استفاده از ابزارک ها به جای وب پارت ها، به منظور شخصی سازی و انجام آزمون های A/B تا ویراستاران بتوانند خودشان اعمال مدیریتی خاصی را که برایشان در نظر گرفته شده است انجام دهند.
-
ایجاد تجمیع کننده در مواردی که نیاز کمی به تعامل با کاربر وجود دارد و یا اتوماسیون ن ها.
-
ارائه محتوای دلخواه بازدید کننده بر اساس فعالیت های گذشته.
-
آسان کردن دسترسی به هدف برای بازدید کنندگان.
-
توجه به مدت زمان بارگذاری صفحات برای بازدید کنندگان (سرعت بالاتر، بهتر)
توسعه پذیری
تقریبا پروژه ای وجود ندارد که یکبار ایجاد شود و دیگر توسعه پیدا نکند. فکرکردن درباره اینکه یک امکان در سیستم چگونه می تواند در آینده توسعه یابد یا بهینه سازی شود، می تواند باعث کاهش هزینه و صرفه جویی در زمان شود.
ما می دانیم که همواره باید بین تلاش ، زمان با بودجه و جدول زمانی پروژه تعادل برقرار شود.
بنابراین قطعا یکی از کارهای ما فکر کردن به مسائل زیر است:
-
به نحوه رشد و تغییرات داده ها در آینده توجه می کنیم.
-
درباره امکانات جدیدی که ممکن است در آینده اضافه شود یا سیستم هایی که در آینده با سیستم فعلی ترکیب خواهد شد، فکر می کنیم.
سعی می کنیم تا به نقاط قابل توسعه ریما توجه داشته باشیم چون به ما در رسیدن به قابلیت توسعه کمک می کند :
-
هسته پورتال کمک شایانی به توسعه سریع و انعطاف پذیر می کند.
-
استفاده از ماژول های دلخواه
-
بکارگیری گردانندگان رویدادها که سیستم مدیریت محتوای ریما در اختیار ما قرار داده است.
-
استفاده از مکانیزم Provider ها در ریما و بسط و توسعه آن ها در صورت نیاز.
آزمون
برای آن که بدانیم آنچه که ساخته شده است به درستی عمل می کند یا خیر از مکانیزم آزمون استفاده می کنیم تا متوجه شویم بخش های مختلفی که تولید شده اند در شرایط مختلف چه عملکرد هایی را خواهند داشت و اینکه این عملکردها آیا متناسب با نیازهای تعریف شده برای پروژه هستند یا خیر؟