تبلیغات
امپراطوری آی تی - رخت نو یا وصله پینه؟ مقایسه ویژگی‌های بسترهای برنامه‌نویسی و چگونگی انتخاب آنها

امپراطوری آی تی

یکی از معماری‌های مهم برنامه‌نویسی مدرن، استفاده از معماری MVC است. البته پرسش اصلی نباید این باشد که آیا باید از MVC استفاده کنیم یا نه؟ بلکه سوال این است که از کدام بستر (Framework) باید بهره جست. به‌طور کلی بسترها به دو دسته پشته کامل (Full-stack) و چسبی (Glue) تقسیم می‌شوند.

?- بسترهای چسبی مجموعه‌ای از مولفه‌ها و کتابخانه‌ها هستند که می‌توان در یک برنامه از آن‌ها استفاده کرد. بیشتر قابلیت‌های این بسترها انتخابی است و تصمیم‌گیری برای استفاده و محل استفاده از آن‌ها بستگی به ساختار برنامه و همچنین نظر برنامه‌نویس دارد.

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

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

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

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

بنابراین سوال کلیدی که باید هنگام انتخاب یک فریم‌ورک پرسید این است که چه‌جور پیچدگی یا مساله‌ای در برنامه وجود دارد؟

اگر بستری یافته شود که بتواند ??درصد از نیازهای یک برنامه را فراهم کند، در این صورت می‌توان از آن بستر استفاده کرد.

برای این که یک بستر مناسب انتخاب کنید، باید سوالات زیر را از خود بپرسید:‌

?- نمایش پیچیده: مهم‌ترین کاربرد سیستم در چیست؟ اطمینان حاصل کنید که قابلیت‌های فنی بستری که قرار است برای پروژه استفاده کنید را آزموده باشید تا دست کم به‌دلیل انجام نشدن بخشی از پروژه مشتری ناراضی نباشد. هدف استفاده از بسترها، ساده‌تر کردن کار کاربر است و انتخاب بستر در این مرحله برای کاربر ارزشی ندارد.

?- ساختار داده‌ای پیچیده: چه ساختارهای داده‌ای باید در پروژه تغییر کنند؟ اگر ممکن است معماری را انتخاب کنید که بتوانید با هزینه پایین آن را پیاده کنید. حتی اگر این انتخاب باعث شود یک بستر دیگر با قابلیت‌های بیشتر را نادیده بگیرید.

?- منطق شغلی پیچیده: مفاهیم و فرآیندهای کلیدی کدامند و چطور باید تغییر کنند؟ این که بتوانید یک استثناء برای یک قانون ایجاد کنید، می‌تواند ساده یا دشوار باشد، بنابراین انتخاب سادگی یکی دیگر از دغدغه‌های انتخاب بستر است.

?- یکپارچه‌سازی پیچیده: هدف از اتصال فناوری‌های مختلف چیست و چطور باید پشتیبانی شوند؟ در حالت ایده‌آل می‌توان از کدهای از پیش نوشته شده بستر برای یکپارچه سازی استفاده کرد.

?- بازدهی سختگیرانه: قرار است روزانه چه میزان باری روی سیستم باشد؟ انتخاب مکانیزم یافتن گلوگاه‌های سیستم و بهبود بازدهی آن بخش از مهم‌ترین سوالاتی است که هنگام انتخاب یک بستر باید پرسیده شود.

?- بزرگ‌شدن: سیستم با چه نرخی بزرگ می‌شود؟ آیا قابلیت افزودن حافظه به سیستم وجود دارد؟

?- الزام به تحویل به‌موقع: حداقل قابلیت‌های نرم‌افزار چیست؟ این بستر تا چه حد با تحویل و پیاده‌سازی سریع آشنا است؟ این بستر به چه چیزهایی وابسته است؟

منابع

http://ianbicking.org

http://mixu.net

نظرات() 
How do you treat Achilles tendonitis?
دوشنبه 27 شهریور 1396 02:51 ق.ظ
Thank you for any other informative web site.
The place else could I am getting that kind of info written in such an ideal
means? I've a undertaking that I'm just now operating on, and I've been on the look out for such information.
Can you get taller with yoga?
چهارشنبه 1 شهریور 1396 01:35 ب.ظ
Hi! I realize this is somewhat off-topic however I needed to ask.
Does managing a well-established blog like yours require
a massive amount work? I'm completely new to writing a blog but
I do write in my journal everyday. I'd like to start a blog so I
will be able to share my experience and thoughts online. Please let me
know if you have any kind of suggestions or tips for brand new aspiring blog owners.
Appreciate it!
BHW
جمعه 25 فروردین 1396 09:19 ق.ظ
Write more, thats all I have to say. Literally, it seems
as though you relied on the video to make your point. You clearly know
what youre talking about, why waste your intelligence on just posting videos
to your blog when you could be giving us something informative
to read?
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر

لینکدونی

نویسندگان

  • آخرین پستها

آمار وبلاگ

  • کل بازدید :
  • بازدید امروز :
  • بازدید دیروز :
  • بازدید این ماه :
  • بازدید ماه قبل :
  • تعداد نویسندگان :
  • تعداد کل پست ها :
  • آخرین بازدید :
  • آخرین بروز رسانی :