يكي از ويژگي هاي مهم برنامه هاي وب ، تبعيت آنان از معماري "سرويس گيرنده - سرويس دهنده" است . اين بدان معني است كه پياده كنندگان برنامه هاي وب مي توانند به منظور تحقق پردازش هاي سمت سرويس دهنده و سرويس گيرنده از فن آوري هاي متعددي استفاده نمايند. يكي از نكات مهم در خصوص انجام پردازش هاي سمت سرويس گيرنده ، ميزان وابستگي آنان به اطلاعات موجود در سمت سرويس دهنده است . به عبارت ديگر ، اجراي يك event handler در سرويس گيرنده تا چه ميزان وابسته به كد سمت سرويس دهنده است و به منظور انجام آن چه ميزان داده مي بايست بين سرويس گيرنده و سرويس دهنده مبادله گردد ؟
صرفنظر از اين كه به سوال فوق چه پاسخي داده مي شود ، واقعيت اين است كه به منظور مديريت رويدادهاي محقق شده در سمت سرويس گيرنده ، مي بايست ملزومات مورد نياز ايجاد تا پياده كنندگان بتوانند با استفاده از آنان پردازش هاي سمت سرويس گيرنده را مديريت نمايند .
پردازش هاي سمت سرويس گيرنده از گذشته تاكنون
با توجه به اين كه پردازش هاي سمت سرويس گيرنده در برنامه هاي وب مي بايست مستقل از نوع پلت فرم باشند ، بديهي است كه تمامي تلاش هاي انجام شده در اين عرصه ، مي بايست متمركز بر روي برنامه هاي مرورگر باشد تا با ايجاد پتانسيل هائي در آنها ، امكان انجام پردازش هاي سمت سرويس گيرنده فراهم گردد . ظهور زبان هاي اسكريپت نويسي نظير جاوااسكريپت و تجهيز مرورگرها به برنامه هاي مفسر مربوطه از جمله اقدامات عملي دراين عرصه است . استفاده از زبان جاوااسكريپت به منظور كدينگ پردازش هاي سمت سرويس گيرنده داراي قدمتي چندين ساله است . در ادامه ، قابليت هاي جديدي به مرورگرها اضافه گرديد تا پياده كنندگان بتوانند به كمك آنان برنامه هاي وب سمت سرويس گيرنده را ايجاد نمايند . هم اينك ، تمامي مرورگرهاي متداول از يك مدل شي گراء موسوم به DOM ( برگرفته از document object model ) استفاده مي نمايند و تعداد اندكي از آنها از يك ويژگي جديد با نام XMLHTTP استفاده مي نمايند كه به كمك آن ، سرويس گيرندگان و سرويس دهندگان مي توانند بدون نياز به انجام يك postback كامل و round trip با يكديگر و به صورت مستقيم ارتباط برقرار نمايند.
XMLHTTP ، شامل مجموعه اي API ( رابط برنامه نويسي ) است كه امكان ارسال و يا دريافت داده به صورت باينري ، HTML و XML را از سرويس دهندگان وب بر روي اينترنت و به كمك پروتكل HTTP فراهم مي نمايد . در مواردي كه نياز به داده موجود در سمت سرويس دهنده مي باشد ، XMLHTTP به صورت پيوسته اقدام به ارسال درخواست خود براي سرويس دهنده مي نمايد تا آخرين اطلاعات را بدون نياز به refresh كردن مدام مرورگرها ، بازيابي نمايد . در واقع ، به كمك فن آوري فوق ، سرويس گيرندگان قادر به مبادله غيرهمزمان با سرويس دهنده بوده و مي توانند اقدام به ارسال و يا دريافت داده XML بدون نياز به انجام يك round trip كامل كه باعث توليد مجدد يك صفحه مي گردد ، نمايند .
ماحصل اين تحولات ، ظهور نسل جديدي از برنامه هاي وب نظير Microsoft Virtual Earth و Microsoft Windows Live است . ايجاد چنين برنامه هاي وبي كار ساده اي نخواهد بود و پياده كنندگان مي بايست شناخت مناسبي نسبت به جاوااسكريپت و مدل DOM داشته باشند كه ممكن است در هر مرورگر متفاوت باشد . علاوه بر اين ، جاوااسكريپت تمامي ويژگي هاي يك زبان شي گراء را ارائه نمي نمايد و بسياري از ملزومات مورد نياز پياده كنندگان برنامه هاي وب در فريمورك دات نت را تامين نمي نمايد ( نظير type-safe ) .
ايجاد برنامه هاي وب با تاكيد بر انجام پردازش سمت سرويس گيرنده ، نيازمند ملزوماتي نظير
يك زبان برنامه نويسي و پلت فرم پياده سازي جديد است .
AJAX ( برگرفته از asynchronous JavaScript and XML )
پياده سازي برنامه هاي وب با استفاده از فن آوري هاي اشاره شده ( اسكريپت نويسي سمت سرويس گيرنده و مبادله غيرهمزمان با سرويس دهنده ) ، AJAX ناميده مي شود . AJAX ، پياده كنندگان را قادر به توليد صفحاتي مي نمايد كه از توان پاسخگوئي بسيار مطلوبي در سمت سرويس گيرنده متناسب با رويداد ايجاده شده ، برخوردار مي باشند . چراكه آنها از اسكريپت هاي سمت سرويس دهنده براي دستيابي و مديريت عناصر بخش رابط كاربر استفاده مي نمايند . علاوه بر اين ، با توجه به مبادله غيرهمزمان داده به منظور ارسال و دريافت داده ، امكان انجام عمليات مورد نظر بر روي داده بدون وقفه و ازدست دادن state وجود خواهد داشت . Microsoft Virtual Earth و برنامه سرويس گيرنده نامه هاي الكترونيكي Outlook Web Access ، دو نمونه از برنامه هاي سبك AJAX ، مي باشند .
Atlas : تلاشي در جهت ايجاد يك پلت فرم پياده سازي جامع
فن آوري جديد ASP.NET با نام Atlas ، مجموعه اي از فن آوري هاي مايكروسافت را شامل مي شود كه با تمركز بر روي اصول AJAX ، سعي در توسعه و بهبود آن را دارد .
Atlas ، يك فن آوري جديد در عرصه پياده سازي برنامه هاي وب ASP.NET است كه كتابخانه هاي اسكريپت سرويس گيرنده را با فريمورك پياده سازي مبتني بر سرويس دهنده ASP.NET 2.0 تركيب مي نمايد . در واقع ، Atlas به پياده كنندگان برنامه هاي وب يك پلت فرم مناسب به منظور پياده سازي صفحات وب مبتني بر سرويس گيرنده را ارائه مي نمايد كه قبلا" مشابه آن در خصوص صفحات وب مبتني بر سرويس دهنده توسط ASP.NET ارائه شده بود . با توجه به اين كه Atlas ، به عنوان يك پتانسيل اضافه در كنار ASP.NET مطرح مي باشد ، بديهي است كه كاملا" سازگار با سرويس هاي مبتني بر سرويس دهنده باشد . با استفاده از Atlas ، مي توان بخش قابل توجهي از پردازش هاي مورد نياز يك برنامه را به سمت سرويس گيرنده انتقال داد ( fat-client ) . در چنين مواردي ، امكان ارتباط سرويس گيرنده با سرويس دهنده در background فراهم مي گردد. ماحصل اين فن آوري ، ايجاد برنامه هاي وبي است كه علاوه بر ارائه امكانات مناسب در لايه رابط كاربر ( UI ) ، داراي توان پاسخگوئي بالائي مي باشند و به سادگي مي توانند با سرويس دهنده ارتباط برقرار نمايند .
مفاهيم فني اوليه AJAX
در AJAX ، پياده كنندگان مي توانند سرويس هاي وب را بطور غيرهمزمان و از طريق اسكريپت هاي سمت سرويس گيرنده و با استفاده از شي XMLHTTPRequest فراخوانده تا اطلاعات به عنوان داده XML بسته بندي و در ادامه آنها را بر روي شبكه ارسال نمايند . بدين منظور شي XMLHTTPRequest يك شي پراكسي را ارائه مي نمايد تا به كمك آن امكان فراخواني از راه دور و مبادله داده فراهم گردد . در فن آوري AJAX از زبان هاي اسكرپيت سمت سرويس گيرنده نظير جاوااسكريپت بطرز گسترده اي استفاده مي گردد . از جاوااسكريپت در مواردي نظير فراخواني از راه دور روتين ها ، انجام پردازش هاي مورد نياز يك برنامه در سمت سرويس گيرنده و ايجاد ويژگي هاي پيشرفته اي در سطح لايه رابط كاربر استفاده مي شود .
AJAX علاوه بر جاوااسكريپت از چندين فن آوري ديگر در سمت سرويس گيرنده نيز استفاده مي نمايد :
• DOM : به كمك فن آوري فوق ، عناصر موجود در يك صفحه HTML به عنوان مجموعه اي از اشياء استاندارد ( نظير document و windows ) در نظر گرفته مي شوند . بدين ترتيب ، امكان دستيابي و انجام عمليات دلخواه بر روي آنان از طريق كد فراهم مي گردد .
• DHTML ( برگرفته از Dynamic HTML ) : فن آوري فوق ، توانمندي HTML را به منظور واكنش مناسب در خصوص عملياتي كه توسط كاربران انجام مي شود ( نظير درج داده ) با استفاده از اسكريپت هاي سمت سرويس گيرنده و بدون نياز به يك round trip افزايش مي دهد .
• رفتارها ، شامل روشي مناسب به منظور برخورد سيستماتيك با عملياتي نظير drag and drop در سطح لايه رابط كاربر و مرتبط با عناصر موجود بر روي يك صفحه مي باشد .
• عناصر : اشياء سفارشي شده جاوااسكريپت مي باشند كه پتانسيل هاي توسعه يافته اي را در سمت سرويس گيرنده ايجاد مي نمايند .
چالش هاي فن آوري AJAX
برنامه نويسي صفحات به سبك AJAX داراي چالش هاي متعددي است :
• عناصر موجود در صفحات وب مي بايست متناسب با شرايط هر مرورگر برنامه نويسي گردند ، چراكه هر مرورگر يك نسخه متفاوت از DOM و DHTML را ارائه مي نمايند(هر چند اين تفاوت ها اندك باشد) .
• برنامه نويسي سمت سرويس گيرنده صرفا" با استفاده از جاوااسكريپت انجام مي شود . پياده سازي برخي از پتانسيل هاي AJAX مي تواند براي پياده كنندگان بسيار پيچيده باشد و نيازمند دانش بالائي در خصوص استفاده از جاوااسكريت است .
• جاوا اسكريپت ، ويژگي ها و امكانات مورد نياز پياده كنندگان برنامه هاي دات نت را تامين نمي نمايد ( نظير يك رويكرد شي گراء كامل ) . علاوه بر اين ، در اين فن آوري از كتابخانه اي نظير آنچه در پلت فرم دات نت ارائه شده است ، استفاده نمي گردد و برنامه نويسان مي بايست تمامي برنامه را از ابتدا كد نمايند .
• جاوااسكريپت و پياده سازي سمت سرويس گيرنده ، عموما" بخوبي در IDEs حمايت نمي گردند .
فن آوري Atlas ، مسائل اشاره شده را با ارائه يك فريمورك كامل براي ايجاد برنامه هاي وب مبتني بر سرويس گيرنده برطرف مي نمايد.
فن آوري Atlas ، داراي عناصر سرويس گيرنده و سرويس دهنده اي است كه آن را به خوبي با ASP.NET يكپارچه و مرتبط مي نمايد
مفاهيم فني اوليه معماري Atlas
در ساده ترين حالت ، يك برنامه Atlas ، از كتابخانه هاي سمت سرويس گيرنده به منظور مديريت رابط كاربر و فراخواني عناصر مبتني بر سرويس دهنده استفاده مي نمايد . Atlas ، همچنين عناصر سمت سرويس دهنده اي را ارائه مي نمايد كه با سرويس گيرنده مرتبط و مي توانند اسكريپت سمت سرويس گيرنده از قبل تعريف شده اي را توليد نمايند .
عناصر سمت سرويس گيرنده Atlas
فن آوري Atlas براي پياده سازي برنامه هاي سمت سرويس گيرنده ، از مجموعه اي كتابخانه سمت سرويس گيرنده ( فايل هائي با انشعاب Js . ) استفاده مي نمايد كه پيامد آن تعريف يك رويكرد لايه اي براي ايجاد برنامه هاي مبتني بر سرويس گيرنده است . اين لايه ها عبارتند از :
• لايه مختص مرورگرها : با استفاده از پتانسيل هاي ارائه شده توسط اين لايه ، اسكريپت هاي Atlas در اكثر مرورگر سازگار بوده و ضرورتي به نوشتن اسكريت هاي مختص يك مرورگر وجود ندارد .
• سرويس هاي هسته atlas : شامل ضمائمي به جاوااسكريپت نظير كلاس ها ، namespace ، event handler ، توارث ، نوع هاي داده و تسلسل اشياء است . ويژگي هاي فوق يك مدل برنامه نويسي شي گراء را در اختيار پياده كنندگان قرار مي دهد تا به كمك بتوان علاوه بر سرعت در ايجاد برنامه ها از كد توليد شده نيز بدفعات استفاده نمود.
• كتابخانه كلاس پايه Atlas : شامل عناصري نظير ديباگرها ، Timers ، رديابي و string buliders است .
• لايه شبكه : اين لايه با سرويس هاي مبتني بر وب و برنامه ها ارتباط برقرار مي نمايد و مديريت فراخواني متدها از راه دور و غيرهمزمان را برعهده مي گيرد . لايه فوق ، مديريت فراخواني غيرهمزمان برروي XMLHTTP را برعهده گرفته و باعث مي گردد كه پياده كنندگان بدون اين كه درگير پيچيدگي هاي موجود شوند با نوشتن چندين خط كد ، متدهاي مورد نظر را فراخوانند .
• لايه UI : در اين لايه قابليت هاي سرويس گيرنده Atlas نظير رفتارها ، گرامر تعريفي Atlas ، عناصر UI و نسبت دهي داده ارائه مي گردد .
• لايه كنترل ها : اين لايه كنترل هاي مختص atlas را براي پياده سازي سمت سرويس گيرنده ايجاد مي نمايد . علاوه بر اين كه مي توان از طريق اسكريپت به اين كنترل ها دستيابي داشت ، امكان انجام عمليات متفاوتي نظير نسبت دهي داده نيز وجود دارد. كنترل هاي Navigation و data-bound listview نمونه هائي در اين زمينه مي باشند .
• يك مدل برنامه نويسي تعريفي كه پياده كنندگان را قادر مي سازد عناصر atlas را با روشي مشابه كنترل هاي سرويس دهنده ASP.NET ايجاد نمايند .
فن آوري Atlas را مي توان به عنوان كتابخانه هاي اسكريپت سرويس گيرنده تصور نمود كه زيرمجموعه اي از معماري ASP.NET بر روي سرويس دهنده مي باشند
براي پياده سازي برنامه هاي وب سمت سرويس گيرنده ، فن آوري Atlas ويژگي هاي متعددي را ارائه مي نمايد . ارائه يك مجموعه API براي پياده سازي در جاوااسكريپت ، قابليت سازگاري اتوماتيك با مرورگرها و يك مدل تعريفي براي پياده سازي سمت سرويس گيرنده ، نمونه هائي در اين زمينه مي باشند .
عناصر سمت سرويس دهنده Atlas
فن آوري Atlas ، صرفا" در ارتباط با اسكريپت هاي سمت سرويس گيرنده نمي باشد و از عناصر سمت سرويس دهنده ، سرويس ها و كنترل هائي استفاده مي نمايد كه مي توانند با اسكريپت هاي Atlas سمت سرويس گيرنده مرتبط گردند :
• سرويس هاي وب كه ويژگي هاي ASP.NET نظير سرويس هاي پروفايل ، membership ، roles ، personalization و globalization را ارائه مي نمايند .
• كنترل هاي سرويس دهنده Atlas كه كنترل هاي سرويس دهنده ASP.NET را reasemble مي نمايند ولي اسكريپت هاي سمت سرويس گيرنده Atlas را منتشر مي نمايند . اين نوع كنترل ها ارتباط بسيار نزديكي با كنترل هاي سرويس دهنده ASP.NET نظير دكمه ها ، Label و ... دارند .
• كنترل هاي سرويس دهنده Atlas كه باعث مي گردند جاوااسكريپت رفتارهاي سمت سرويس گيرنده را توليد نمايد . كنترل هاي HoverBehavior ، ClickBehavior ، Popup و AutocompleteBehavior نمونه هائي در اين زمينه مي باشند .
• تمامي كنترل هاي سرويس دهند atlas در ويژوال استوديو نير قابل استفاده مي باشند. بنابراين مي توان از آنان در زمان طراحي استفاده نمود ( همانند كنترل هاي سرويس دهنده ASP.NET ) .
فن آوري Atlas ، اسكريپت نويسي سمت سرويس گيرنده را با پياده سازي سمت سرويس دهنده ASP.NET يكپارچه مي نمايد و پياده كنندگان مي توانند از پتانسيل هاي ASP.NET در سمت سرويس دهنده براي برنامه هاي Atlas نيز استفاده نمايند .
هدف اوليه فن آوري Atlas ، تركيب ويژگي اسكريپت هاي سمت سرويس گيرنده با ويژگي هائي از ASP.NET بر روي سرويس دهنده است تا به كمك آن
يك پلت فرم پياده سازي جامع و فراگير ايجاد گردد .