فرم هاي وب يکي از امکانات جديد ارائه شده توسط ASP.NET ، جهت طراحي و پياده سازي بخش رابط کاربر نرم افزارهاي تحت وب مي باشند . مهمترين ويژگي فرم هاي فوق ، قابليت برنامه نويسي بر روي آنها است . يک فرم وب اطلاعات مربوطه را براي کاربران صرفنظر از نوع مرورگر و دستگاه استفاده شده، فراهم مي کند.فرمت خروجي ايجادشده توسط فرم هاي وب ، شامل اغلب زبانهاي متکي بر پروتکل Http نظير: html ,xml, wml و ECMAScript(Jscript,JavaScript) است . در ادامه به بررسي برخي از ويژگي هاي مهم اين نوع فرم ها خواهيم پرداخت.
? صفحاتي هستند که بر اساس تکنولوژي ASP.NET ماکروسافت ايجاد و کدها بر روي سرويس دهنده اجراء و در ادامه بصورت پويا و اتوماتيک صفحات وبي توليد مي گردد که قابل استفاده براي مرورگرها و يا دستگاههاي سرويس گيرنده است .
? کاملا" سازگار با مرورگرها و موبايل مي باشند.يک فرم وب بصورت پويا و خودکار قابليت ها و توانائي هاي مرورگرها را از ابعاد متفاوت نظير Style, Layout و ... تشخيص داده و اطلاعات ارسالي را که متناسب با واقعيت هاي موجود است، ارسال خواهند کرد. وضعيت فوق با توجه به خواسته هاي طراحان مي تواند بسمت يک مرورگر خاص همگرا گردد يعني مي توان يک فرم وب را بگونه اي طراحي نمود که از قابليت هاي خاص يک نسخه خاص مرورگر استفاده نمايد.
? سازگار با هريک از زبانهاي حمايت شده در دات نت نظير #VisualBasic.NET, C و ...
? فرمهاي وب بر اساس چارچوب دات نت ايجاد مي گردند ،بنابراين از تمامي مزاياي چارچوب فوق نظير : محيط مديريت يافته ، امنيت نوع داده ها، توارث و ... بهره مند خواهند بود.
? کاملا" انعطلاف پذير مي باشند. طراحان مي توانند کنترل هاي لازم را خود طراحي و به آن اضافه نمايند.(User Control) .
اجزاي فرم هاي وب
در فرم هاي وب ، برنامه نويسي رابط کاربر به دو بخش مجزاء تقسيم شده است : عناصر ويژوال و منطق. عناصر ويژوال، صفحه فرم وب (Web Form Page) ، ناميده مي شوند.صفحه فوق شامل فايلي است که در آن تگ هاي Html ( ايستا) ، کنترل هاي سرويس دهنده ASP.NET و يا هر دو قرار خواهند گرفت . صفحه فرم هاي وب بعنوان محلي براي نگهداري متن هاي ايستا و کنترل هائي که قصد نمايش آنها را داشته باشيم، مطرح مي گردنند.
منطق مورد نظر براي صفحه فرم هاي وب شامل کدهائي است که از آنها براي ايجاد ارتباط متقابل با فرم استفاده مي گردد. منطق برنامه نويسي در يک فايل مجزاء نسبت به فايل رابط کاربر قرار خواهد گرفت . اين فايل اصطلاحا" "Code behind" ، ناميده مي شود. کدها را مي توان با استفاده از VisualBasic.Net و يا C# نوشت . انشعاب اين نوع فايل ها aspx.vb ( در صورت استفاده از VisuaBasic.NET) و يا aspx.cs ( در صورت استفاده از زبان c#) در نظر گرفته مي شود. شکل زير ساختار فايل هاي تشکيل دهنده يک فرم وب را نشان مي دهد.
کدهاي موجود در فايل هاي مربوط به فرم هاي وب پس از ترجمه بصورت فايل هاي .dll تبديل خواهند شد. فايل صفحه aspx ( بخش ويژوال فرم ) نيز با يک روش کاملا" متفاوت ترجمه خواهد شد.! اولين دفعه که کاربري درخواست يک صفحه aspx را داشته باشد ،ASP.NET بصورت خودکار يک فايل از نوع .Net Class را ايجاد که مسئوليت نمايش صفحه فرم وب را برعهده خواهد گرفت . فايل فوق در ادامه به.dll تبديل خواهد شد . کلاس ايجاد شده براي صفحه aspx خصايص خود را از کلاس مربوط به کلاس ايجاد شده کدها به ارث خواهد برد. زمانيکه کاربري درخواست صفحه اي را داشته باشد ،فايل هاي .dll بر روي سرويس دهنده بصورت اتوماتيک اجرا ء و خروجي Html را توليد خواهند کرد.
امکانات ارائه شده توسط فرم هاي وب
برنامه نويسي مبتني بر وب ، چالش هاي جديدي را در زمينه برنامه نويسي مطرح نموده است که قبلا" در محيط هاي سنتتي برنامه نويسي سرويس دهنده /سرويس گيرنده با آن مواجه نبوده ايم . در ادامه به برخي از چالش هاي فوق اشاره شده تا از اين رهگذر آماده شناخت عميق تر فرم هاي وب در زمينه نحوه برخورد با چالش هاي فوق شويم.
چالش هاي برنامه هاي مبتني بر وب
? پياده سازي يک رابط کاربر وب قدرتمند . طراحي و پياده سازي يک کاربر با چارچوپ پيچيده ،حجم بالاي محتويات پويا ،قابليت هاي ويژه جهت ارتباط متقابل با کاربر و ... با استفاده از تگ هاي Html بسيار مشکل و گاها" غيرممکن است . رابط کاربر مي بايست بسيار انعطاف پذير بوده تا بتواند با هر نوع مرورگر و هر نوع دستگاه براحتي و بدون بروز مشکل فعاليت نمايد.
? تفکيک سرويس دهنده و سرويس گيرنده . در يک برنامه تحت وب ،سرويس گيرنده( مرورگرها) و سرويس دهنده برنامه هاي متفاوتي بوده که حتي بر روي کامپيوترهاي متفاوت اجراء مي گردنند.( حتي داراي سيستم هاي عامل متفاوت مي باشند. ) . برنامه هاي فوق ، اطلاعات بسيار کمي را با يکديگر به اشتراک گذاشته و صرفا" قادر به ارتباط با يکديگر جهت تبادل اطلاعات ضروري با حجم بسيار ناچيز خواهند بود.
? Stateless Execution . زمانيکه سرويس دهنده وب درخواستي براي يک صفحه وب را دريافت مي نمايد ،در ابتدا صفحه درخواستي را پيدا کرده ،آن را پردازش و در نهايت آن را براي مرورگر ( متقاضي ) ارسال خواهد کرد. پس از ارسال، تمامي اطلاعات مرتبط با صفحه درخواست شده حذف خواهند شد.در صورتيکه کاربر مجددا" درخواست همان صفحه را از سرويس دهنده داشته باشد ،سرويس دهنده مي بايست تمامي عمليات فوق را مجددا" تکرار نمايد. بدين ترتيب مي توان گفت که در حافظه سرويس دهنده ، هيچگونه اثري از عمليات بر روي صفحات پردازش شده قبلي ثبت و ضبط نخواهد شد.
? قابليت هاي ناشناخته سرويس گيرنده . برنامه هاي تحت وب براي تعداد کاربران متعدد که از مرورگرهاي متفاوتي استفاده مي نمايند ، طراحي و پياده سازي مي گردنند. مرورگرها داراي قابليت هاي متفاوت بوده و همين امر ايجاد يک نرم افزار را که تحت هر مرورگري اجراء و عملکرد يکساني را از بعد منطق و شکل ظاهري داشته باشد، مشکل مي نمايد.
? پيچيدگي در دستيابي به داده ها . خواندن و نوشتن داده ها در يک بانک اطلاعاتي با اتکاء بر روش هاي سنتي استفاده شده در برنامه نويسي تحت وب تاکنون ، کار مشکلي بنظر آمده و مستلزم بکارگيري مجموعه اي وسيع از منابع خواهد بود.
? پيچيدگي در Scalability . در اغلب موارد برنامه هاي طراحي شده تحت وب با استفاده از متدهاي موجود در رابطه با اهداف scalability ، بدليل عدم سازگاري بين اجزاء متفاوت يک نرم افزار موفق نبوده اند.
فرم هاي وب و تکنولوژي ASP.NET با علم به چالش هاي گفته شده ،راهکارهاي زير را ارائه نموده اند:
? استفاده از يک محيط همگن و اشياء مستحکم . با توجه به مدل اشياء ارائه شده توسط ASP.NET ، مي توان اين تصور را داشت که فرم ها بعنوان يونيت ( واحد) در نظر گرفته مي شوند نه بعنوان بخش هاي مجزاي سرويس دهنده / سرويس گيرنده . در مدل فوق مي توان فرم ها را برنامه نويسي و صفات مربوط به عناصر موجود بر روي فرم را تغيير و در صورت لزوم پاسخ لازم را به يک رويداد خاص داد.
? مدل برنامه نويسي Event-Driven . فرم هاي وب باعث استفاده از تکنولوژي آشناي نوشتن Event-handler براي برنامه هاي تحت وب شده اند. در اين مدل پس از تشخيص بروز يک رويداد بر روي سرويس گيرنده ،متد مربوطه بصورت خودکار فراخواني خواهد شد. فرم هاي وب امکان نوشتن کدهاي ساختيافته براي برخورد با رويدادهاي مورد نظر را فراهم مي کنند.
? مديريت وضعيت برنامه . فريمورک صفحات ASP.NET بصورت خودکار عمليات مربوط به پشتيباني از وضعيت فرم مورد نظر را برعهده گرفته و آن را کنترل خواهد کرد.بدين ترتيب با استفاده از روش هاي موجود، مديريت و پشتيباني از وضعيت يک فرم بسادگي بوجود خواهد آمد.عمليات فوق بدون استفاده زياد از منابع سرويس دهنده انجام و مي توان آن را بکمک ارسال Cookie و يا بدون ارسال Cookie پياده سازي نمود.
? برنامه هاي مستقل از مرورگر. فريمورک صفحات ASP.NET براي ايجاد تمامي منطق برنامه بر روي سرويس دهنده ، امکانات لازم را ارائه خواهد نمود. بدين ترتيب از نوشتن کدهاي اضافه در يک برنامه ممانعت بعمل آمده و برنامه نوشته شده مستقل از نوع مرورگر خدمات محوله را در اختيار کاربران قرار خواهد داد.
? حمايت از CLR . فريمورک صفحات ASP.NET يک تکنولوژي از نوع ASP.NET است. ASP.NET بر اساس چارچوب هاي دات نت ايجاد شده است ، بنابراين تمامي فريمورک براي هر برنامه ASP.NET قابل دستيابي و استفاده خواهد بود. برنامه ها را مي توان با استفاده از هر يک از زبانهاي برنامه نويسي حمايت شده در دات نت نوشت. دستيابي به داده ها در بانک اطلاعاتي با توجه به ايجاد بستر لازم توسط دات نت، از طريق بکارگيري ADO.NET انجام خواهد شد.
? فريمورک صفحه ASP.NET اين امکان را فراهم مي نمايد که يک برنامه را بر روي سيستمي با يک پردازنده و يا چندين پردازنده اجراء نمود در اين حالت نيازمند اعمال تغييرات زيادي در منطق برنامه ها نخواهد بود.