عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
Ajax : تحولی بزرگ در عرصه وب ( بخش پنجم ) |
مديريت وب |
24182 |
468 |
3.3 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
Ajax : تحولی بزرگ در عرصه وب
Ajax : تحولی بزرگ در عرصه وب (
بخش پنجم )
آنچه تاكنون گفته شده است :
بخش اول |
تاثير متقابل وب و نرم
افزار بر يكديگر |
بخش
دوم |
Ajax و فناوری های
مرتبط با آن
|
بخش سوم
|
بررسی
نمونه برنامه های مبتنی بر Ajax |
بخش چهارم |
برنامه نويسی غيرهمزمان در برنامه های وب |
پس از آشنائی با
اصول اوليه Ajax در طی چهار مقاله ، پياده كنندگانی كه
علاقه مند به استفاده از اين فناوری در برنامه های وب می باشند اين پرسش را مطرح می
نمايند كه آيا برای استفاده از پتانسيل های Ajax می
بايست از يك فريمورك و يا toolkit خاص استفاده كرد ؟ در
ادامه ضمن پاسخ به اين سوال ،
به بررسی معماری ASP.NET Ajax
خواهيم پرداخت .
چرا
به يك فريمورك Ajax نياز داريم ؟
بدون بهره گيری از پتانسيل های يك toolkit و يا
يك فريمورك ، پياد ه سازی برنامه های مبتنی بر Ajax
كار ساده ای نخواهد بود و پياده
كنندگان با مسائل متعددی مواجه خواهند شد :
-
سازگاری بين مرورگرها : گذشته از پياده سازی نسخه های متعدد و
مختلف از شی XMLHttpRequest ، هر مرورگر يك نسخه متفاوت
از DOM را پياده سازی كرده است . به روز نگه
داشتن تغييرات بين مرورگرها و مديريت تشخيص مرورگرها می تواند يك فرآينده مشكل و
خسته كننده را برای پياده كنندگان به دنبال داشته باشد .يكی از اهداف مهم يك
toolkit و يا فريمورك ، تفكيك پيچيدگی ها و
تفاوت ها است
تا پياده كنندگان بتوانند با بكارگيری مجموعه ای از
امكانات رابط برنامه نويسی ( API ) ، عمليات مشابه و
يكسانی را انجام دهند .
-
ضرورت
درك عميق تر از جاوا اسكريپت : جاوا اسكريپت ذاتا" يك زبان پيچيده
نيست ، گرچه ، تعداد زيادی از پياده كنندگان برنامه های وب اين عقيده را ندارند.
جاوا اسكريپت ويژگی هائی نظير شی گراء
و يا Type safe را كه بتواند انتظار برنامه نويسان را
تامين نمايد ، ارائه نمی نمايد . مفاهيمی نظير توارث ، اينترفيس ها و رويدادها را
می توان در جاوا اسكريپت شبيه سازی كرد ولی پياده سازی آنها برای
پياده كنندگان كار مشكلی خواهد بود .
اشكال زدائی و
عدم حمايت از زبان های اسكريپت نويسی سمت سرويس گيرنده در محيط های
IDE ( برگرفته شده از integrated development
environments ) نيز به پيچيدگی كار می افزايد .
با توجه به موارد فوق ،
توصيه می گردد در زمان پياده سازی برنامه های وب مبتنی بر Ajax
از يك فريمورك و يا toolkit استفاده
شود و پياده كنندگان خود را درگير برخی كارهای پيچيده و تكراری ننمايند .
ASP. NET Ajax يكی از فريمورك های ارائه شده در اين خصوص
است كه در ادامه با معماری آن بيشتر آْشنا می شويم .
معماری فريمورك
ASP. NET Ajax
فريمورك
ASP. NET Ajax ، به پياده كنندگان اين امكان را
می دهد كه بتوانند برنامه های وب قدرتمندتر ، با توان پاسخگوئی بيشتر
و سازگار با مرورگرهای مختلف را ايجاد نمايند . در
نگاه اول ممكن است اين گونه برداشت شود كه فريمورك يك كتابخانه
Ajax است . با اين كه استنباط فوق
درست است ولی تصويری واقعی از آنچه وجود دارد را در ذهن ايجاد
نمی كند.
با بررسی معماری فريمورك فوق و آشنائی با نحوه عملكرد هر يك از عناصر موجود در اين
ساختار ، با قابليت های فريمورك ASP. NET Ajax بيشتر
خواهيم شد .
شكل 1 ، ساختار معماری فريمورك ASP. NET Ajax را نشان می
دهد . اولين چيزی كه در شكل فوق مشهود است ، پوشش اين فريمورك در دو سمت سرويس
گيرنده و سرويس دهنده است .
علاوه بر مجموعه ای از كتابخانه های سمت سرويس گيرنده و
عناصر ، با مجموعه ای از امكانات در سمت سرويس دهنده مواجه هستيم كه امكان بكارگيری
آنها توسط كنترل های سرويس دهنده ASP. NET و سرويس ها
وجود دارد .

شكل 1 : ساختار معماری
فريمورك ASP. NET Ajax
فريمورك سمت سرويس گيرنده
يكی از نكات جالب
در ارتباط با فريمورك سمت سرويس گيرنده
، عدم وابستگی كتابخانه مركزی به عناصر سرويس دهنده است . از كتابخانه فوق می توان
جهت پياده سازی برنامه های نوشته شده توسط
PHP و يا ColdFusion
و ساير زبان های برنامه نويسی و يا پلت فرم ها نيز استفاده كرد .
با توجه به
انعطاف پذيری معماری فوق
، می توان آن را بطور منطقی به دو بخش
تقسيم كرد : فريمورك سرويس دهنده و
فريمورك سرويس گيرنده تقسيم نمود .
آگاهی از نحوه عملكرد معماری
فوق در سمت سرويس
گيرنده ، برای پياده كنندگان سمت سرويس دهنده نيز ضروری است چراكه اين
بخش آغازگر حيات يك صفحه وب می باشد .
Microsoft Ajax Library
در هسته فريمورك سمت سرويس دهنده Microsoft Ajax Library
قرار دارد كه از آن با نام كتابخانه مركزی و يا هسته نام برده می شود .اين كتابخانه
شامل مجموعه ای از فايل های جاوا اسكريپت است كه می توان از آنها صرفنظر از
ويژگی های سرويس دهنده استفاده كرد . در ادامه به بررسی
هر يك از اجزاء و يا لايه های كتابخانه فوق خواهيم پرداخت .
كار خود را با بررسی
لايه Type system كه زيربنای تمامی لايه های ديگر است ،
آغاز می نمائيم .
( در نسخه
های قبلی ASP. NET Ajax
با كد نام
Atlas ، به كتابخانه
مركزی
Client Script Library گفته می شد ) .
-
Type
System : هدف از لايه فوق ، معرفی مفاهيم برنامه نويسی شی گراء
نظير كلاس ها ، توارث ، اينترفيس ها و event handling
برای جاوا اسكريپت است . اين لايه همچنين نوع های موجود جاوا اسكريپت را توسعه می
دهد . مثلا" نوع
String و Array در جاوا
اسكريپت توسعه يافته اند تا قابليت
هائی مشابه را برای پياده كنندگان
برنامه های وب
ASP. NET ايجاد نمايند .
type system اساس كار ساير اجزاء اين
كتابخانه را فراهم می نمايد .
-
Component :
در لايه بعدی كتابخانه
مركزی ، لايه component قرار دارد
كه بر روی زيرساخت type system ايجاد
شده است . لايه فوق
عمليات حياتی و مهمی را برای كتابخانه
مركزی انجام می دهد . اين لايه امكانات حمايتی
لازم برای سريال سازی JSON ( برگرفته شده از
JavaScript Object Notation ) ،
ارتباطات شبكه ای
، محلی سازی ، تعامل با DOM ( برگرفته
شده از Document Object Model ) و سرويس هائی
نظير تائيد و پروفايل را برای برنامه های ASP.NET
ارائه می نمايد . اين لايه همچنين ، امكان توليد و ايجاد ماژول
هائی با قابليت استفاده مجدد را كه می توان
آنها را در گروه هائی به عنوان كنترل ها و رفتارها
تقسيم نمود ، فراهم می نمايد .
-
Application : لايه فوق بالاترين لايه در كتابخانه
مركزی است كه می توان برای آن از يك عنوان تشريحی و توصيفی بهتر
استفاده كرد :
Application model . همانند چرخه حيات يك صفحه در
ASP.NET ، اين لايه يك مدل برنامه نويسی مبتنی بر رويداد
را ارائه می نمايد كه شما می توانيد از آن به منظور كار با عناصر
DOM ، عناصر نرم افزاری و چرخه حيات يك برنامه در مرورگر
استفاده نمائيد .
HTML ، جاوا اسكريپت و اسكريپت XML
صفحات وب مبتنی بر Ajax در
ASP. NET با استفاده از HTML ، جاوا
اسكريپت و يك گرامر تعريفی مبتنی بر XML كه به آن
XML script گفته می شود ، نوشته می گردند
. بدين ترتيب پياده كنندگان دارای گزينه های متعددی برای نوشتن كد صفحات وب
در سمت سرويس گيرنده می باشند . می توان كد را به صورت اخباری و با استفاده
از XML Script و يا به صورت دستوری با جاوا اسكريپت
پياده سازی كرد . عناصر تعريف شده در
XML Script شامل يك تگ اسكريپت جديد به صورت زير می
باشند .
<script type="text/xml-script"> |
مرورگر قادر به تشخيص تگ
Script است ولی دارای يك مكانيزم برای پردازش نوع
xml-script نمی باشد . در مقابل ، فايل های جاوا اسكريپت
از فريمورك ASP.NET Ajax می توانند اسكريپت را
تفسير
و يك نمونه از عناصر و كنترل های موجود بر روی صفحه را ايجاد نمايند .
كد زير ،
نحوه استفاده از XML Script به منظور نمايش يك پيام پس
از استقرار صفحه در حافظه مرورگر را نشان می دهد .
XML-Script :
گزينه ای برای پياده سازی صفحات مبتنی بر Ajax |
<script type="text/xml-script">
<page xmlns="http://schemas.microsoft.com/xml-script/2005">
<components>
<application load="page_load"
/>
</components>
</page>
</script>
<script type="text/javascript">
function
page_load(sender, e) {
alert("Hello from XML-Script!");
}
</script> |
در مثال فوق ، يك تابع
نوشته شده به زبان جاوا اسكريپت با نام Page_load
به صورت تعريفی به رويداد Load در چرخه حيات صفحه
نسبت داده شده است . با اجرای اين صفحه ، تابع Page_Load
فراخوانده می شود تا يك پيام برای سرويس گيرنده نمايش داده شود .
شايد برای شما اين سوال مطرح شده باشد كه چرا در مقابل جاوا اسكريپت می بايست از
XML Script استفاده كرد ؟ ( عكس اين سوال نيز می تواند
مطرح شود ) . در پاسخ می توان به تمايل پياده كنندگان و توانمندی آنها اشاره كرد .
برخی از پياده كنندگان ترجيح می دهند كه از يك زبان نشانه گذاری در مقابل اسكريپت
استفاده نمايند . در مقابل تعداد ديگری از پياده كنندگان استفاده از زبان جاوا اسكريپت را در مقابل يك زبان نشانه گذاری ، ترجيح می دهند . به هر حال از دو رويكرد
فوق می توان استفاده كرد و هر يك دارای مزايا و محدوديت های مختص به خود می باشند.
ASP.NET AJAX service proxies
فريمورك در سمت سرويس گيرنده قابليت
فراخوانی سرويس های وب را از طريق جاوا اسكريپت و به كمك مجموعه ای از پروكسی های
سمت سرويس گيرنده كه از طريق سرويس دهنده ايجاد شده اند ، فراهم می نمايد .پروكسی
ها را می توان به منزله يك مرجع وب در كد مديريت يافته دات نت در نظر گرفت . يك پروكسی كلاسی است كه به عنوان يك اينترفيس برای
آيتم ديگر
عمل می نمايد . در اين حالت ، يك سرويس وب .
جمع بندی فريمورك سمت سرويس گيرنده
تا اين جا يك ديد كلی و اوليه نسبت به فريمورك سمت سرويس گيرنده
پيدا كرديم . اجازه دهيد سفری داشته باشيم به سمت سرويس دهنده و
ببينيم كه اين
فريمورك در سمت سرويس دهنده چه حرفی برای گفتن دارد و از چه نوع معماری تبعيت می
كند .
فريمورك در سمت سرويس دهنده
در بالاترين سطح ASP. NET 2.0 ، مجموعه ای از كنترل ها و
سرويس های ارزشمند وجود دارد كه فريمورك دات نت را جهت حمايت از
Ajax تحت تاثير قرار می دهد . اين لايه از فريمورك سرويس دهنده
،
ASP.NET AJAX server extensions ناميده شده و مشتمل بر سه بخش مجزا است :
در ادامه هر يك از امكانات فوق را به
اختصار توضيح می دهيم .
كنترل های سرويس دهنده Ajax
مجموعه ای جديد از كنترل های سرويس دهنده
می باشند كه به جعبه ابزار ASP. NET اضافه می شوند . دو
كنترل آنها شاخص تر از ساير كنترل ها می باشند . اولين كنترل ، ScriptManager
است كه به عنوان مغز يك صفحه وب مبتنی بر Ajax تلقی می
گردد . يكی از چندين مسئوليت كنترل فوق ، مديريت ناحيه ای از صفحه است كه در
حين Postback غيرهمزمان می بايست بطور پويا بهنگام گردد.
دومين كنترل ، UpdatePanel است كه از آن به منظور تعريف
ناحيه ای بر روی صفحه كه می بايست به صورت جزئی بهنگام گردد ، استفاده می شود . با
تلفيق توانمندی دو كنترل اشاره شده وضعيت بخش رابط كاربر يك برنامه وب بطرز محسوسی
بهبود خواهد يافت ( در واقع Postback سنتی جای خود را به
Postback غيرهمزمان می دهد ) . پيامد بكارگيری كنترل های
فوق ، بهنگام سازی نواحی خاص و مشخص شده ای بر روی صفحه ، در مقابل
refresh تمامی صفحه است .
ساير عناصر server extension ، سرويس هائی را شامل می
شوند كه به منزله يك پل ارتباطی بين سرويس گيرنده و سرويس دهنده رفتار می نمايند .
web services bridge
برنامه های وب عموما" ، محدود به منابع موجود بر روی سرويس دهنده محلی
می باشند . گذشته از منابع خارجی اندكی نظير فايل های تصوير و
CSS ، برنامه ها مجاز به دستيابی به منابع در حوزه برنامه سرويس گيرنده نمی
باشند . به منظور غلبه بر اين موانع ،
server extensions در فريمورك
ASP. NET Ajax شامل يك web service bridge
است كه يك gateway برای فراخوانی سرويس های وب از طريق
اسكريپت های سمت سرويس گيرنده را فراهم می نمايد . تامين داده از سمت سرويس دهنده
برای استفاده در سمت سرويس گيرنده يكی از موارد كاربرد اين فناوری است .
Application Service
bridge
با توجه به ارتباط
تنگاتنگ ASP. NET Ajax
با ASP. NET ، دستيابی به برخی از سرويس های
application نظير تائيديه و يا پروفايل را می توان به يك
برنامه موجود اضافه نمود . اين ويژگی باعث می شود بتوان عملياتی نظير بررسی
اطلاعات حساس يك كاربر و دستيابی به اطلاعات پروفايل را كه توسط اسكريپت های سمت
سرويس گيرنده ارسال شده اند را انجام داد .
خلاصه
در اين مقاله ضمن اشاره به ضرورت استفاده از يك فريمورك در برنامه های
وب مبتنی بر Ajax ، با عناصر موجود در سمت سرويس دهنده و
سرويس گيرنده فريمورك ASP.NET AJAX آشنا شديم . در بخش بعد با نحوه تعامل اين
عناصر در جهت تامين خواسته پياده كنندگان برنامه های وب مبتنی بر
Ajax آشنا خواهيم شد . بدين منظور به بررسی دو سناريوی
مختلف خواهيم پرداخت : مدل پياده سازی با محوريت سرويس گيرنده و مدل پياده
سازی با محوريت سرويس دهنده .