اصل تنزل مطبوع Graceful Degradation

اصل تنزل مطبوع Graceful Degradation

اصل تنزل مطبوع یا همان Graceful Degradation   به تواناهی های یک سیستم اعم از یک کامپیوتر، نرم افزار، ماشین، شبکه، یا هر وسیله الکترونیکی دیگری گفته میشود که بتواند در صورت از کار افتادن بخشی از آن، سایر قسمت ها بتوانند به عملکرد خود ادامه دهند ئ کارایی خود را حفظ نمایند.
هدف از تنزل مطبوع جلوگیری از بروز مشکلات بزرگی است که در صورت کار نکردن قسمتی از سیستم ممکن است رخ بدهد. تصور کنید که در یک سیستم تهویه هوا در یک برج مسکونی بزرگ، دماسنی وجود دارد که بر اساس دما هوا شدن تهویه هوا در سیستم تعیین میکند. اگر درصورت از کار افتادن دماسنج سیستم، کل سیستم متوقف شود قطعا فاجعه رخ میدهد. با درنظر گرفتن اصل تنزل مطبوع میتوان راهکاری پیشبینی شود که در صورت از کار افتادن دماسنج، تهویه میانگین 24 ساعت قبل را برای تهویه هوا در نظر بگیرد.
درواقع سیستمی که اصل تنزل مطبوع را رعایت میکند در صورت از کار افتادن یک یا چند قسمت از آن باز هم بطور کامل متوقف نمیشود بلکه باکاهش بازدهی و عملکردو یا سرعت روبرو میشود ولی همچنان وظیفه اصلی خود را انجام میدهدو
پیاده سازی اصل تنزل مطبوع در برنامه نویسی بسیار حائز اهمیت است. یک مثال ساده در برنامه نویسی میتواند استفاده از درخواست های AJAX در برنامه باشد. فرض کنید پروژه ای در ASP.Net MVC داریم که شامل View ای است که امکان جستجوی اشخاص با استفاده از درخواست های AJAX در آن وجود دارد و صفحه بدون اینکه PostBack شود بروز میشود. چیزی مانند کد زیر:

@model string
@{
AjaxOptions AjaxOpts=new AjaxOptions{
    UpdateTargetId="tabledata",

Url=Url.Action("GetData")

    };
}
@using(Ajax.BeginForm("ListData",AjaxOpts)){
<table>
  <thead>
    <th>Client Name</th>
    <td>dates</th>
  </thead>
<tbody id="tabledata">
    @Html.Action("ListData",new {id=Model})
</tbody>
</table>
<p>
    @Html.DropDownList("id",new SelectList(
    new[]{"All","web","Windows"},(Model??"All")))
<input typr="submit" value="Submit"/>
</p>
}
 

 

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

@model string
@{
AjaxOptions AjaxOpts=new AjaxOptions{
    UpdateTargetId="tabledata",
    Url=Url.Action("ListData")
    };
}
@using(Ajax.BeginForm(AjaxOpts)){
<table>
  <thead>
    <th>Client Name</th>
    <td>dates</th>
  </thead>
<tbody id="tabledata">
    @Html.Action("ListData",new {id=Model})
</tbody>
</table>
<p>
    @Html.DropDownList("id",new SelectList(
    new[]{"All","web","Windows"},(Model??"All")))
<input typr="submit" value="Submit"/>
</p>
}

  با این کار اگر مرورگر قادر به استفاده جاوااسکریپت باشدآدرسی که بوسیله خصیصه AjaxOption.Url تعیین شده برای نمایش اطلاعات استفاده میکند در این حالت کدهای HTML  تولید شده جایگزین ردیف های جدول میشوند. اگر مرورگر از JavaScript پشتیبانی نکند درخواست بصورت POST ارسال میشود و صفحه کاملا بازیابی میشود

مرتضی جنگجو

برنامه نویس fullstack با بیش از 14 سال سابقه در توسعه و پیاده سازی نرم افزارهای تحت وب با تکنولوژی Net.

شبکه های اجتماعی نویسنده

دیدگاه کاربران