معماری میانافزارها
توضیحات
در جلسه دوازدهم درس سیستمعامل پیشرفته دکتر حقیقت که از مهمترین دروس تخصصی آزمون دکترای مهندسی کامپیوتر در گرایش نرمافزار و گرایش شبکه و رایانش است، ادامه فصل دوم این درس با عنوان «معماری» ارائه میشود. در این جلسه معماری میانافزارها مورد بحث و بررسی قرار میگیرند. میانافزار لايهای میان برنامههای کاربردی و بسترهای توزيعشده است و يکی از اهداف مهم آن، فراهم سازی درجهای از شفافیت توزيع است که به اندازه کافی توزيع دادهها، فرايندها و کنترل را از برنامه کاربردی پنهان نمايد. معمولاً سیستمهای میانافزار، هر کدام از يک سبک معماری خاصی پیروی میکنند. برای مثال بسیاری از راهحلهای میانافزاری مانند CORBA، سبک معماری مبتنی بر شئ را پذيرفتهاند يا مثلاً TIB/Rendezvous میانافزاری را ارائه ميدهند که از سبک معماری مبتنی بر رويداد تبعیت میکند. داشتن میانافزاری که بر اساس يک سبک معماری خاصي شکل گرفته است دارای اين مزيت است که طراحی برنامههای کاربردی را سادهتر میسازد. با اين وجود، نقطه ضعف آشکارش نیز اين است که میانافزار ممکن است ديگر برای آنچه سازنده برنامه کاربردی در ذهن خويش دارد، بهینه نباشد. حال مسئله اين است که چه کنیم که ضمن حفظ وحدت رويه و سبک واحد معماری نرمافزاری در میانافزار، نیازهای برنامه کاربردی را هم در نظر بگیريم و با نیازهای متنوع آنها نیز منطبق باشیم. روشی که معمولاً بهتر به نظر میرسد اين است که سیستمهای میانافزار را طوری بسازيم که پیکربندی (Configuration)، وفقپذيری (Adoptability) و سفارشی کردن (customize)برای يک برنامه کاربردی، در هنگام لزوم آسان باشد. به عنوان اولین راهبرد، راهبند (Interceptor) شرح داده میشود که يک سازه نرمافزاری است که جريان عادی کنترل را قطع میکند و يک کد ديگر را که خاص آن کاربرد است (و با استايل معماری منتخب همخوانی ندارد) در خارج از روال عادی انجام میدهد و دوباره کنترل به روال عادی بر میگردد. راهبندها در دو سطح پیادهسازی میشوند: 1) راهبند سطح درخواست (Request Level Interceptor) و 2) راهبند سطح پیام (Message Level Interceptor). پس از شرح این دو نوع راهبند، در ادامه سه راهکار عمومی برای وفقپذيری نرمافزار ارائه میشود. McKinley و همکاران (2004)سه تکنیک اساسی را برای وفقپذيری نرمافزار مطرح کردند: 1) تفکیک وظائف (Separation of concerns) 2) انعکاس محاسباتی (Computational reflection) 3) طراحی مبتنی بر مؤلفه (Component-based design). این سه روش به تفصیل مورد بحث و بررسی قرار داده میشوند. در انتها یک بحث مفصل فلسفی در مورد مفهوم عمیق سادگی، وحدت و جاودانگی در سیستمهای توزيع شده ارائه میشود و مفاهیم مهمی همچون Self Similarity و Fractal Components و مفهوم تکرار یک چیز ساده به تفصیل مورد بحث قرار میگیرد.