با توجه به موضوع این مقاله اجازه دهید بر روی ویژگی دوم متمرکز شده و با آن بیشتر آشنا شویم .
واژه "سرویس گیرنده - سرویس دهنده " نشاندهنده این واقعیت است که از شبکه های مبتنی بر سرویس دهندگان به منظور مدیریت اشتراک منابع استفاده می گردد . برای توزیع پردازش از پتانسیل های سخت افزاری و نرم افزاری سرویس دهندگان و سرویس گیرندگان استفاده می گردد و هر یک دارای سهمی در کل پردازش می باشند ( گرچه در توزیع سهم پردازش ، عدالت به درستی رعایت نشده باشد ) .
با توجه به رویکرد فوق، پیاده کنندگان برنامه های وب می توانند به منظور تامین خواسته های یک برنامه از پتانسیل های پردازش سمت سرویس دهنده و یا سمت سرویس گیرنده استفاده نمایند . برای تحقق پردازش های سمت سرویس دهنده و سرویس گیرنده از فن آوری های متعددی استفاده می گردد .
ASP.NET ، یک فن آوری سمت سرویس دهنده است و نمی تواند مستقیما" با مرورگر تعامل و یا ارتباط داشته باشد .به عنوان نمونه ، در ASP.NET مکانیزمی وجود ندارد که بتوان با استفاده از آن داده تایپ شده از طریق صفحه کلید توسط کاربر در برنامه مرورگر را دریافت ، به رویدادهای موس پاسخ و عملیاتی را انجام داد که مستلزم تعامل مستقیم با کاربر می باشند . ASP.NET صرفا" می تواند نتایج اینچنین تعاملاتی را پس از ارسال صفحه مشاهده و از آنان استفاده نماید و قادر به پاسخگوئی مستقیم به رویدادهای ایجاد شده در سطح مرورگر نمی باشد .
به منظور برخورد و مدیریت تعامل با مرورگر و رویدادهای محقق شده در آن سطح ، بهترین گزینه استفاده از اسکریپت های سمت سرویس گیرنده است که توسط یکی از زبان های اسکریپت نویسی نظیر جاوااسکریپت نوشته می گردند . اسکریپت های سمت سرویس گیرنده در مرورگر اجراء شده و می توانند بلافاصله نسبت به عملیات انجام شده توسط کاربر از خود واکنش نشان دهند . مثلا" با استفاده از اسکریپت های سمت سرویس گیرنده می توان یک افکت rollover را ایجاد و یا واکنش مناسبی را در زمان حرکت موس بر روی یک button و یا یک آیتم خاص موجود در منو انجام داد .
اسکریپت های سمت سرویس گیرنده توان عملیاتی پیاده کنندگان را به منظور برخورد با رویدادهائی که در سطح لایه رابط کاربر محقق می شوند و لازم است که بلافاصله به آنان پاسخ داده شود ، افزایش می دهد .
کنترل های سرویس دهنده ASP.NET و اسکریپت های سمت سرویس گیرنده
تعدادی از کنترل های سرویس دهنده ASP.NET به منظور انجام وظایف از قبل تعریف شده خود نیازمند استفاده از اسکریپت های سمت سرویس گیرنده می باشند . به عنوان نمونه کنترل LinkButton برای انجام فرآیند Postback نیازمند استفاده از اسکریپت های سمت سرویس گیرنده است . کد زیرنحوه استفاده ازکنترل LinkButton را نشان می دهد . ( پس از کلیک بر روی آن یک متن در کنترل label نمایش داده می شود) .
<%@ Page Language="VB" AutoEventWireup="True" %> |
تحقق برخی از پتانسیل و قابلیت های صفحات ASP.NET نیز در ارتباط با اسکریپت های سمت سرویس گیرنده است و لازم است با نحوه استفاده کنترل های سرویس دهنده ASP.NET از اسکریپت های سمت سرویس گیرنده آشنا شویم چراکه از این طریق برداشت ما از نحوه تاثیر اسکریپت های سمت سرویس گیرنده بر روی صفحات وب ASP.NET شکل واقعی و منطقی خود را پیدا خواهد کرد .
اسکریپت های سمت سرویس گیرنده مورد نیاز کنترل های سرویس دهنده ASP.NET به صورت اتوماتیک به صفحه اضافه می گردند. توجه داشته باشید که اسکریپت سمت سرویس گیرنده که به صورت اتوماتیک برای کنترل های سرویس دهنده ایجاد می گردد ، مستقل از سایر اسکریپت های سمت سرویس گیرنده ای است که توسط پیاده کنندگان نوشته می گردد .
عناصر زیر از اسکریپت های سمت سرویس گیرنده استفاده می نمایند ( کنترل و یا برخی خصلت های مرتبط با یک کنترل) :
کنترل های Page .HtmlForm و Panel : خصلت های DefaultFocus ، DefaultButton و MaintainScrollPositionOnPostback نیازمند استفاده از اسکریپت های سمت سرویس گیرنده می باشند .
کنترل های LinkButton, ImageButton و HtmlButton از اسکریت های سمت سرویس گیرنده به منظور حمایت از رویداد Postback استفاده می نمایند. توجه داشته باشید که کنترل های Button Web server control، HtmlInputButton و HtmlInputImage به اسکریت های سمت سرویس گیرنده نیاز ندارند .
Calendar : کنترل فوق از کنترل LinkButton به منظور پیاده سازی حرکت در بین روز ، هفته و ماه استفاده می نماید . کنترل LinkButton از اسکریپت های سمت سرویس گیرنده برای رویداد postback استفاده می نماید . در صورتی که از کنترل calendar صرفا" به منظور نمایش یک ماه بدون امکان انتخاب و یا حرکت استفاده می گردد ، کنترل فوق نیازی به استفاده از اسکریت هآی سمت سرویس گیرنده ندارد .
DetailsView : در صورتی که کنترل شامل دکمه هائی باشد که به عنوان کنترل های LinkButton پیکربندی شده باشند ( برای ویرایش ، paging و ...)، به منظور انجام عملیات فوق از اسکریپت های سمت سرویس گیرنده استفاده می گردد . در صورتی که خصلت EnablePagingCallbacks فعال و مقدار آن True باشد ، از اسکریپت های سمت سرویس گیرنده به منظور مدیریت callback استفاده می گردد .
GridView : در صورتی که کنترل شامل دکمه هائی است که به عنوان کنترل های LinkButton پیکربندی شده باشند ( برای ویرایش ، paging و ...) ، به منظور انجام عملیات فوق از اسکریپت های سمت سرویس گیرنده استفاده می گردد . از اسکریپت های سمت سرویس گیرنده به منظور مرتب سازی و paging استفاده می گردد (در صورت حمایت کنترل منبع داده مرتبط با آن ). در صورتی که خصلت EnablePagingCallbacks فعال و مقدار آن True باشد ، از اسکریپت های سمت سرویس گیرنده به منظور مدیریت callback استفاده می گردد .
Label : خصلت AssociatedControlID به همراه خصلت AccessKey اسکریپت های سمت سرویس دهنده ای را در پاسخ به keyboard shortcut تولید می نمایند. در صورتی که خصلت های فوق مقداردهی نشده باشند ، کنترل Label نیازی به استفاده از اسکریپت های سمت سرویس گیرنده ندارد .
Menu: از اسکریپت های سمت سرویس گیرنده برای باز وبستن آیتم های منو ، نمایش پانل های pop-out و کنترل نمایش زمانی که کاربر اشاره گر موس را بر روی آیتم های موجود در منو قرار می دهد ، استفاده می گردد .
TreeView ، از اسکریپت های سمت سرویس گیرنده به منظور باز و بستن گره ها استفاده می نماید .
هر نوع کنترل سرویس دهنده ای که خصلت PostBack آن true باشد : رفتار خصلت AutoPostBack برای کنترل های غیر button با استفاده از اسکریپت های سمت سرویس گیرنده پیاده سازی می گردد .
کنترل های Web Part از اسکریپت های سمت سرویس گیرنده به منظور حمایت از Drag-and-drop ، افزودن کنترل های Web part به Zones و Verbs و صدور و یا ورود توانمندی ها استفاده می گردد .
کنترل های Validator ( شامل CompareValidator، CustomValidator ، RangeValidator ، RegularExpressionValidator ، RequiredFieldValidator ) ، از اسکریت های سمت سرویس گیرنده به منظور ارائه پاسخ فوری پس از بررسی اعتبار داده استفاده می نمایند. در صورتی که سرویس گیرنده از اسکریپت حمایت نمی نماید ، validation صرفا" بر روی سرویس دهنده اجراء خواهد شد .
هر متد و یا خصلتی که بر روی کنترل ها focus می نماید ، نظیر متد Focus بر روی کنترل ها و متد SetFocus صفحه : از اسکریپت های سمت سرویس گیرنده به منظور تنظیم focus بر روی کنترل مورد نظر استفاده می گردد .
اسکریت های سمت سرویس گیرنده مورد نیاز برای هر یک از کنترل ها و اعضاء به صورت اتوماتیک تولید و به همراه صفحه ارسال می گردد .
در برخی موارد ممکن است کاربران امکان استفاده از اسکریپت را در مرورگر خود غیرفعال نمایند ( اقدامی در جهت افزایش ایمنی سیستم ) . در صورت انجام این کار ، نمی توان از پتانسیل های ارائه شده توسط اسکریپت های سمت سرویس گیرنده استفاده نمود و بدیهی است که برخی کنترل ها نظیر کنترل LinkButton ، بطور کامل از کار بیافتد و یا قابلیت های خصلت AutoPostBack غیرفعال گردد . برخی کنترل ها از وضعیت فوق کمتر متاثر شده و در شرایط خاصی می توانند عملیات خود را انجام دهند . مثلا" کنترل های Validation می توانند در صورت بروز مشکل در خصوص اجرای اسکریپت های سمت سرویس گیرنده ، آنان را سمت سرویس دهنده اجراء نمایند ( با این تفاوت که به دلیل اجرای آنان بر روی سرویس دهنده به کاربر سریعا" پاسخ داده نمی شود ) .
استفاده از اسکریپت های سمت سرویس گیرنده توسط پیاده کننده در صفحات ASP.NET
با توجه به این که رفتار صفحات ASP.NET در برخی موارد مشابه صفحات HTML است ، می توان اسکریپت های سمت سرویس گیرنده خود را به صفحات ASP.NET اضافه نمود . در صفحات ASP.NET از اسکریپت های سمت سرویس گیرنده به منظور پاسخ به رویدادهای محقق شده در سطح لایه رابط کاربر، حمایت می گردد . استفاده از اسکریپت های سمت سرویس گیرنده در یک صفحه ASP.NET همانند سایر صفحات HTML است . با افزودن یک بلاک script به صفحه امکان نوشتن اسکریپت های سمت سرویس گیرنده فراهم می گردد . پیاده کنندگان می توانند از اسکریپت های سمت سرویس گیرنده به منظور نوشتن event handler به منظور پاسخ به رویدادهای محقق شده در سمت سرویس گیرنده نظیر رویداد onload صفحه نیز استفاده نمایند . زمانی که یک صفحه ASP.NET در مرورگر اجراء می گردد ، با استفاده از اسکریپت های سمت سرویس گیرنده می توان عناصر موجود بر روی صفحه را آدرس دهی و متناسب با رویداد محقق شده ، مدیریت آنان را در سمت سرویس گیرنده برعهده گرفت .
استفاده از اسکریپت های سمت سرویس گیرنده در صفحات ASP.NET نسبت به صفحات HTML در برخی موارد متفاوت است :
اضافه کردن event handler سمت سرویس گیرنده به کنترل های سرویس دهنده ASP.NET
مراجعه به کنترل های سرویس دهنده از طریق اسکریپت های سمت سرویس گیرنده
افزودن اسکریپت های سمت سرویس گیرنده به صفحه به صورت پویا
ایجاد رویداد کلیک سمت سرویس گیرنده برای کنترل های سرویس دهنده
اشتراک اطلاعات بین اسکریپت های سمت سرویس گیرنده و کدهای سمت سرویس دهنده
فراخوانی کدهای سمت سرویس دهنده از طریق اسکریپت های سمت سرویس گیرنده بدون نیاز به postback
در بخش دوم به بررسی هر یک از موارد فوق خواهیم پرداخت .