آی تی نرد

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

مقایسه ی Sql Server با MySql با استفاده از گفته های هر دو طرف

شاید در ابتدا به ذهن اغلب افراد بیاد که چه لزومی واقعا به این مقایسه هست؟ خب معلومه که Sql Server بهتره یا حتی برعکس MySql بهتر هست.

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

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

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

ابتدا از منظر مایکروسافت بررسی و قضاوت کنیم:
ابتدا باید به یک سوال اساسی پاسخ داد کدام یک Open Source یا Commercial ؟ برای پاسخ باید ویژگی های هر کدوم رو بررسی کرد.

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

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

نکته ی دیگه ای که در مورد برنامه های سورس باز وجود دارد این هست که به دلیل اینکه تعداد برنامه نویسان داوطلب برروی این برنامه ها(البته برنامه های بزرگی مانند همین MySql) معمولا زیاد هست و شاید توانایی همه ی این برنامه نویسان در سطح مناسب نباشد به راحتی برنامه دارای باگ و یا حفره های امنیتی شود در صورتی که فرایند شروع کار برنامه نویس برروی برنامه های تجاری(پولی) مطمئنا سخت تر و دارای نظارت بیشتر می باشد.
برای مثال یکی از روزهای بد MySQL روزی بود که دیتابیس سایت Zappos.com هک شد و نزدیک به 25 میلیون اکانت در اختیار هکرها قرار گرفت.

بیشتر...



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

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

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

بیشتر...


روش ها و نگرانی های(Concerns) پیاده سازی در یک پروژه و ارائه راهکارها به طور خلاصه

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

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

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

  • ساده گرفتن: عدم پیچیده کردن و سخت دیدن و نوشتن کد.
  • عدم تکرار: عدم تکرار مواردی که میتوان به صورت abstract تعریف کرد و در یک مکان مشترک برای استفاده قرار داد. در واقع می بایست برای هر قسمت از تحلیل سیستم فقط یک قطعه پیاده سازی که آن را حل و پیاده سازی می کند وجود داشته باشد.
  • بیشتر بگید و نپرسید: می بایست وظیفه ی هر کلاس و قطعه کد به صورت کامل تعریف شده باشد و به کلاس گفته شود و نتیجه گرفته شود تا اینکه از وضعیت یک آبجکت پرسیده شود و براساس این وضعیتها نتیجه ایجاد شود.
  • نیازی نخواهید داشت: عدم نوشتن کدهایی که ممکن هست فکر شود در آینده لازم شود و درواقع می بایست با نوشتن کدهای Test کارایی و عملکرد سیستم را ثابت کرد و سپس تنها قسمتی از کد که باعث pass شدن Test میشود نوشته شود.
  • جداسازی نگرانیها: فرایند تقسیم نگرانیهای پروژه به قسمتهای کوچکتر و تعیین وظیفه و نحوه ی رفتار هر قسمت باعث میشود تا استفاده ی مجدد از یک کد بیشتر و یافتن مشکل و رفع آن راحتتر و همچنین قابلیت تست پذیری بیشتری داشته باشد.
  • و برخی موارد دیگر...

معماری که میتوان این اصول را در آن راحت تر رعایت و پیاده سازی کرد معماری چند لایه(N-Tier Architecture) می باشد. شرح این معماری و نحوه ی پیاده سازی آن در زیر آمده است:

یکی از انواع معماری های چند لایه معماری سه لایه هست(3-Tier) که حداقل تعداد لایه ها می تواند باشد.

در این معماری Object های نرم افزار در سه لایه ی اصلی طراحی میشوند که البته خود هر لایه نیز میتواند به لایه های بیشتری تقسیم شود که بستگی به وسعت و پیچیدگی پروژه دارد(افزودن لایه ها به مفهموم بهتر بودن آن نمی باشد).

بیشتر...

نصب مرحله به مرحله ی SharePoint Server 2010 به صورت Server Farm بر روی Windows 7 64bit

من خودم به عنوان یه Developer ترجیح میدم که شرپوینت رو روی ویندوز 7 ی نصب کنم که همه ی کارهای فنیم رو با اون انجام میدم منظورم اینه که کار کردن با ویندوزهای سرور اون هم با اون سنگینیش و کلی اضافات مثل اکتیودایرکتوری و غیره برای من به شخصه اذیت کننده هست. بنابراین من از طریق روشی که خیلی هم سخت و فنی نیست که در ادامه شرح خواهم داد شرپوینت رو روی ویندوز 7 نصب میکنم(جسارتا من توی این مقاله مخاطب خودمو یه Nerd در نظر گرفتم)، البته ناگفته نماند که در محیط های سازمانی و Production این روش درست نیست و بهتره به صورت نرمال و روی ویندوز سرور نصب بشه.

آماده سازی برای نصب شرپوینت:

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

  1. Windows 7 x64 SP1
  2. Sharepoint Server 2010
  3. Sql Server 2008 R2 OR Sql Server 2012

و پیش نیاز های شرپوینت که برای SQL 2008 و 2012 یکی هست:

  1. Microsoft Sync Framework Runtime v1.0 (x64)
  2. SQL Server 2008 Native Client
  3. Windows Identity Framework (Win2008 R2)
  4. ADO.NET Data Services v1.5 CTP2 (Win2008 SP2)
  5. Microsoft Chart Controls for the Microsoft .NET Framework 3.5
  6. Microsoft SQL Server 2008 Analysis Services ADOMD.NET

خب پس از نصب ویندوز، SQL Server رو نصب کنید که حداقل ویژگیهایی که میتونید تیک بزنید Database Engine و Managment Tools هست که مابقی مثل Reporting Service و غیره بستگی به نیاز شما داره.

بیشتر...

استفاده از ماژول Ninject.Extensions.Factory و الگوی Factory در زمان اعتبارسنجی Model در MVC

استفاده از الگوی Repository و پیاده سازی Dependency Injection با استفاده از کتابخانه ی Ninject برروی یک پروژه ی نسبتا بزرگ MVC بسیار کارامد خواهد بود.
به هرحال هر کدوم از این الگوها مزایای مربوط به خودش رو خواهد داشت. استفاده از الگوی اشاره شده به مراتب بیشتر از الگوهای دیگر در برنامه هایی که محوریت بیشتر آن برروی استفاده و تحلیل داده ها در بانک های اطلاعاتی هست می باشد، و استفاده از Ninject هم که مزایای خودش رو به این پروژه اضافه خواهد کرد.

بخش مهم اعتبارسنجی داده ها قبل از افزوده شدن به منبع ذخیره سازی نهایی مورد توجه است، در کلاس های Metadata که از طریق Attribute ها یا DataAnnotations اعتبار سنجی های اولیه صورت میگیرد زمانی نیاز به پیاده سازی یک اعتبارسنجی سفارشی و استفاده از Repository و استخراج داده های مورد نیاز به عنوان بخشی از این اعتبارسنجی می باشد. که متاسفانه عملیات ایجاد نمونه ی جدید کلاس Repository از طریق Field Injection یا هر نوع دیگری از Injection صورت نمی گیرد و با خطای null reference exception مواجه خواهید شد.

برای روشن کردن توضیحاتم یه مثال بزنم:
سناریویی رو در نظر بگیرید که در اون مشتری میخواد یک محصول رو خریداری کنه، اما باید بررسی بشه که اگر در لحظه ی خرید، تعداد محصول برابر با 0 هست پیغام خطای مناسب نمایش داده شود.
بنابراین ما یک کلاس Customer و یک کلاس Product که مربوط به اعتبارسنجی می باشد به شکل زیر خواهیم داشت،

بیشتر...