0

مقايسه ويژگي‌هاي بسترهاي برنامه‌نويسي و چگونگي انتخاب آنها

 
samsam
samsam
کاربر طلایی1
تاریخ عضویت : بهمن 1387 
تعداد پست ها : 50672
محل سکونت : یزد

مقايسه ويژگي‌هاي بسترهاي برنامه‌نويسي و چگونگي انتخاب آنها
چهارشنبه 5 خرداد 1389  10:18 AM

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

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

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

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

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

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

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

منابع

http://ianbicking.org

http://mixu.net

اميربهاالدين سبط‌الشيخ

چهار راه برای رسیدن به آرامش:
1.نگاه کردن به عقب و تشکر از خدا  2.نگاه کردن به جلو و اعتماد به خدا  3.نگاه کردن به اطراف و خدمت به خدا  4.نگاه کردن به درون و پیدا کردن خدا

پل ارتباطی : samsamdragon@gmail.com

تالارهای تحت مدیریت :

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

 

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