قالب وبلاگ

سایت رسمی حسابداری و حسابرسی
نوشته شده توسط : سایت رسمی حسابداری و حسابرسی

سایت eWeek با یکی از برنامه نویسان باسابقه با نام Wayne Duqaine که هم اکنون بخش توسعه نرم افزار کمپانی Grandview Systems در ایالت کالیفرنیا است گفتوگویی انجام داده , او در این گفتگو توصیه می کند که برنامه نویسان نباید خود را منحصر به یادگیری و کار در یک زبان خاص بکنند وی که بیش از 30 سال تجربه برنامه نویسی دارد 10 زبان را برای یادگیری برای برنامه نویسان همراه با دلیل توصیه می کند.
(آمار قسمت شغل های موجود برای یک زبان با توجه به آمار سایت Dice.com می باشد)
1- PHP
چیست؟ یک اینترپرتر کدباز , سرور ساید و کراس پلت فرم برای اسکریپت نویسی HTML
چرا باید آموخت؟ استفاده گسترده از آن , سرعت بالا با حافظه کش
تعداد مشاغل موجود: 1,152 شغل

2- #C
چیست؟
یک زبان برنامه نویسی همه کاره و شی گرا که توسط مایکروسافت با استفاده از تکنولوژی NET. ابداع شد.
چرا باید آموخت؟ یکی از بخش های اصلی فریم ورک NET. است و یکی از ملزومات کار شماست اگر با مایکروسافت کار می کنید.
تعداد مشاغل موجود: 5,111

3- AJAX
چیست؟
از لحاظ فنی یک زبان برنامه نویسی نیست ولی با استفاده HTML , Java SCript و XML صفحات وب پویا را خلق می کند.
چرا باید آموخت؟ از وقتی که گوگل AJAX را در Google MAP به خوبی و با موفقیت به کار برد تقاضا برای Ajax در صدر قرار گرفت. یادگیری AJAX ساده نیست ولی مایکروسافت اعلام کرده که ابزاری به نام Atlas را برای بکارگیری راحت تر AJAX ارائه خواهد داد.
تعداد مشاغل موجود: 1.106 شغل
4- Java Script
چیست؟ یک زبان اسکریپت نویسی شی گرا است که در مرورگرهای وب به صورت کلاینت ساید اجرا می شود. این زبان دارای دستورات کوتاه است و کد نویسی با آن آسان و برای اجرای دستورات نیازی به کامپایل ندارد. (آن را با Java اشتباه نگیرید)
چرا باید آموخت؟ امروزه از آن در میلیون ها صفحه وب برای تعیین اعتبار فرم ها , ایجاد کوکی ها , تشخیص نوع مرورگر و بهبود طراحی صفحات استفاده می شود. به راحتی می توان آن را آموخت و به صورت گسترده از ان استفاده کرد.
تعداد مشاغل موجود: 4,406 شغل
5- Perl
چیست؟ یک زبان برنامه نویسی و اینترپرتر کدباز , کراس پلتفرم , سرور ساید است که به طور گسترده برای پردازش متن از طریق برنامه های CGI استفاده می شود.
چرا باید آموخت؟ قدرت بالای آن در پردازش انبوهی از متون آن را بسیار محبوب کرده و باعث استفاده گسترده آن برای نوشتن برنامه های وب سرور در یک گستره بزرگ شده است.اگر با وب اپلیکیشن ها سر و کار دارید یادگیری برخی فرم های اسکریپ نویسی مانند Perl , PHP لازم است.
تعداد مشاغل موجود: 4,810 شغل

6- C
چیست؟
یک زبان برنامه نویسی همه کاره استاندارد است . یکی از فراگیرترین زبان های برنامه نویسی می باشد و اساس و پایه بسیاری از زبان های دیگر مانند ++C می باشد
چرا باید آموخت؟ کسی که زبان C بلد است می تواند به راحتی زبان هایی مانند #C و JAVA را یاد بگیرد چون بسیاری دستورات مانند هم اند. همچنین بسیاری از دستورات C در زبان های اسکریپتی استفاده می شود.
تعداد مشاغل موجود: 6,168 شغل با در نظر گرفتن مشتقات

7- Ruby و Ruby on Rails

چیست؟ Ruby یک زبان برنامه نویسی کد باز , شی گرا و دینامیک است. Ruby on Rails یک فریم ورک کدباز است که برای وب اپلیکیشن ها توسط Ruby نوشته شده است که بدقت با معماری MVC دنبال می شود.
چرا باید آموخت؟ با توجه به سادگی و سودمندی این زبان در حال گسترش است . سادگی یادگیری آن نیز یکی دیگر از مزایای آن است.
تعداد مشاغل موجود: 210 و 54 شغل به ترتیب

8- Java
چیست؟
یک زبان برنامه نویسی شی گرا که بوسیله جیمز گوسلینگ و همکارانش در شرکت سان میکروسیستم در اوایل دهه 1990 بوجود آمد.
چرا باید آموخت؟ بسیاری از برنامه نویسان آن را زبانی زیبا می نامند. Java مرکز زبان های غیر از NET. است. یادگیری زبان جاوا برای شما ضروری است اگر شما برای مایکروسافت کار نمی کنید.
تعداد مشاغل موجود: 14,408 شغل

9- Python
چیست؟
یک زبان برنامه نویسی اینترپرتر دینامیک , شی گرا و کد باز است که به صورت اتوماتیک مدیریت حافظه را بر عهده می گیرد.
چرا باید آموخت؟ پایتون به صورت گسترده توسط گوگل به کار گرفته می شود.
تعداد مشاغل موجود: 811 شغل

10- VB.NET
چیست؟
یک زبان برنامه نویسی شی گراکه با تکنولوژی NET. مایکروسافت توسعه یافته است.
چرا باید آموخت؟ تقاضا برای یادگیری VB.NET نسبت به هر زبان دیگری بیش تر است .اکنون ر بیشتر پروژه ها با VB.NET انجام می شود.
تعداد مشاغل موجود: 2,090 شغل


:: موضوعات مرتبط: , ,
:: بازدید از این مطلب : 1537
|
امتیاز مطلب : 7
|
تعداد امتیازدهندگان : 2
|
مجموع امتیاز : 2
تاریخ انتشار : دو شنبه 9 خرداد 1390 | نظرات ()
نوشته شده توسط : سایت رسمی حسابداری و حسابرسی

آيا   ASP.NET نسخه جديدی از ASP کلاسيک است ؟ در پاسخ به سوال فوق می بايست با صراحت اعلان نمود که ASP.NET بعنوان يک نسخه اصلاح شده و يا تکميلی نسبت به آخرين نسخه ASP کلاسيک يعنی ASP 3.0 نبوده و در حقيقت ASP.NET يک الگوی جديد برای پياده سازی برنامه ها تحت وب خصوصا" اسکريپت هائی که بر روی سرويس دهنده اجراء می گردند ، می باشد .  در اين مقاله سعی خواهد شد که به بررسی مهمترين تفاوت های موجود بين ASP.NET و  ASP کلاسيک پرداخته و در اين رهگذر  نگاهی نيز بر  اصول اوليه و اساسی برای ايجاد اين نوع صفحات داشته باشيم .

.NET Common Language Runtime 

شرکت مايکروسافت در حال ايجاد يک زير ساخت سطح پايين  (Low-Level)  برای ويندوز است . اين زير ساخت جديد ، بعنوان حد واسط بين عمليات سطح پايين ويندوز و برنامه های کاربران ، قرار گرفته  و ايفای وظيفه ( مديريت اجرای کدها ) خواهد کرد .  زيرساخت فوق CLR ناميده شده است .CLR مسئول ايجاد يک سطح خاص از کپسوله سازی بين پياده کنندگان نرم افزار  و سيستم عامل بوده و طبيعتا" باعث تسهيل در ايجاد برنامه های تحت ويندوز خواهد شد. در اين راستا پياده کنندگان نگران انجام عمليات سطح پايينی نظير : مديريت حافظه ،مديريت اشاره گرها ،تفاوت بين زبانهای برنامه نويسی و ساير عمليات رايج دردسر آفرين ! نخواهند بود. CLR يک محيط زمان اجراء بصورت Object-Oriented است . هر نوع داده در CLR بصورت يک شی بوده که در کنار خود مجموعه ای از متدها و خصايص را خواهد داشت . CLR امکان دستيابی به مجموعه ای حياتی از سرويس ها و خدمات ارائه شده توسط سيستم عامل نظير : امنيت ، تعيين اعتبار ،دستيابی به سيستم فايل ، دسترسی به اطلاعات شبکه ای  و ساير عمليات مورد نياز  را فراهم می نمايد.

 

نکته

کدهائی که با استفاده از امکانات ارائه شده CLR نوشته می شوند را Managed code    و

 کدهائی که از زير ساخت فوق استفاده نمی نمايند را Unmanaged Code  می گويند.

 

 مقدمه ای بر ASP.NET

تفاوت بين ASP.NET با ASP کلاسيک از دو زاويه اصلی قابل مطالعه است:

�        بعد اول  : ASP.NET امکانات بمراتب بيشتری را از بعد برنامه نويسی نسبت به ASP کلاسيک ارائه نموده است . مايکروسافت در اين زمينه از نقطه نظرات و پيشنهادات افراديکه با ASP کار کرده اند استفاده و سعی نموده است که با بررسی دقيق اين نوع خواسته ها ،امکان افزودن قابليت های جديد برنامه نويسی در ASP.NET را محقق نمايد

�        بعد دوم : ASP.NET تغييراتی را در رابطه با اصول برنامه نويسی برای ايجاد صفحات وب پويا ايجاد نموده است . برای  ايجاد و نوشتن صفحات ASP.NET نيازمند کسب تجارب بيشتر و جديدتری نسبت به آنچه قبلا" در رابطه با ASP کلاسيک فراگرفته شده است، خواهد بود.

در ادامه به بررسی دو بعد فوق خواهيم پرداخت :

 

اصلاحات ساختاری در برنامه نويسی صفحات  ASP.NET

 

  • اسکريپت های ترجمه شده ASP.NET .  ASP.NET نسبت به ASP از کارآئی بمراتب بالاتر و محسوس تری برخوردار است . صفحات ASP.NET ترجمه می گردنند.در گذشته ما شاهد تفسير اسکريپت های نوشته شده بهمراه ASP بوديم که همين موضوع  تاثير زيادی را از بعد سرعت و کارائی بدنبال داشت . صفحات ASP.NET حرف به حرف توسط کمپايلرهای وابسته به CLR ترجمه خواهند شد. ( کمپايلرهای ارائه شده بهمراه ويژوال استوديو نظير VB,VC++,C# نمونه هائی از اين نوع کمپايلرها می باشند.)
  • Caching . يکی از مهمترين عوامل تاثير گذار بر کارائی يک وب سايت ،نحوه دستيابی به داده ها است . مثلا" يک صفحه وب که محتويات يک جدول موجود در بانک اطلاعاتی را نمايش می دهد ،اکثر زمان خود را صرف ايجاد ارتباط با بانک اطلاعاتی ، درخواست و بازيابی اطلاعات می کند . برای بهبود کارائی برنامه های تحت وب که هر يک بنوعی با بانک اطلاعاتی مرتبط و پس از انجام فعل و انفعالاتی اطلاعاتی را نمايش می دهند ،ASP.NET از يک ماژول Data-Caching در کنار خود استفاده می نمايد. ماژول فوق اين امکان را فراهم خواهد آورد که مشخص نمائيم چه نوع اطلاعاتی را می بايست  بر روی صفحه Cache و تا چه زمانی و تحت چه  شرايطی می بايست Cache تخليه شده ومجددا" درخواست برای بازيابی اطلاعات از بانک اطلاعاتی را داشته باشيم . در چنين شرايطی در صورتيکه اين اطمينان وجود دارد که بانک اطلاعاتی بندرت بهنگام سازی می گردد ،می توان صفحه ای را ايجاد نمود که نتايج مربوط به بازيابی اطلاعات از بانک اطلاعاتی را  به مدت بيست و چهار ساعت Cache نمايد.
  • عرضه ADO+ . شرکت مايکروسافت بهمراه ASP.NET نسخه جديدی از ADO  با نام ADO+ را ارائه نموده است . ADO+ با داده ها بصورت شی گراء ، چندبعدی و بمراتب ساده تر از ADO برخورد می کند. در ADO تمامی داده ها بصورت دو بعد  سطر و ستون نمايش داده می شوند. در چنين حالتی اگر يک سطر و يا ستون خاص در يک RecordSet خود شامل يک Recordset باشد ،چه اتفاقی خواهد افتاد؟ انجام عمليات فوق در ADO بسيار مشکل است . ( صرفا" انجام عمليات فوق از طريق Data Shaping انجام می گيرد) در ADO+ ايجاد Recordset های چند بعدی بسادگی انجام گرفته و تحقق عمليات متفاوتی نظير بهنگام سازی و حذف Recordset های مربوطه کار مشکلی نخواهد بود. در ADO هر يک از RecordSet ها بصورت يک صفحه ( بورد) دو بعدی و غير انعطاف پذير از اطلاعات می باشند .  در ADO+ هر يک از Recordset ها بصورت يک قطره کاملا" انعطاف پذير و شکل پذير از اطلاعات خواهد بود.
  • Post-Back Forms . در زمان ايجاد صفحات ASP کلاسيک و در موارديکه نياز به جمع آوری اطلاعات از کاربر و انجام پردازش های مربوطه بر روی داده ها است ،اغلب پياده کنندگان اين نوع صفحات از ترفندهای متعددی استفاده می کردنند. استفاده از فرم های Post-Back نمونه ئی از ترفندهای مورد اشاره است . اين نوع فرم ها با استفاده از تگ   ايجاد و خصلت ACTION آنها مقدار دهی نشده و يا به همان صفحه ای که شامل فرم است آدرس دهی خواهد شد.در اين راستا زمانيکه کاربر اقدام به ارسال فرم می نمايد ،صفحه مشابه ASP مجددا" فعال که در آن داده های وارد شده توسط کاربر در فرم مشاهده خواهند شد. برای هندل کردن اينچنين موارد در ASP از دستورات if استفاده شده تا مشخص گردد که آيا فرم Post-back شده است يا خير ؟ در ASP.NET از دستورات دردسر آفرين If استفاده نمی گردد. پياده کنندگان می توانند يک صفحه ASP.NET را بهمراه استفاده از يک دکمه کنترل سرويس دهنده ايجاد نمايند. در ادامه می توان با نوشتن يک تابع نحوه برخورد با واقعه فشردن دکمه مربوطه را تبين نمود. در چنين حالتی تمامی عمليات مورد نياز برای حمايت لجستيک از يک فرم از طريق يک تابع انجام خواهد شد. ( به جای نوشتن چندين If ) .
  • Server Controls . در ASP کلاسيک تمامی متدها ی لازم برای اخذ اطلاعات از کاربران از طريق کنترل های پيش فرض HTML انجام می شود. مثلا" برای ايجاد يک Text Box   و بمنظور اخذ اطلاعات از کاربر می توان از کدهائی مشابه زير استفاده نمود :

 

ايجاد يک Text Box

<Form>

    

Form

 

  در ASP.NET کنترل های سرويس دهنده  جايگزين  شده اند. کنترل های فوق را می توان در صفحات ASP.NET از طريق نوشتن کدهای ساده ای ايجاد نمود. مثلا" برای ايجاد يک Text Box در يک صفحه ASP.NET می توان همچنان از تگ های استاندارد HTML نظير آنچه که در مثال بالا مشاهده کرديم ويا از يک کنترل سرويس دهنده مطابق زير استفاده نمود :

 

 

ايجاد يک Text Box  در ASP.NET

<Form ACTION="Test.aspx" METHOD=POST RUNAT="Server">

                 

Form>

 

کنترل سرويس دهنده Text Box توسط تگ asp:textbox ايجاد می گردد. تگ فوق به ASP.NET خواهد گفت که شما به يک Text Box نياز داريد. اين کنترل سرويس دهنده هوشمندانه Html های لازم و مورد نياز برای عرضه نمودن يک Text Box استاندارد را ارائه خواهد نمود. زمانيکه کاربری صفحه ASP.NET را ملاقات نمايد ،با کدهای Html مشابه زير مواجه خواهد شد.

 

ايجاد يک Text Box  در ASP.NET  و مشاهده  توسط کاربر




...

 

 

توجه داشته باشيد که کنترل سرويس دهنده Text Box بصورت Html های معمولی عرضه شده است . همچنين فيلد مخفی _Viewstate  برای نگهداری وضعيت فرم با توجه به داده ها ی کاربر ايجاد می گردد. در اين مقاله بدنبال تشريح جزئيات نحوه کار کنترل های سرويس دهنده و نحوه پشتيبانی از آخرين وضعيت يک فرم نبوده و صرفا" می بايست به اين نکته توجه نمود که کنترل های سرويس دهنده تگ های Html را برای سرويس گيرنده ارسال و همانند صفحات ASP کلاسيک ،هر مرورگر استاندارد وب قادر به نمايش صفحات ASP.NET خواهد بود.

 

  • تسهيل در امر بکارگيری برنامه ها  . گروه طراح ASP.NET در شرکت مايکروسافت آشکارا به اين حقيقت پی برده بودند که بکارگيری يک برنامه ASP بسيار مشکل است . مثلا" در صورتيکه يک برنامه بزرگ ASP بهمراه تعداد زيادی عناصر COM اختصاصی طراحی و بر روی سرويس دهنده محل طراحی اين عناصر (Development Servers)  و برنامه ها قرار گرفته شده باشند ،انتقال برنامه به محل واقعی جهت استفاده (Production Servers)  کار مشکل و دردسر آفرينی خواهد بود. در اين راستا می بايست اين اطمينان را داشت که تمامی عناصر Com بر روی هر يک از سرويس دهندگان وجود داشته و عناصر فوق ريجستر شده باشند. تنظيم پارامترهای مربوط به برنامه IIS بر روی هر يک از سرويس دهندگان نيز مزيد بر مشکل بود و بهرحال ما همواره در رابطه با بکارگيری و انجام عمليات مربوطه در اين زمينه با مشکلات عديده ای مواجه بوده و هستيم . صفحات ASP.NET در اين راستا نيز تسهيلاتی را در امر بکارگيری ساده برنامه های ASP فراهم نموده اند. در ASP.NET لزومی به ريجستر نمودن عناصر COM نبوده و کافی است که عناصر فوق در دايرکتوری مربوطه مستقر گردنند. ASP.NET از يک فايل پيکربندی متنی برای تغيير و اصلاح پارامترهائی استفاده نموده که تغيير آنها قبلا" صرفا" از طريق بکارگيری برنامه IIS امکان پذير بود.

 

تغييرات اوليه در برنامه نويسی اسکريپت های وب با استفاده از ASP.NET

 

ASP.NET تغييرات اصولی متعددی را در رابطه با ايجاد صفحات وب باعث شده است . صفحات ASP بر اساس يک نظام خاص رويه ای ايجاد و هر فعاليت از طريق يک صفحه ASP انجام خواهد شد. در هر يک از صفحات ASP کدهای نوشته شده برای انجام يک فعاليت خاص بترتيب اجراء خواهند شد. مثلا" اگر بخواهيم کاربران نام خود را وارد نموده و در ادامه امکان نمايش آن را فراهم نمود می توان دو صفحه ASP را ايجاد نمود: اولين صفحه مسئول ايجاد يک فرم بهمراه يک TextBox بوده که کاربر قادر به درج نام خود در فيلد فوق خواهد بود. دومين صفحه بعنوان ACTION مربوط به فرم ايفای وظيفه خواهد نموده و بسادگی نام وارد شده توسط کاربر را که از طريق اولين صفحه وارد شده است را نمايش خواهد داد : (Response.write   �Hello,  � & Request.Form(�Name")  . در صفحات ASP ضروری است که پياده کنندگان از آنچه که بر روی سرويس دهنده و سرويس گيرنده اتفاق می افتد، آگاهی داشته باشند. همانگونه که اشاره شد برای اخذ اطلاعات از کاربر نيازمند استفاده از چندين صفحه ASP مجزای ديگر خواهيم بود. به عبارت ديگر درج و اخذ اطلاعات از کاربر نيازمند يک Round Trip به سرويس دهنده بوده و پياده کننده می بايست نسبت به اين واقعيت آگاهی لازم را داشته باشد.

 صفحات ASP.NET نيز به اين Round trip برای اخذ اطلاعات از کاربر  نياز خواهند داشت با اين تفاوت که پياده کنندگان ضرورتی نسبت به آگاهی از جزئيات اين فعاليت نخواهند داشت . صفحات ASP.NET بسيار مشابه برنامه هائی هستند که با ويژوال بيسيک نوشته شده اند. در رابطه با مثال گفته شده دو صفحه مورد نظر را می توان در يک صفحه و از طريق نوشتن کدهای محدودی ايجاد نمود. در برنامه زير از يک کنترل سرويس دهنده  Button  استفاده شده است .(asp:button) . زمانيکه دکمه فوق فعال گردد تابعی با نام SubmitButton_Clicked فعال و عمليات مورد نظر را انجام خواهد داد.

 

استفاده از کنترل سرويس دهنده

>
      Name:

                                     onclick="SubmitButton_Clicked"/>                   
      Sub SubmitButton_Clicked(sender as Object, e as EventArgs)
          WelcomeMessage.Text = "Hello there, " & MyName.Text & "!!"
    End Sub
 


:: موضوعات مرتبط: , ,
:: بازدید از این مطلب : 1638
|
امتیاز مطلب : 13
|
تعداد امتیازدهندگان : 4
|
مجموع امتیاز : 4
تاریخ انتشار : دو شنبه 9 خرداد 1390 | نظرات ()
نوشته شده توسط : سایت رسمی حسابداری و حسابرسی
شاید اگر مثل من قبلاً بعضی سی‌دی‌های آموزشی تصویری به اصطلاح اینترکتیو تولید داخل را از نظر گذرانده باشید (آنهایی که به نظر می‌رسد گوینده‌اش قبلاً معلم کلاس اول دبستان بوده و برای آنها دیکته می‌گفته) و ظرف همان یکی دو دقیقه‌ی اول اولین خمیازه گریبانتان را گرفته باشد چندان وقعی به نمونه‌های آموزشی این شکلی ننهید. من چند وقت پیش یک مجموعه از ویدئوهای آموزشی ASP.NET را داونلود کردم و با آنها پیش رفتم. ویدئوها خیلی ساده هستند، معلم آنها را با ضبط صدای خودش در حین کار در محیط نرم‌افزار تهیه کرده. اما از آنجا که طرف خودش این کاره است (و لازم نیست نوشته‌هایی را که نمی‌فهمد چه معنیی می‌دهند از روی کاغذ بخواند) ضمن این که یادگیرنده در حین تماشای آنها خسته نمی‌شود می‌تواند با اجرای همزمان دستورالعملها به آسانی تمامی آنها را عملاً پیاده کند و آنچه را که لازم است بدون زحمت زیاد بیاموزد. در صورتی که علاقمند بودید می‌توانید این مجموعه از فیلمهای آموزشی را از اینجا دریافت کنید و از آنها استفاده کنید (شامل ۱۴ درس، آموزگار به زبان انگلیسی با پیچیدگی نه چندان زیاد صحبت می‌کند).

Videos for ASP.NET 2.0 Beginners

+ نوشته شده در  سه شنبه هفدهم دی 1387ساعت 21:18  توسط شهریاری  |  آرشیو نظرات

PHP رقيبي جدي براي NET. و J2EE

پلاتفرم نيرومندي براي وب‌
 در خبرها آمده بود كه شركت zend، توسعه‌دهنده فناوري PHP، به‌همراه چند شركت‌ديگر، شروع يك پروژه مهم به‌نام PHP Collaboration Project را اعلام كرده است. اين پروژه تلاش ديگري از سوي شركت zend براي تبديل‌كردن PHP به يك پلاتفرم كامل مبتني بر وب است. در واقع، هدف اصلي zend، رساندن PHP به نقطه‌اي است كه جايگزين مناسبي براي پلاتفرم‌هاي دات‌نت مايكروسافت و J2EE سان مايكروسيستمز باشد.
البته اين اولين باري نيست كه زند در اين راستا تلاش مي‌كند. چندي پيش، اين شركت با معرفي <پلاتفرم زند> كه اكنون نسخه دوم آن نيز منتشر شده است، اين حركت را بنيان گذاشت. فناوري PHP كه در ابتدا با هدف توليد و توسعه صفحات ديناميك وب براساس زبان برنامه‌نويسي Prel به وجود آمده بود، به تدريج طي سه سال گذشته به يكي از مهم‌ترين فناوري‌هاي ساخت صفحات وب ديناميك تبديل‌شد. چنانچه اگر امروز از برنامه‌نويسان وب سؤال كنيد، ازASP.NET و PHP به عنوان مهم‌ترين گزينه‌هاي پيش روي يك برنامه‌نويس براي ساخت صفحات وب ياد مي‌كنند. ولي كمتر كسي از JSP (فناوري ساخت صفحات وب ديناميك براساس جاوا) سخن مي‌گويد. در عمل نيز اگر همين الا‌ن به اينترنت مراجعه‌‌كنيد، متوجه مي‌شويد كه درصد كمي از سايت‌هاي وب ازJSP استفاده مي‌كنند و در مقابل، بازار استفاده از PHP وASP.NET داغ است.

به نظر من يكي از دلايل مهم موفقيت PHP طي ماه‌هاي گذشته، افزايش نرم‌افزارها و ابزارهايي است كه برنامه‌نويسي و توليد‌نرم‌افزار براساسPHP را آسان‌تر و كاربرپسندتر مي‌كند.(به‌عنوان نمونه نرم‌افزارMovable Type) اين روند درست نقطه مقابل وضعيت JSP طي چند سال اخير است كه پيشرفت قابل توجهي در جهت دلپذيرتر‌كردن و آسان‌تر ساختن برنامه‌نويسي تحت وب با استفاده از جاوا نداشته است. دليل دوم و شايد مهم‌تر، استقبالي است كه از اين فناوري در محافل اپن‌سورسي به عمل آمده است. شايد در جريان باشيد كه PHP يكي از چهار ستون اصلي راهكار موسوم به LAMP تركيب (Linux/Apache/MySQL/PHP) است.

در ميان اغلب كارشناسان دنياي برنامه‌نويسي، اين تصور عمومي وجود دارد كه فناوري‌هاي اپن‌سورسي، رقيب جدي‌ فناوري‌هاي دات‌نت و J2EE هستند. به نظر من اين فرضيه درستي است و بي‌ترديدPHP مي‌تواند جنبش اپن‌سورس را در دنياي برنامه‌نويسي نمايندگي كند. اما رقابت نهايي ميان دات‌نت و PHP خواهد بود. زيرا اين رقابت يك چالش مهم‌تر را پشت سر خود دارد و آن هم چالش مايكروسافت و لينوكس است.
همين حالا نيز مي‌توان به وضوح صف‌آرايي رقباي مايكروسافت و دات‌نت را در جبهه PHP مشاهده‌كرد. تاكنون پروژه PHP Collaboration توانسته است حمايت غول‌هايي همچون اوراكل، IBM، توسعه‌دهندگان MySQL، و اينتل را به دست آورد.

اركان پلاتفرم PHP 
جنبش جديدي كه حول و حوشPHP شكل گرفته است را مي‌توان به دو بخش اصلي تقسيم كرد. يكي همان پلاتفرم زند است كه دربرگيرنده قابليت‌ها و راهكارهايي است كه در آسان‌سازي مديريت چندين سرورPHP در يك شبكه سازماني كاربرد دارد و به‌طور كلي همان نقطه‌‌اي را هدف گرفته است كه نقطه قوت جاوا محسوب مي‌شود؛ يعني سيستم‌هاي Enterprise. 
بخش دوم نيز پروژه جديد PHP Collaboration است كه بر مبناي نسخه پنجم فناوري PHP است و خود از دو عنصر محوري تشكيل شده است: يكي پروژه Eclipse PHP كه به‌وسيله شركت زند هدايت خواهد شد و به نظر من درپي به وجود‌آوردن آلترناتيوي براي پلاتفرم Eclipse جاوا است.

بخش دوم كه احتمالاً مهم‌تر نيز هست، Zend PHP Framework ناميده مي‌شود و قلب پلاتفرم جديد PHP را تشكيل خواهد داد. اين چارچوب نرم‌افزاري، هماني است كه قرار است. NETFramework مايكروسافت و راهكار جاوا در پلاتفرم J2EE را هدف قراردهد. اين چارچوب، استاندارد كدنويسي و ابزارهاي مرتبط با آن در دنياي PHP را تعيين خواهد كرد. قرار است فعاليت در زمينه PHP Framework زير چتر يك مجوز اپن‌سورسي صورت گيرد. به اين ترتيب، حمايت دنياي اپن‌سورس از اين پلاتفرم تضمين‌شده به نظر مي‌رسد. در عين حال، شركت زند مشغول توسعه نرم‌افزار Zend Studio است كه ابتداي تابستان امسال نسخه چهارم آن نيز عرضه شد. نام اين نرم‌افزار براي برنامه‌نويسان دات‌نت مي‌تواند يادآورVisual Studio.NET باشد. البته آن طور كه زند توضيح داده است، چون سورس‌كد اين ابزار باز نخواهد بود، اين شركت تصميم جدي براي تبديل‌كردن اين نرم‌افزار به مهم‌ترين IDE  برنامه‌نويسيPHP نگرفته و مايل است توسعه چنين نرم‌افزاري را به صنعت اپن‌سورس واگذار كند. حال بايد منتظر‌ماند و ديد كه ماجراي پلاتفرم كامل PHP به كجا خواهد انجاميد. اگر نظر شخصي من را بخواهيد، آينده درخشاني را براي PHP پيش‌بيني مي‌كنم. ولي موضوعي كه برايم از همه جالب‌تر است، رقابت داغ و تعيين‌كننده‌اي است كه ميان پلاتفرم دات‌نت مايكروسافت و پلاتفرم PHP اپن‌سورسي پديد خواهد آمد. اگر به موضوع علاقمند هستيد، پيشنهاد مي‌كنم اين منابع را نگاه كنيد:



:: موضوعات مرتبط: , ,
:: بازدید از این مطلب : 1651
|
امتیاز مطلب : 9
|
تعداد امتیازدهندگان : 3
|
مجموع امتیاز : 3
تاریخ انتشار : دو شنبه 9 خرداد 1390 | نظرات ()
نوشته شده توسط : سایت رسمی حسابداری و حسابرسی

ASP.NET فراتر از يک نسخه تکميل شده در مقايسه با نسخه قبلی خود يعنی ASP کلاسيک است . ASP.NET يک محيط کامل جهت پياده سازی نرم افزارهای تحت وب است . با اينکه ASP.NET از لحاظ گرامر با ASP کلاسيک شباهت هائی را دارد ولی تکنولوژی فوق با ارائه يک مدل جديد برنامه نويسی بهمراه زير ساخت های لازم ،امکان ايجاد نرم افزارهای تحت وب را با امنيت و استحکام بيشتر فراهم می آورد.
ASP.NET برخلاف ASP کلاسيک ترجمه می گردد. در محيط دات نت می توان با استفاده از هر يک از زبانهای برنامه نويسی حمايت شده نظير : Visual basic.Net,C#,Jscrip.Net اقدام به نوشتن برنامه ها نمود.برنامه های ASP.NET از تمامی توان و پتانسيل های ارائه شده توسط دات نت استفاده می نمايند. در ASP.NET می توان از ويرايشگرها ی ويژوال و ساير ابزارهای برنامه نويسی نظير ويژوال استوديو دات نت استفاده نمود.
پياده کنندگان نرم افزارهای تحت وب بکمک ASP.NET می توانند از دو تکتولوژی عمدهء فرم های وب (Web Forms) و سرويس های وب (Web service) برای ايجاد نرم افزار استفاده نمايند.

  • فرم های وب (Web Forms) . با استفاده از تکنولوژی فوق می توان صفحات وب متکی بر فرمهای وب قدرتمندی را ايجاد نمود. در زمان ايجاد صفحاتی از اين نوع می توان از کنترل های سرويس دهنده ASP.NET برای ايجاد عناصر معمولی در طراحی رابط کاربر (UI) و برنامه نويسی آنها برای انجام عمليات خاص استفاده نمود.استفاده از کنترل های سرويس دهنده باعث سرعت در امر پياده سازی فرم های وب خواهد داشت.

  • سرويس های وب XML . اين نوع سرويس ها امکان دستيابی به قابليت ها و پتانسيل های سرويس دهنده را از راه دور فراهم خواهندکرد. با استفاده از سرويس های فوق می توان بخش منطق وسياست های راهبردی نرم افزارها و همچنين دستيابی به داده ها را مديريت نمود.سرويس های وب XML امکان مبادله داده بين سرويس گيرنده و سرويس دهنده و يا بين دو سرويس دهنده را بوجود می آورد.برای تبادل اطلاعات می توان از پروتکل های ارتباطی استانداری نظير http و يا پيامهای XML استفاده نمود. نکته قابل توجه در رابطه با سرويس های فوق توانائی هر برنامه ( صرفنظر از زبان استفاده شده ) و تحت هر نوع سيستم عامل برای استفاده از سرويس های فوق است.
    دو مدل فوق قادر به استفاده از تمامی مزايای تکنولوژی های ASP.NET خواهند بود. بديهی است استفاده از پتانسيل های محيط دات نت نيز در اين زمينه وجود دارد. در ادامه به برخی از اين ويژگی های ASP.NET اشاره می گردد.


    ▪ سرويس های وب XML . اين نوع سرويس ها امکان دستيابی به قابليت ها و پتانسيل های سرويس دهنده را از راه دور فراهم خواهندکرد. با استفاده از سرويس های فوق می توان بخش منطق وسياست های راهبردی نرم افزارها و همچنين دستيابی به داده ها را مديريت نمود.سرويس های وب XML امکان مبادله داده بين سرويس گيرنده و سرويس دهنده و يا بين دو سرويس دهنده را بوجود می آورد.برای تبادل اطلاعات می توان از پروتکل های ارتباطی استانداری نظير http و يا پيامهای XML استفاده نمود. نکته قابل توجه در رابطه با سرويس های فوق توانائی هر برنامه ( صرفنظر از زبان استفاده شده ) و تحت هر نوع سيستم عامل برای استفاده از سرويس های فوق است.
    دو مدل فوق قادر به استفاده از تمامی مزايای تکنولوژی های ASP.NET خواهند بود. بديهی است استفاده از پتانسيل های محيط دات نت نيز در اين زمينه وجود دارد. در ادامه به برخی از اين ويژگی ها
    ASP.NET اشاره می گردد.

    ▪ اگر دارای تجاربی در زمينه پياده سازی نرم افزار های تحت وب بکمک تکنولوژی ASP باشيد ،در اولين نگاه به ASP.NET حتما" متوجه برخی شباهت های موجود خواهيد شد. البته مدل اشياء ASP.NET بصورت کاملا" آشکار با ASP کلاسيک تفاوت داشته و می توان اين ادعا را داشت که ASP.NET بمراتب ساختيافته تر و شی گراء تر شده است . با توجه به مسئله فوق می بايست به اين نکته نيز اشاره گردد که ASP.NET با ASP کلاسيک بطور کامل سازگار نبوده و تقريبا" تمامی صفحات ASP موجود مجبور خواهند بود شاهد برخی تغييرات باشند تا امکان اجرای آنان تحت ASP.NET فراهم گردد. يکی ديگر از تغييرات مهم در اين زمينه ،وجود Visual Basic.NET است .در صفحات ASP فعلی از VBscript استفاده شده است که بنوعی اين زبان در دات نت مورد توجه قرار نگرفته و VisualBasic.NET جايگزين شده است .
    ▪ دستيابی به بانک های اطلاعاتی از طريق برنامه های ASP.NET بعنوان يک نياز اساسی برای اغلب برنامه های تحت وب مورد توجه خاص قرار گرفته است . در اين راستا ASP.NET امکانات بيشتر و بمراتب راحت تر از لحاظ بکارگيری را پيش بينی کرده است و حتی امکان مديريت بانک اطلاعاتی از طريق کدهای نوشته شده نيز وجود خواهد داشت.
    ▪ ASP.NET با ارائه يک مدل ساده به پياده کنندگان نرم افزارهای تحت وب اين امکان را خواهد داد که منطق برنامه های خود را نوشته و آنها را در سطح Application اجراء نمايند. کدهای فوق را می توان در يک فايل متنی با نام Global.asax و يا در يک کلاس کمپايل شده که بعنوان يک اسمبلی بکار گرفته می شود ،استفاده نمود.
    ▪ ASP.NET امکانات لازم برای دستيابی به Application State و Session state را ارائه نموده است.
    ▪ برای پياده کنندگان حرفه ای تر که قصد استفاده از API را دارند ( ISAPI رابط برنامه نويسی است که در نسخه قبلی ASP از آن استفاده می گرديد) رابط های جديدتر و کامل تر ی را با نام IHttpheandler و IHttpmodule را ارائه نموده است .
    ▪ ASP.NET از امکانات و پتانسيل های موجود در دات نت و CLR بمنظور افزايش کارائی برنامه ها بخوبی استفاده می نمايد. تمامی کدهای ASP.NET ترجمه می گردنند( تفسير نمی گردنند) در ASP.NET می توان ماژول هائی را که ارتباطی با برنامه ندارند حذف نمود(factorable) . ASP.NET از سرويس های پيشرفته Caching برای افزايش سرعت و کارائی برنامه ها بخوبی استفاده می نمايد. ASP.NET بهمراه يک شمارنده برای سنجش ميزان کارائی عملکرد برنامه ها ، ارائه شده است . شمارنده فوق اين امکان را فراهم می آورد که پياده کنندگان و مديران سيستم يک برنامه دات نت، عملکرد شاخص های لازم برای افزايش کارائی برنامه ها را مشاهده ، بررسی ودر صورت لزوم تجديد نظرهای لازم را اعمال نمايند.
    ▪ اشکال زدائی برنامه های نوشته ASP.NET بکمک ديباگر براحتی انجام خواهد گرفت .در اين حالت می توان با افزودن چندين خط ديباگ در يک صفحه وب نقطه بروز اشکال را بسرعت و بسادگی تشخيص و در نهايت برطرف نمود. ASP.NET در اين راستا کلاس جديدی با نام TraceContext را ارائه نموده که پياده کنندگان در زمان نوشتن برنامه ،قادر به درج دستورات خاص ديباگ در برنامه برای رديابی خطاهای احتمالی خواهند بود.دستورات فوق صرفا" در زمانی که امکان Tracing فعال شده باشد( برای يک صفحه وب و برای تمام برنامه ) ،اجراء خواهند شد.
    ▪ دات نت و ASP.NET دارای امکانات لازم برای Authorizaing و Authentication مناسب برای برنامه های تحت وب می باشند. امکانات فوق را می توان بسادگی اضافه و يا با ساير مدل های موجود و مورد نظر جايگزين نمود.
    ▪ مقادير مربوط به تنظيمات و پيکربندی برنامه های ASP.NET در فايل های XML ذخيره می گردنند با توجه به ماهيت فايل هائی از اين نوع خواندن و نوشتن درون آنها بسادگی انجام خواهد يافت . هر برنامه می تواند دارای يک پيکربندی مجزاء بوده که در ادامه حيات برنامه و با توجه به نيازهای مطرح شده اعمال تغييرات بسادگی انجام خواهد گرفت .
    ▪ برنامه های ASP.NET همانند ساير برنامه های تحت وب از مجموعه ای فايل با نوع های متفاوت و دايرکتوری تشکيل می گردند.اين فايل ها می توانند صفحات ASP.NET ،کنترل های کاربر (User Controls) ، فايل های سرويس های وب و فايل های تنظيمات و پيکربندی و اسمبلی باشند.



:: موضوعات مرتبط: , ,
:: بازدید از این مطلب : 1680
|
امتیاز مطلب : 11
|
تعداد امتیازدهندگان : 4
|
مجموع امتیاز : 4
تاریخ انتشار : دو شنبه 9 خرداد 1390 | نظرات ()
نوشته شده توسط : سایت رسمی حسابداری و حسابرسی

در اين بخش قرار بود كه در رابطه با فريمورك های مختلف ارائه شده  جهت بكارگيری فناوری Ajax  آشنا شويم . ولی به دليل درخواست تعداد زيادی از خوانندگان مبنی بر آشنائی بيشتر با معماری Ajax ، برنامه نويسی غيرهمزمان در برنامه های وب و شی XMLHttpRequest  ، اين بخش را به بررسی موارد فوق اختصاص داديم تا علاقه مندان بتوانند قبل از پرداختن به اصل موضوع با برخی مفاهيم كليدی و مهم بيشتر آشنا شوند .

مقدمه
Ajax يك رويكرد و يا الگوی جديد برای پياده سازی برنامه های وب است كه در آن از اسكريپت های سمت سرويس گيرنده برای مبادله داده با سرويس دهنده وب استفاده می گردد. رويكرد فوق باعث می شود كه صفحات وب بدون نياز به refresh كامل بتوانند بطور پويا بهنگام گردند ( رويائی برای پياده كنندگان برنامه های وب ) . مهمترين دستاورد رويكرد فوق ، ارتباط  بدون وقفه و پيوسته كاربران با برنامه های وب است .
برخی از كارشناسان بر اين اعتقاد هستند كه رويكرد فوق بيش از آن كه يك الگو باشد يك فناوری است . در واقع ،  Ajax  تركيبی از  مجموعه فناوری های مرتبط به هم است كه از آنها با يك نگرش جديد در جهت توليد نسل جديدی از برنامه های وب استفاده می گردد . 
نام بردن از فناورهائی كه در Ajax از آنها استفاده می گردد كار مشكلی نيست ولی مهم اين است كه بدانيم اين فناورها در كنار يكديگر به چه صورت كار می كنند و هر يك از آنها در Ajax دارای چه مختصاتی است .شكل 1 ، نحوه تعامل و ارتباط اين فناوری ها را از منظر مرورگر نشان می دهد .

عناصر Ajax
شكل 1 : عناصر Ajax
 

جاوا اسكريپت در Ajax دارای يك نقش محوری و تعيين كننده است و می توان آن را به منزله يك نيروی چسبنده در نظر گرفت كه ساير فناوری ها را با هم مرتبط می نمايد . زمانی كه يك برنامه به داده نياز داشته باشد ، از شی XMLHttpRequest به منظور ايجاد درخواست به سرويس دهنده استفاده می گردد . پس از برگرداندن داده توسط سرويس دهنده ، از فناورهای DOM  ( برگرفته شده از Document Object Model )  و CSS ( برگرفته شده از cascading style sheets  )  برای بهنگام سازی رابط كاربر مرورگر به صورت پويا استفاده می گردد .

برنامه نويسی وب غيرهمزمان 
حرف A موجود در Ajax از  Asynchronous گرفته شده است كه در زبان فارسی به غيرهمزمان و يا ناهمگام ترجمه می شود و بيانگر يكی از قابليت های مهم و كليدی الگوی برنامه نويسی Ajax است .  
در برنامه های وب سنتی ، تعامل كاربر با برنامه بطور پيوسته نبوده و در مقاطع زمانی خاصی لازم است كاربر در انتظار اتمام يك عمليات باشد . زمانی كه كاربر عمليات خاصی نظير كليك بر روی دكمه موجود بر روی يك فرم را انجام می دهد ، يك درخواست مبتنی بر پروتكل HTTP برای سرويس دهنده وب ارسال می گردد . در ادامه ، سرويس دهنده درخواست را پردازش ( به عنوان نمونه ، انجام برخی محاسبات و يا عمليات مرتبط با بانك های اطلاعاتی ) و نتايج توليد شده را در قالب يك صفحه وب با محتويات جديد برای سرويس گيرنده ارسال می نمايد .
نحوه عملكرد صفحات وب متاثر از ماهيت stateless بودن پروتكل HTTP است . با توجه به اين كه تمامی منطق برنامه معمولا" بر روی سرويس دهنده قرار می گيرد  ، نقش مرورگرها صرفا" نمايش بخش رابط كاربر و يا اصطلاحا" اينترفيس برنامه است . سرويس دهنده ، چرخه حيات يك صفحه وب را بطور كامل طی می نمايد و برای مرورگر تگ های HTML ، كدهای CSS  و ساير منابع مورد نياز را جهت بازخوانی و نمايش مجدد صفحه ارسال می نمايد . ماهيت فرآيند فوق بگونه ای است كه در دراز مدت نمی تواند رضايت خاطر كامل كاربران را  حداقل در سطح بخش رابط كاربر برنامه تامين نمايد . در اين مدل كاربران از يك الگوی  stop-start-stop تبعيت می نمايند . كاربران در برخی موارد و با توجه به شرايط حاكم بر برنامه بطور موقت و از روی ناچار ارتباط خود را با برنامه از دست داده و می بايست در انتظار بهنگام سازی صفحه وب درخواستی بمانند .
شكل 2 ، نحوه عملكرد برنامه های وب در يك فرآيند همزمان را نشان می دهد .


نحوه عملكرد برنامه های وب در يك فرآيند همزمان
شكل 2 : نحوه عملكرد برنامه های وب در يك فرآيند همزمان
( عدم تعامل كاربر با برنامه در زمان درخواست های HTTP )

در ASP.NET زمانی كه يك صفحه داده را برای خود و يا حتی صفحه ای ديگر ارسال می نمايد ، يك postback اتفاق می افتد . در حين اين فرآيند ، وضعيت جاری صفحه به همراه كنترل های موجود بر روی آن جهت پردازش برای سرويس دهنده ارسال می گردند . مكانيزم postback  با هدف تامين خواسته هائی نظير  نگهداشت وضعيت صفحه و كنترل های سرويس دهنده موجود بر روی آن دنبال می شود . فرآيند فوق گرچه در نهايت می تواند منجر به refresh صفحه وب و نمايش محتويات جديد برای كاربر گردد ولی هزينه انجام آن زياد خواهد بود چراكه اولا" يك حجم داده می بايست برای سرويس دهنده ارسال گردد و ثانيا" ارتباط منطقی كاربر با برنامه از بين خواهد رفت .

يك برنامه وب مبتنی بر Ajax با مدل و يا رويكردی متفاوت نسبت به آنچه اشاره گرديد ، كار می كند . در اين مدل ،  تعامل مستمر كاربر با برنامه  از طريق معرفی يك نماينده كه بين سرويس گيرنده و سرويس دهنده قرار می گيرد ، تامين می گردد . اين نماينده و يا agent ، با سرويس دهنده بطور غيرهمزمان ارتباط برقرار می نمايد ( از طرف سرويس گيرنده ) تا درخواست HTTP را ايجاد و آن را برای سرويس دهنده ارسال نمايد . وظايف نماينده فوق به اين نقطه ختم نمی گردد و مسئوليت بهنگام سازی صفحه پس از دريافت داده از سرويس دهنده نيز بر عهده وی می باشد .
در مدل غير همزمان ، Ajax engine توسط جاوا اسكريپت فراخوانده می شود تا داده مورد نظر را درخواست  نمايد . پس  ايجاد درخواست توسط Ajax engine و ارسال آن برای سرويس دهنده  و انجام پردازش های ضروری در سمت سرويس دهنده ، نتايج توسط Ajax engine دريافت و  بخش رابط كاربر برنامه متناسب با آن بهنگام می گردد .
شكل 3 ، نحوه عملكرد برنامه های وب در يك فرآيند غيرهمزمان را نشان می دهد .

نحوه عملكرد برنامه های وب در يك فرآيند غيرهمزمان
شكل 3 : نحوه عملكرد برنامه های وب در يك فرآيند غيرهمزمان
(ارسال درخواست های HTTP از طريق Ajax engine برای سرويس دهنده)

در هسته Ajax engine ، شی مهم و كليدی  XMLHttpRequest قرار دارد كه در ادامه با  آن بيشتر آشنا می شويم .

شی XMLHttpRequest
شی ‌  XMLHttpRequest  به منزله قلب برنامه نويسی Ajax مطرح می گردد چراكه شی فوق باعث می شود جاوا اسكريپت بتواند درخواست هائی را ايجاد تا برای سرويس دهنده ارسال و نتايج ارسالی از سرويس دهنده را نيز پردازش نمايد .
شی فوق اولين مرتبه و به صورت يك شی اكتيوايكس در Internet Explorer 5 عرضه گرديد و هم اينك از آن در  اكثر مرورگرها حمايت می گردد . ساير مرورگرها نظير Safari  ، Opera ، Mozilla و فايرفاكس پتانسيل های XMLHttpRequest  را به صورت يك شی ذاتی جاوا اسكريپت ارائه كرده اند ( در  IE 7.0 شی فوق بطور ذاتی در جاوا اسكريپت تعبيه شده است ) .
با توجه به اين كه تاكنون نسخه های مختلفی از شی فوق در مرورگرها پياده سازی شده است ، پياده كنندگان می بايست كد لازم به منظور تشخيص  نوع شی فوق را در زمان ايجاد يك نمونه از آن را در برنامه خود پيش بينی نمايند . برای تعيين نسخه در دسترس شی XMLHttpRequest می توان از روشی موسوم به " تشخيص شی " استفاده كرد .

ايجاد يك نمونه از شی XMLHttpRequest با توجه به نوع مرورگر

 var xmlHttp = null;
  if (window.XMLHttpRequest)     {     //IE7 , Mozilla  ,...
            xmlHttp = new XMLHttpRequest(); 
   } else if (window.ActiveXObject) {
       try{
           xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE 5.x, 6
        }
  catch(e) {}
 }

مثال
برای آشنائی با نحوه عملكرد شی فوق و برنامه نويسی وب غيرهمزمان ، در ادامه به بررسی يك نمونه مثال ساده خواهيم پرداخت . فرض كنيد قصد داريم يك درخواست غيرهمزمان به يك منبع موجود بر روی سرويس دهنده (در اين مثال خاص يك صفحه  html كه حاوی يك متن ساده است  ، صفحه  ArticleSummery.htm  ) را ايجاد نمائيم . صفحه فوق يك صفحه وب با حداقل اطلاعات و شامل يك متن ايستا است .

صفحه ArticleSummery.htm

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">
<
head>
   <meta content="text/html; charset=utf-8" http-equiv="content-type" />
   <title>تست برنامه نويسی وب غيرهمزمان title>
head>
<
body style="font-family: Tahoma;">
  <div>در اين مقاله با برنامه نويسی وب همزمان و غيرهمزمان آشنا شديم div>
body>
html>

 مسئوليت ارسال يك درخواست غيرهمزمان به تابع SendRequest سپرده شده است .

  ارسال يك درخواست غيرهمزمان

كد

مرحله

  function sendRequest(url) {
  if (xmlHttp) {
       xmlHttp.open("GET", url, true); // true = async

1

 فعال كردن ارتباط غيرهمزمان

 
       xmlHttp.onreadystatechange = onCallback;
   

2

نسبت دهی تابع callback

 
      xmlHttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
 
       xmlHttp.send(null);
     }
  }

3

 ارسال درخواست غيرهمزمان

توضيحات

    • متد sendRequest ،‌ يك پارامتر كه در واقع URL مربوطه به درخواست HTTP است را دريافت می نمايد .

    • مرحله اول : يك ارتباط غيرهمزمان ايجاد می گردد ( در نظر گرفتن مقدار true به عنوان سومين پارامتر در زمان فعال كردن ارتباط نشان دهنده يك ارتباط غيرهمزمان است ).

    • مرحله دوم : پس از مقداردهی اوليه ارتباط مورد نظر ، به خصلت onreadystatechange شی XMLHttpRequest يك تابع محلی با نام onCallback نسبت داده می شود . توجه داشته باشيد كه فراخوانی تابع فوق به صورت غيرهمزمان است . تابع Callback مشخص می نمايد كه چه زمانی درخواست تكميل و يا بهنگام شده است .

    • مرحله سوم : پس از مشخص كردن نوع محتوا در هدر درخواست ، با استفاده از متد Send شی XMLHttpRequest  ، درخواست HTTP برای سرويس دهنده ارسال می گردد .

 فراخوانی تابع  onCallback
هر مرتبه ای كه وضعيت ready تغيير می يابد ، از تابع callback جهت ايجاد يك درخواست غيرهمزمان استفاده می گردد . در مرحله نهائی ، وضعيت بررسی و بخش رابط كاربر به همراه محتويات برگردانده شده از صفحه ArticleSummery.htm ، بهنگام می گردد. 

فراخوانی تابع oncallback

كد

مرحله

     function onCallback() {
       if (xmlHttp.readyState == 4) {

1

 بررسی تكميل عمليات

 
        if (xmlHttp.status == 200){

2

مقدار 200 نشان دهنده انجام موفقيت آميز عمليات است

 
      var r = document.getElementById('results');
       r.innerHTML = xmlHttp.responseText;
}
 

3

 نمايش نتايج

   else {
  alert('Error: ' + xmlHttp.status);
}

توضيحات

    • وضعيت درخواست از طريق خصلت readyState برگردانده می شود .

    • مرحله اول : در صورتی كه مقدار خصلت readyState شی XMLHttpRequest برابر با مقدار 4 باشد ، درخواست به اتمام رسيده است .  

    • مرحله دوم : در ادامه ، پاسخ برگردانده شده از سرويس دهنده بررسی می شود تا اين اطمينان حاصل گردد كه همه چيز با موفقيت انجام شده است .مقدار كد وضعيت 200 مربوط به پروتكل HTTP  ،  نشان دهنده اين موضوع است كه درخواست با موفقيت انجام شده است .

    • مرحله سوم :  در نهايت  ،  خصلت  innerHTML مربوط به عنصر span متاثر از محتويات برگردانده شده ، بهنگام می گردد .

كد زير ، محتويات صفحه Ajax1.aspx را بطور كامل نشان می دهد .

صفحه   Ajax1.aspx

<%@ Page Language="VB" Culture="fa-IR" %>
<script runat="server">
script>
<
html xmlns="http://www.w3.org/1999/xhtml" dir="rtl" >
      <
head id="Head1" runat="server">
             <
title>نحوه استفاده از شی XMLHttpRequesttitle>
      head>
 <
body style="font-family: Tahoma">
  <form id="form1" runat="server">
     <div>
 
      <span id="results">بارگذاری صفحه ...span>
     div>
  form>
<
script type="text/javascript">
   var
xmlHttp = null;
   window.onload =
function() {
   loadXmlHttp();
   sendRequest(
"ArticleSummery.htm");
 }
 function loadXmlHttp() {
  
if (window.XMLHttpRequest) { // IE7, Mozilla, Safari, Opera, etc.
   xmlHttp = new XMLHttpRequest();
   }
else if (window.ActiveXObject) {
  
try{
    xmlHttp =
new ActiveXObject("Microsoft.XMLHTTP"); // IE 5.x and 6
  }
catch (e){}
  }
 }
 function sendRequest(url) {
 
if (xmlHttp) {
 
  xmlHttp.open("GET", url, true); // true = async
 
  xmlHttp.onreadystatechange = onCallback;
 
  xmlHttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
 
// Send request without any additional parameters
  xmlHttp.send(null);
  }
}
function onCallback() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200){
var r = document.getElementById('results');
r.innerHTML = xmlHttp.responseText;
 }
else {   // HTTP error
  alert(
'Error: ' + xmlHttp.status);
   }
 }
}
 script>
 body>
html>

شكل  4 خروجی مثال فوق را نشان می دهد .

 ايجاد يك درخواست Http غيرهمزمان توسط شی XMLHttpRequest
شكل 4 : ايجاد يك درخواست Http غيرهمزمان توسط شی XMLHttpRequest

در اين مثال با نحوه ايجاد يك درخواست HTTP غيرهمزمان توسط شی  XMLHttpRequest به صفحه ديگر موجود بر روی سرويس دهنده آشنا شديم . پس از اتمام درخواست ، كاربران صفحه نهائی را كه محتويات عناصر رابط كاربر موجود در آن (يك span ) به صورت پويا بهنگام شده اند ، مشاهده خواهند كرد .

خلاصه
در اين مقاله با برنامه نويسی وب همزمان و غيرهمزمان و نحوه عملكرد شی  XMLHttpRequest آشنا شديم . هدف از بيان موارد فوق ، صرفا" آشنائی  با الگوی برنامه نويسی وب مبتنی بر Ajax بود . تمامی داستان به اين نقطه ختم نمی شود و در مقالات آتی به ساير پتانسيل های Ajax به منظور پياده سازی برنامه های وب اشاره خواهيم كرد .



:: موضوعات مرتبط: , ,
:: بازدید از این مطلب : 1629
|
امتیاز مطلب : 17
|
تعداد امتیازدهندگان : 5
|
مجموع امتیاز : 5
تاریخ انتشار : دو شنبه 9 خرداد 1390 | نظرات ()