تحقیق در مورد Asp.net


در حال بارگذاری
14 سپتامبر 2024
فایل ورد و پاورپوینت
2120
3 بازدید
۷۹,۷۰۰ تومان
خرید

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 تحقیق در مورد Asp.net دارای ۱۰۰ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد تحقیق در مورد Asp.net  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی تحقیق در مورد Asp.net،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن تحقیق در مورد Asp.net :

مقدمه
با ظهورASP.NET شاهد تحول در زمینه روشهای مرسوم اسکریپت نویسی به سوی برنامه نویسیکاملا حرفه ای هستیم. بدون تردید نمی توان پذیرش گسترده .NETاز سوی جامعه تولید کنندگان نرم افزار را انکار نمود. و این خود ثابت می کند که .NETدارای چارچوب قدرتمند برنامه نویسی می باشد.
حداقل چیزی که در مورد .NET می توان گفت اینست که .NET روشی نرم افزاری است که به هرکسی قابلیت کد نویسی به هر زبانی را می دهد که با چارچوب آن مطابقت داشته باشد.

۱ ) تاریخچه ASP

پیشینه ASP به سال ۱۹۹۵وشرایط ویژه ای باز می گردد که در آن شرکت مایکروسافت دریافتبه علت عدم شمول اینترنت در برنامه های خود از تحولی بنیادین در این صنعت باز مانده است.تا آن زمان این شرکت به دنبال تهیه وتولید ابزار و پروتکل های اختصاصی خود برای شبکه مایکروسافت بود ولی ناگهان با نیاز به استراتژی اینترنت مواجه گردید.
مایکروسافت توانست خود را از شرایطی که از بقیه عقب افتاده بود به شرایطی تقریبا” مقتدرانه نزدیک کند وبا کمک مرورگر وب Internet Explorer کنترل شدیدی برروی بازار مرورگر وب بدست آورده وسرور اطلاعات اینترنت Internet information server (IIS)را در ۱۰۰شرکت نصب نمود.

منشأ ASP
اگر به اواسط دهه نود باز گردیم می بینیم که در آن زمان انتخاب زیادی برای ابزارهای تولید وب در اختیار برنامه نویسان وب وجود نداشت که می خواستند سایت وب خود را به مکانی مناسب برای تجارت تبدیل کنند. این گزینه ها در سیستم عامل و برنامه های برنامه نویسی سمت سرور و ابزارهای تولید رومیزی برای تولید راه حلها در دسترس بودند. در پایان برنامه نویس باید برنامه های Common Graphic Interface (CGI) را به کار می برد. در این برنامه ها از زبانهای کامپایل شدهای چون دلفی و ویژوال بیسیک یا زبانهای اسکریپت نویسی تفسیر شده ای مثل پرل یا رکس و اسکریپت های لایه سیستم عامل مانند UNIX استفاده می گردید.
در اوایل سال ۱۹۹۶مایکروسافت اولین تلاش خود را برای بهبود وضعیت موجود انجام داد. بدین منظورفن آوری رابط برنامه نویسی کاربردی سرور اینترنت Internet Server Application Programming Interface (ISAPI) را به عنوان بخشی از سرور اطلاعات اینترنت در نظر گرفت. ISAPI حاصل توسعه Win32 API ویندوز می باشد.
این فن آوری به عنوان روشی برای تولید نرم افزار سرور وب تهیه گردیده بود. در واقع هدف از تولید
این نرم افزار افزایش پنج برابر کارایی سیستم بوده است. با افزایش کارایی فوری تاثیرات جانبی حاصل می شود که موجب افزایش پیچیدگی برنامه نویسی برای برنامه نویس می گردد. بروز این مسأله به علت ضعف برنامه نویسان نبود بلکه برای عملکرد درست برنامه های ISAPIبه دانش برنامه نویسی دقیقتر نیاز بود. در همین حال مایکرو سافت برنامه نویسان را به سوی پذیرش فن آوری اتصال پایگاه داده اینترنت Internet Database Connector(IDC) تشویق می کرد.
تمامی برنامه نویسان وب مهارتهای برنامه نویسی لازم برای نوشتن نرم افزارهای ISAPI را نداشتندو چون ISAPI به کامپایل برنامه ها نیازمند بود مراحل زیادی در تولید سایت وجود داشت که سبب کندی روند برنامه نویسی می گردید.
برنامه های ویژوال بیسیک در صورت به کارگیری CGI بسیار ضعیف عمل کرده و تمام منابع را در اختیار خواهند گرفت. زبانهای دیگر از جمله پرل برای آغاز یک برنامه خط دستور جداگانه و به منظور تفسیر اجرای اسکریپتهای درخواست شده به سرور وب نیاز دارند که این امر موجب افزایش زمان بارگذاری صفحه و کاهش کارایی سرور خواهد شد.
CGI خود تمام منابع را در اختیار می گیرد چون درخواست هر صفحه سرورهای وب را وادار می کند تا فرایندهای جدید را متوقف نموده و از طریق این فرایند ها ارتباط را برقرار نمایند.این امر موجب اتلاف وقت و مصرف حافظه با ارزش RAMمی گردد. مشکل دیگری که فراروی تیم برنلمه نویسی در اواسط دهه نود وجود داشت این مسأله بود که سایت در واقع ترکیبی از HTML و منطق است. آنها به روشی برای ادغام کد برنامه نویسان با قسمت طراحی صفحه بدون ایجاد آشفتگی نیاز داشتند.
ایجاد قابلیت محاوره ای که بتواند از سوی پایگاه داده حمایت شود نیز چالش دیگری فراروی برنامه نویسان بود.
تقاضا برای سایتهای وب پیچیده آغاز شده بود و برنامه نویسان به منظور رفع تقاضا به روشی قابل مدیریت نیاز داشتند ولی ابزارهای موجود سهولتی برای انجام این کار ایجاد نمی کردند.
آنچه که لازم بود فن اوری ساده ای مبتنی بر متن و دارای اسکریپت همانند پرل بود که برنامه نویسان بتوانند صفحات خود را بدون نیاز به کامپایل و با کمک ابزار ساده ای مانند Notepad ایجاد کنند.این روشباید در عین حفظ کارایی به حداقل منابع نیاز داشته باشد.این روش برای اینکه بتواند با استقبال مواجه شود می بایست زبانی را اجرا نماید که به راحتی بتوان آن را آموخت و برای بسیاری از تولید کنندگان آشنا باشد.
در همین زمان بود که مایکروسافت تکنولوژی صفحات فعال سرور ) (ASP را ارائه نمود.

نیاز به مدل جدید ASP
واضح بود که مایکروسافت به تغییری اصولی برای رساندن ASPبه سطح استاندارد برنامه نویسی قدرتمند و صنعتی نیاز داشت. صفحات فعال سرور فن آوری مبتنی بر اصول COMاست . فنآوری COM و ActiveX بخش مهمی از قدرت ASP را فراهم می کنند ولی محدودیت هایی نیز برای آن خواهند داشت.
مایکروسافت باید تلاش زیادی در جهت بررسی COM و یافتن روشهای بهبود آن انجام می داد و این تغییرات می بایست بر روی ASP نیز تأثیر بگذارند. در همان زمان مایکروسافت دریافت که زمینه کاری برنامه نویسان تغییر یافته است و بر اساس استاندارد های جدید که هر لحظه عرضه می شوند به ویژه در نرم افزارهای توزیع یافته و اشتراک اطلاعات همچون Simple Object Access Protocol (SOAP) و XML_PRCکه در آنها از XMLاستفاده گردیده تجدید می شود.
خدمات وب متداول گردید جاوا در همه جا دیده می شد و XML محبوبیت زیادی در میان تولید کنندگان یافته بود. نسخه جدیدی از ASP برای رفع این نیازها کفایت نمی کرد . اگر تغییرات فقط به قصد شکست دادن حریف نبودند و می توانستند در مقابل این چالشهای سخت مقاومت نمایند, آنگاه بسیار دور از دسترس به نظر می رسیدند.
Windows DNA و ASP که بر پایه فن آوری های Win32 API و COM اوایل دهه نود بودند نمی توانستند معماری فنی و منطقی برای نرم افزارهای توزیع یافته جدید فراهم نمایند در حالی که شرکت SUNبا استفاده از Java 2 Enterprise Edition (J2EE) مجموعه ای از فن آوری هایی را در اختیار داشت که برنامه نویسان می توانستند با دنبال نمودن آن پروژه های کوچک را همراه با Standard Edition آغاز نموده و
آنها را برای Enterprise JavaBeans کاملأ تغییر اندازه دهند.
در دنیای امروز تنها رقابت برای مرورگرهای مختلف دیده نمی شود بلکه رقابت در بخشهایی چون کانالهای توزیع , روشهای اجرا در کامپیوتر ها و;وشاید برای تبدیل صفحات وب به نرم افزارها و خدمات وب یک بار مصرف نیز وجود دارند. بدون تردید در حالی که مایکرو سافت در حال بررسی پیرامون فن آوری های مخصوص خود می باشد,باید رقابت را نیز در نظر بگیرد.همانطور که مایکروسافت چارچوب کاری .NET را عرضه نمود,زبان جدیدی را نیز برای قرن بیست و یکم تحت عنوان C#.NETمعرفی کرد و روشی کاملأ جدید برای ساخت نرم افزارها و وب فراهم ساخته و برای هر چیز موجود شامل ویژوال بیسیک و ویژوال ++C و صفحات فعال سرور جایگزین قرار داده اند.
در جولای ۲۰۰۰ .NET اولین اعلان عمومی خود را منتشر نموده و زبان جدید خود C# را در معرض نمایش قرار داده و نوید ارائه عملکرد بهتر و انعطاف پذیری بالاتر را نسبت به گذشته و پشتیبانی از انواع مختلف استاندارد های اینترنت را داد.

مروری بر اصول محیطی ASP.NET

مایکروسافت با ارائه ASP و زبانهای قدیمی تر خود به صورت .NET در قرن بیست و یکم قدم مهمی برداشته است. ASP.NET که از VB.NET بهره می برد اکنون به برنامه ای کاملأ کار آزموده و شی گرا برای تولید نرم افزارهای وب تبدیل شده و بهبود های زیادی را موجب گردیده است. ولی زبانهایی که از گذشته به ارث رسیده اند نمی توانند به اندازه .NET ابتکار عملی جامع داشته باشند به همین علت مایکروسافت زبان جدیدی تحت عنوان C#برای چارچوب .NET تهیه نمود.
C# درعین اینکه برای برنامه نویسان C دارای امکانات آشنایی می باشد ولی جدید است دارای برخی خصایصRAD نیز بوده و به همین علت مورد توجه برنامه نویسان ویژوال بیسیک نیز می باشد.بعضی می گویند که C#زبان ارائه شده از سوی مایکروسافت برای رقابت با Java می باشد.

بعضی از نکات کلیدی در موردASP.NET عبارتند از :
ASP.NET بخشی کلیدی از Microsoft.NET یا برنامه ای جدید برای تولید نرم افزار می باشد.
.NET در واقع یک معماری کاربردی برای جایگزینی مدل ویندوزDNA و همچنین مجموعه ای از خدمات, ابزارها, نرم افزارها و سرورها بر پایه چاچوب کاری.NET و زبان اجرای مشترک می باشد.
ASP.NET به جای اینکه جایگزین ASP4 یا نسخه ارتقاء یافته تدریجی آن باشد از پایه بازنویسی شده است.
ASP.NET می تواند از هر آنچه که توسط .NET ارائه می شود از جمله پشتیبانی از تعداد بیست یا بیشتر زبان ( ازC# گرفته تاPerl.NET ) و مجموعه کامل کتابخانه های نرم افزاری چارچوب کاری.NET بهره ببرد.
نرم افزارهای وب نوشته شده درASP.NET سریع, کارآمد, قابل مدیریت, مقیاس پذیر و انعطاف پذیر هستند و درک و کد نویسی آن ها نیز بسیار ساده می باشد.
تمامی اجزاء و نرم افزارهای وب کامپایل می شوند . اشیاء .NET همگی به زبانهای یکسانی نوشته شده و همه آنها عملکرد یکسانی دارند در نتیجه به دلایل اجرایی نیازی به ترک محیط ASP وجود ندارد.
نیاز کمتری برای استفاده از اجزای ثالث وجود دارد با نوشتن فقط چند خط کد می توان ارتباط میانASP.NET وXML را برقرار نموده و یا شرایطی ایجاد نمود که ASP.NET به عنوان نوعی از خدمات وب عمل کرده یا از آن استفاده نماید فایلها را منتقل کند یا صفحه سایتی را از راه دور پاک نماید یا تصویری بر روی آن ایجاد کند.

استفاده از انعطاف پذیری ASP.NET

با استفاده از ASP.NET امکان انتخاب زبانها را خواهیم داشت. تمامی زبانهای.NET به کتابخانه های کلاس اصلی یکسان, انواع یکسانی از سیستمها, قابلیتهای مساوی از نظر جهت یابی و ارث بری اشیاء و قابلیت عملکرد کامل با اجزاء COM موجود, دسترسی دارند.
ما می توانیم از آگاهی و کد نویسی یکسانی برای هر کاری از تولید وب تا ایجاد اجزاء یا سیستمهای بزرگ استفاده نماییم. برنامه نویسان هیچ نگرانی بابت اختلافهای موجود میانAPI ها و تبدیل انواع متغیر ها یا حتی نصب و راه اندازی نخواهند داشت.
در ASP.NET تمامی استانداردهای مهم امروزی مانندSOAP وXML به علاوهADO.NET و کتابخانه های کلاس اصلی ترکیب شده اند و پیاده سازی آن ها نسبت به سایر فن آوری ها حتی جاوا بسیار ساده تر خواهد بود.
یک برنامه نویس ASP.NET فقط به کامپیوتری که دارایNotepad و قابلیت FTPمیباشد برای نوشتن کدASP نیاز دارد ولی امروزه با استفاده از ابزار خط دستور چارچوب کاری.NET و پیکربندی های مبتنی برXML برنامه ها این عمل دقیقتر انجام می شود.
مایکروسافت امکانات بسیار قدرتمند کلاسهای کتابخانه چون توابع قابل استفاده در شبکه برای عملکرد با پروتکل کنترل مخابره پروتکل اینترنت(TCP/IP ) و سیستم نام حوزه ( DNS ) و خدمات وب و داده XML و به تصویر کشیدن تصاویر گرافیکی را در چارچوب کاری .NET در نظر گرفته است.
در گذشته منظور از محدودیتهای اسکریپت نویسی ASP اجزاء بود که بنا به دلایل مربوط به عملکرد و نه دلایل معماری مورد نیاز بودند.ASP.NET به عملکرد یکسانی دسترسی داشته و از زبانهای یکسانی برای تولید اجزاء استفاده می کند در نتیجه اکنون اجزاء را می توان انتخابی از لحاظ معماری دانست.
یک برنامه نویس نسبت به تغییرات انجام گرفته در زمینه سیستم عامل وAPI محافظت می شود و از آنجایی که فن آوریهای.NET در رابطه با نحوه پیاده سازی کد های ما می باشندبا استفاده ازCommon Type System دیگر نگران پیاده سازیهای مختلف یک رشته یا عدد صحیح در زبان مورد استفاده خود نیستیم.

نوشتن برنامه های کاربردی ASP.NET

در نسخه های قبلیASP نصب و راه اندازی نرم افزار به برنامه ریزی دقیقی نیاز داشت به خصوص در شرایطی که سیستم بزرگ و پیچیده بود.این امر به علت وجود عوامل مختلفی چون نیاز به انتقال, نصب ,ثبت اجزاء تولید شده, لزوم متوقف ساختن و آغاز سرور وب و تضمین بابت اینکه نسخه درست را در اختیار داریم دیده می شد.
ما مجبور به پیکربندی سرور وب از طریق کنسول مدیریت مایکروسافت یا ابزار خط فرمان بودیم که بعضی اوقات ما را مجبور به متوقف ساختن و آغاز دوباره خدمات می کرد. اما با استفاده ازASP.NET تمامی این موارد ساده شده است . فایل هایASP , اجزاء و گزینه های پیکربندی همگی فایلهایی هستند که آنها را با هم منتقل می کنیم. نیازی به ثبت به اجزاء نیست و ما می توانیم با استفاده از فایلهای متنی در قالبXML تغییرات پیکربندی را مشخص کنیم.ASP.NET از طریق ایجاد قابلیت میزبانی برای نسخه های مختلف یک جزء بر روی یک سیستم وابستگی های نسخه های نرم افزاری را نیز ساده کرده است.

تبدیل کد به زبانهای متعدد

ASP.NET و چارچوب کاری.NET ارائه شده از سوی مایکروسافت شامل سه زبان اصلیJScript.NET وC#.NET وVB.NET می باشد.
C# همانندJ++ mark 2 توصیف شده است ولی در واقع بسیار فراتر از آن است.C# را در حقیقت بایدC++ ای دانست که از ابتدا تهیه شده است.مشکلات کاملا مستند شده اندتنها نکته ای که باید به آن اشاره نمود این است که در C++ شی گرایی آخرین راه حل انتخابی بوده است در حالیکه در C# این مسئله به عنوان پایه در نظر گرفته شده است.تمامی عملکردها و پشتیبانی از چارچوب کاری NET. برای همه زبانهای آن فراهم گردیده و علاوه بر این اشیایی که دریک زبان نوشته می شوند تحت هر زبان دیگری قابل استفاده و توسعه بوده و به ارث می رسند. این قابلیت مفهومی بسیار قدرتمند بوده و نظریه عدم وابستگی زبان را مطرح می کند. این قابلیت از طریق فنآوریCommon Language Runtime قابل دستیابی می باشد.
CLRکد زبان.NET را دریافت نموده و آن را به زبان واسطه ای مایکروسافت ( MSIL ) تبدیل می کند. سپس این زبان واسطه به کد دودویی ویژه دستگاه مقصد کامپایل می شود.
چگونه سرورهای وب فایلهایASP.NET را اجرا می کنند؟
هنگامی که بازدید کننده سایتی آدرس یک صفحه وب را درخواست میکند مرورگر با سرور وب مشخص شده در آدرسURL تماس برقرار نموده و درخواستی را برای صفحه ای که در درخواستHTTP به صورت فرمول عنوان شده و به سرور وب فرستاده شده می فرستد.سرور وب به محض دریافت درخواست نوع فایل درخواستی را معین نموده و پردازش را به سرور رسیدگی کننده اختصاصی عبور می دهد. فایل هایASP.NET در صورت لزوم به کلاسهای صفحات.NET کامپایل شده و سپس اجرا می شوندو نتایج به مرورگر کلاینت فرستاده خواهد شد.
کامپایل نمودن به این معنی است که در بارگذاری اول برنامه های ASP.NETبه مدت زمان بیشتری برای نمایش ( در مقایسه با نسخه های قبلی ) نیاز می باشد ولی زمانی که کامپایل می شوند نمایش آنها به میزان قابل توجهی سریعتر انجام می گیرد.

محاوره میان کلاینت و سرور

برنامه هایASP.NET ترکیبی از نشانه گذاری سمت کلاینت و کد و پردازش در سمت سرور می باشند. هنگامی که یک صفحه فرم وبASP.NET بر روی مرورگر وب بازدید کننده ای بارگذاری می شود کد اضافی درون نسخه های قدیمیASP قرار می گیرد. این کد اضافی عملکرد فرم را که شامل رویدادهای سمت کلاینت و سرور, بررسی درستی و قابلیت حفظ وضعیت مقدار فرم می گردد را افزایش می دهد سرور, نوع مرورگر بازدیدکننده را تعیین نموده و نشانه ای برای مقایسه قابلیتهای مرورگر ارسال می کند.
بعضی از محاوره های کلاینت درون مرورگر بازدیدکننده انجام می شوددر حالیکه برخی دیگر به اطلاعاتی نیاز دارند که باید برای پردازش به سمت سرور فرستاده شوند.
به محض دریافت پاسخهای فرم مقادیر فرم در قابلیت جدید از ASP.NET به نام”State Bags” نگهداری شده و به یک عنصر مخفی فرم که شامل”View State” صفحه می باشد خلاصه می گردد. این قابلیت شرایطی را فراهم می کند تا عناصری فرمی که مورد محاوره بازدید کننده قرار گرفته اند همان مقادیر را حین ارسال صفحه دارا باشند. همان طور که در شکل ۱ دیده می شود مرورگر می تواند فرم اطلاعاتی را درخواست نموده و با استفاده از دو متدHTTP به نامهایPOST وGET اطلاعات را به سمت سرور ارسال نماید.

Post Get

شکل ۱- چگونگی ارتباط میان کلاینت و سرور

پردازش سمت سرور ASP.NET

زمانی که سرور یک درخواست را دریافت می کند با استفاده از اطلاعات مسیر مشخص شده صفحه مورد درخواست را می یابد و سیستم مربوطه صفحه را پردازش خواهد کرد.در صورت استفاده ازASP قدیمی فعالیت زیادی در این فرآیند انجام نمی گیرد فقط مقدار معینی مخفی سازی صورت می پذیرد.همانطور که در شکل ۲ دیده می شود با به کارگیریASP.NET این فرآیند با فعالیت بیشتری همراه بوده ولی تحویل و پردازش آن سریعتر انجام می پذیرد.

Request

Yes

No

شکل ۲- فرآیند تحویل و کامپایل در سمت سرور

سرور با به کارگیری یک.dll ویژهASP.NET صفحهASP.NET را پردازش خواهد کرد. ASP.NET نیز همانند نسخه های قدیمی دارای مجموعه بزرگی از اشیاء می باشد که با اعمال معین پردازش مانند درخواست پایگاه داده ای, سیستم فایل و تهیه پاسخ سروکار دارند.
هنگامی که پاسخ کامل می شود به مرورگر کاربر بازگردانده خواهد شد. پاسخها معمولا به صورت فایلهایHTML هستند و مرورگر به محض رسیدن صفحه آن را به نمایش در می آورد.
یک فایل ASP.NET دارای پسوند .aspx است .معمولا این فایل حاوی عناصر, HTML کدهای سمت سرور و کدهای سمت کلاینت می باشد.همانطور که در شکل ۳ نشان داده شده است هنگامی که کاربری یک صفحه را درخواست می کند سرور آن را از دیسک بازیابی نموده وسپس آن را به ASPX Engine برای پردازش بیشتر می فرستد. ASPX Engine کدهای سمت سرور را کامپایل نموده و فایل کلاس صفحه را ایجاد می کند.سپس فایل کلاس را معرفی نموده و رهنمود لازم برای ایجاد شی پاسخ را اجرا می کند. در طی اجرای این مرحله سیستم رهنمود برنامه نویسی ( کد در سمت سرور ) را برای پردازش داده ارسال شده از سوی کاربر دنبال می کند.سرانجام سرور شی پاسخ را به کلاینت می فرستد.اگر بخواهیم مراحل مهم و اصلی پردازش یک درخواست برای صفحه ASPx را نام ببریم می توان مراحل را به صورت زیر در نظر گرفت :
• سرور درخواستی برای یک صفحهASPx را دریافت میکند.
• سرور محل صفحه را در دیسک پیدا می کند.
• سرور صفحه را به ASP.NET Engine می فرستد.
• ASP.NET Engine صفحه را کامپایل نموده و کلاس صفحه را ایجاد می کند.اگر کلاس قبلا بار شده باشد به سادگی ریسمانی به کلاس اجرایی فراهم می کند( به جای ایجاد دوباره کلاس ). در حین کامپایل نمودن ممکن است به کلاسهای دیگر کد مانند کلاسهای موجود تحت کد و کلاسهای جزء نیاز داشته باشد.این کلاسها در این مرحله اسمبل می شوند.
• ASP.NET کلاس را معرفی نموده و پردازش لازم را انجام داده و شی Response را ایجاد می کند.
• سپس سرور شی Response را به کلاینت می فرستد.

شکل ۳- مراحل اصلی در ارائه یک صفحه ASPX

کامپایل و تحویل صفحات ASP.NET

این فرآیند طی مراحل زیر انجام می گیرد :
۱ IISمیانURL مورد درخواست با فایل موجود در دیسک سخت مقایسه ای را انجام می دهد این مقایسه با ترجمه مسیر واقعی به مسیری نسبت به ریشه سایت صورت می پذیرد.
۲ هنگامی که فایل به دست آمد پسوند فایل(.aspx ) به فهرستی از انواع معین فایلها مقایسه می شود تا معین گردد که آیا فایل باید برای بازدید کننده ارسال شود یا برای پردازش فرستاده شود.
۳ اگر نسبت به زمانی که فایل آخرین تغییرات را متحمل شده این اولین بازدید از صفحه می باشد کدASP با استفاده از کامپایلرCommon Language Runtime به زبان اسمبلی کامپایل شده ( بهMSIL ) سپس برای اجرا به کد دودویی ویژه ماشین کامپایل می گردد.
۴ کد دوددویی یک.dll از کلاس.NET است که در یک محل موقتی ذخیره می شود.
۵ دفعه بعدی که صفحه درخواست می شود سرور بررسی می کند که آیا کد تغییر یافته است یا نه .اگر همان کد قبلی باشد آنگاه مرحله کامپایل حذف شده و کد کلاس کامپایل شده پیشین اجرا می گردد در غیر اینصورت کلاس حذف شده و منبع جدید دوباره کامپایل می شود.
۶ کد کامپایل شده اجرا گردیده و مقادیر درخواستی مانند فیلد های ورودی فرم یا پارامترهای URL تفسیر می شوند.
۷ اگر برنامه نویس از فرمهای وب استفاده کرده باشد آنگاه سرور می تواند بازدید کننده را شناسایی نموده و صفحاتی را که مطابق نیاز بازدید کننده مناسب سازی شده اند منتقل نماید.
۸ نتیجه به مرورگر وب بازدید کننده ارسال می شود.

ساختار یک فرم وب ASP.NET

یک فرم وب نوعی فنآوری ASP.NET است که از آن برای ایجاد صفحه وب قابل برنامه نویسی استفاده می کنیم. این فرم می تواند با استفاده از هر زبان نشانه گذاری اطلاعات را به کاربر نمایش دهد .نمایش در هر مرورگر امکانپذیر بوده و برای پیاده سازی منطق برنامه از کد روی سرور بهره می برد.در مستندات .NET مایکروسافت مشخصات زیر را برای فرمهای وب ارائه نموده است :
فرم بر اساس Common Language Runtime تهیه شده و در نتیجه محیط اجرایی مدیریت شده ای را به همراه ایمنی در تایپ, خواص وراثتی و انطباق پویا فراهم می نماید .این فرم را می توان با هر زبانی که رویCLR پشتیبانی می شود, نوشت.
فرم از ابزار ویرایش MYSIWYG و ابزار تولیدVS.NET پشتیبانی می کند
فرم از مجموعه کاملی از کنترلها پشتیبانی می کند که قابلیت لفاف بندی منطق صفحه به اجزایی با توانایی دوباره به کار گیری داده و امکان استفاده ساده از رویدادهای صفحه را فراهم می کند.
این فرم قابلیت جداسازی میان کد و محتویات را در صفحه می دهد.
این فرم مجموعه ای از خصوصیات مدیریت حالت را فراهم می سازد که مانع از مشاهده حالت صفحه میان درخواستها می گردد.
یک فرم وب می تواند شامل راهنماییهای لازم, اسکریپتهای سمت سرور, متون استاتیک, کنترلهای وب کنترلهای HTML و بسیاری موارد دیگر باشد.

۲ )مقدمه ای بر .NET C#
NET. تکنولوژی جدید مایکروسافت برای رفع مشکلات COM و برنامه نویسی تحت اینترنت است. قبل از شروع کار با NET. تصور برنامه نویسان، نسخه ای جدید از زبانهای موجود مانند VB با ++VC است اما NET. یک محیط برنامه نویسی جدید است که می توان گفت شباهتهای زیادی با محیط های قبلی دارد.
اگر چه برنامه های VB یا ++VC را می توان با تغییرات نسبتاً کم به محیط NET. انتقال داد، ولی اگر بخواهیم از توانائیهای NET. بهره مند شویم، چیزهای زیادی برای یادگیری و تغییرات زیادی در برنامه ها داریم (خصوصاً برنامه نویسان VB ).
NET. یک مدل شی گرا (Oriented Object) شامل صدها کلاس ارائه داده که عدم هماهنگی در محیط‌های ویندوز را از دید برنامه نویس مخفی می کند. براساس نسخه های مختلف ویندوز یک کلاس ممکن است برای توابع گرافیکی از GDI ،DirectX و یا Open GL استفاده کند و برنامه نویس نیاز به نگرانی در مورد این عدم هماهنگی ندارد.Security در داخل محیط NET. قرار داده شده و برنامه نویس یا حتی مسئول نصب و نگهداری برنامه می‌تواند اجازه دسترسی به منابع مانند فایلها یا registry را از داخل محیط برنامه و یا خارج آن به یک کاربر داده یاسلب کند (مسئول نصب یا Administrator این‌کاررا از طریق فایلهای Config انجام‌می دهد).
می توان به NET. به عنوان نسل جدید COM نگاه کرد اما در نحوه عمل آنها کاملاً متفاوت هستند. (لازم به ذکر است که مایکروسافت استفاده از COM را در محیط NET. پشتیبانی می کند هر چند که مشکلاتی هم در این زمینه وجود دارد) در NET. به جای Component ،‌اسمبلی داریم . هر اسمبلی می تواند علاوه بر کد. فایلهای دیگری نظیر html ،.gif. و یا حتی یک dll. دیگر را در خود جا دهد . اسمبلی با پسوندexe. یا dll. وجود دارد.
هر اسمبلی مانند COM یک Version دارد ولی در Registry ثبت نمی شود. مایکروسافت تاحدی به روش قدیمی خود یعنی فایلهای ini برگشته اما این بار از فایلهایXML برای ذخیره اطلاعات استفاده کرده. این فایلها می توانند اطلاعات را بصورت ساختار یافته ذخیره کنند. مسیر و تنظیمات تمام اسمبلی‌های یک برنامه در یک فایل Config که در شاخه اصلی برنامه و در کنار فایل اجرایی اصلی برنامه قرار دارد ذخیره می شود.
بنابراین شما می توانید یک برنامه و تمام اسمبلی های آنرا در یک شاخه و زیرشاخه های آن داشته باشید و نسخه دیگر برنامه به همراه اسمبلی های آنرا در شاخه دیگر. تنهاکاری که باید بکنید آن است که مسیر اسمبلی ها را در Config فایلها تعیین کنید و هر دو برنامه بدون هیچ تداخلی اجرا می شوند !
سوالی که ممکن است به ذهن برسد این است که با استفاده از Registry منبع مشترکی از Componentها داریم و نیازی نیست که یک نسخه COM را به صورت تکراری داشت. NET. این مسئله را با مفهوم Shared Assembly حل کرده. مسئله نصب نیز در محیط NET. بسیار ساده شده و همه عملیات نصب با یک Xcopy انجام می شود.
فایل Config اطلاعات دیگری نظیر نحوه نمایش خطاهای برنامه و یا تنظیمات Security را نیز در خود دارد. NET. مشکل Memory Leaking را با عوض کردن نحوه مدیریت object ها حل کرده است ودیگر خود یک شیء اطلاعاتی را که برای زندگی ویااز بین رفتنش احتیاج است، ذخیره نمی کند. تمام اشاره گرها تحت کنترل محیط اجرایی Net. وتوسط Garbage Collector آزاد می شوند. این کار در زمان پر شدن heap (حافظه اختصاص یافته به object ها) ونبود حافظه لازم برای object های جدید انجام می شود.

سرویسهای وب در .NET
این روزها در هر مقاله و متنی که اقدام به معرفی چهارچوب .NET نموده اند ، آنچه بیش از هر چیز به چشم می خورد سرویسهای وب می باشد و هر جا که به توصیف امکانات جدید .NET پرداخته شده ، امکانی که بیش از بقیه خودنمایی می کند و برگ برنده .NET خواهد بود سرویسهای وب آن است. من هم در پیروی از این روند ، توضیحاتی در مورد سرویس وب در .NET ارائه می دهم.
بدون شک با اشیاء و برنامه نویسی شیء گرا آشنا هستید. سرویسهای وب را می توانید مانند اشیاء نرم افزاری تصور کنید که دارای متدهایی هستند که می توان آنها را از هر نقطه بر روی اینترنت ( یا یک اینترانت داخلی ) صدا زد. هر برنامه کاربردی می تواند بدون در نظر گرفتن عوامل زیر متدها را فراخوانی کند:
• ماشین و سیستم عاملی که سرویسهای وب بر روی آن اجرا می شوند.
• ماشین و سیستم عاملی که برنامه فراخوان بر روی آن اجرا می شوند.
اگر با روش فراخوانی از راه دور (RPC) آشنا باشید می توانید سرویسهای وب را بصورت سکوی جهانی برای فراخوانی پروسه ها از هر نقطه ای روی اینترنت در نظر بگیرید.
سرویسهای وب بسیار انعطاف پذیر و در نتیجه محبوب خواهند بود ، زیرا اولاً از پروتکلهای استانداردی مانند HTTP – که برای ارسال و دریافت صفحات وب نیز کاربرد دارد – استفاده می کنند. ثانیاً از قالبهای استاندارد فایل مانند XML جهت نگهداری و ارسال اطلاعات بهره می برند. این دو ویژگی عمده همان استاندارد SOAP (Simple Object Access Protocol) را تعریف می کنند که استاندارد ارتباطی سرویسهای وب می باشد.
توجه کنید که این پیچیدگی و نو بودن سرویسهای وب و SOAP نیست که آنها را این قدر محبوب ساخته است. این سرویسها در واقع بسیار ساده هستند. در این جا باید خاطر نشان کرد که همین سادگی در وب ،
HTML و XML بود که آنها را به استانداردهای جهانی شبکه اینترنت تبدیل کرد و انتظار می رود همین اتفاق در مورد برای سرویسهای وب و SOAP نیز رخ دهد.
نام ویژگی توضیحات
BufferResponse قابل خواندن و نوشتن- مشخص میکند که پاسخ به این درخواست بافر شود یا خیر
CacheDuration قابل خواندن و نوشتن- مشخص میکند که پاسخ ،چند ثانیه در Cache نگهداری شود
Description توضیحی در مورد متد وب
EnableSession مشخص میکند که حالت Session برای متد وب فعال باشد یا خیر
MessageName نام منتسب به متد وب در داده های ارسالی به و دریافتی از متد (هنگام از Method OverLoading)
TransactionOption پشتیبانی از تراکنش برای یک متد وب
با استفاده از قابلیتهای دیگر چهارچوب .NET می توان عملکردهای دیگری به سرویس وب خود افزود و یا رفتار آن را تغییر داد. گرچه همه آنها را نمی توان در اینجا توضیح داد ولی یکی از جالبترین خصوصیات. کلاسWebMethodAttribute میباشد که در جدول زیر می توان ۶ خصوصیت قابل تغییر برای این کلاس را مشاهده کنید
ویژگیهای عمومی WebMethodAttribute
جهت ارائه توضیحات (Description) برای سرویس وب خود خصوصیت Description را به یک متن با معنی برای متد مورد نظر تغییر دهید. این متن بعداً به Metadata در سرویس وب شما که معروف به WSDL(Web Service Description Language) می باشد اضافه خواهد شد.
یک مشخصه ی دیگر به نام WebServiceAttribute نیز در همین فضای نامی وجود دارد که هدف آن کل کلاس می باشد و Description آن نیز در واقع توضیح کاری است که کلاس انجام میدهد.
[WebService(Description=”A simple Currency Converter Web Service.2 Methods”)]
public class CurrConv
{ …

با اعمال این تغییرات باید ببینیم که سرویس وب از بیرون چگونه به نظر می رسد و این یعنی آزمایش کردن سرویس وب و نوشتن یک برنامه کاربردی که از آن سرویس استفاده نماید.

۳ ) مقدمه ای بر C#
زبان برنامه نویسی C#محصول جدیدی از مایکروسافت است که در حال حاضر به عنوان مدرنترین زبان کامپیوتری شناخته میشود .این زبان، اولین زبانی است که برای .Net Platform طراحی شده و بسیاری از اجزای .Net نیز بدین زبان نوشته شده اند .مایکروسافت عنوان می کند نقشی که C/C++ برای ویندوز ایفا کرد، این بار C# برای .Net انجام خواهد داد. این زبان توسط واحد تحقیقات مایکروسافت به مدیریت اندرس هلزبرگ (Anders Hejlsberg) طراحی شده است. برنامه نویسان پاسکال، اندرس هلزبرگ دانمارکی را هیچ گاه از یاد نخواهند برد. او که در بورلند ۱۵ سال سابقه درخشان دارد و پاسکال را به زبان قدرتمندی به نام دلفی تبدیل کرده است، این بار در مایکروسافت قدرت تمام زبانهای برنامه نویسی را در C# جای داده است.
علت طراحیC#
زمانی که .Net Platform برای بهبود ساختار سیستم عاملها و همچنین افزایش قدرت آنها در شبکه به منظور حفاظت از سیستم طراحی می شد، معلوم شد که ساختار دستورات و نگارش زبانهای برنامه نویسی باید به طور کل تغییر کند. برای برنامه نویسان مایکروسافت دو زبان همه منظوره Visual Basic و Visual C++ وجود داشت .هر دوی این زبانها ریشه ای تاریخی در صنعت کامپیوتر دارند و طی سالهای گذشته دستخوش تغییرات بسیار به منظور مطابقت با سیستم عاملها و شبکه ها شده اند .ساختار .Net به گونهای ایجاب میکرد که این زبانها به منظور مطابقت با .Net Platformتغییرات اساسی یابند. از طرفی اعمال این تغییرات به دلیل ساختار قدیمی که زبانهای مذکور داشتند، مشکلاتی را برای برنامه نویسان به وجود می آوردند .به همین دلیل در مایکروسافت پیشنهاد طراحی زبان جدیدی داده شد که بتواند به طور کامل از ساختار .Net پیروی کرده و به آسانی و سرعت بتوان با آن برنامه نوشت. زبان C# فرزند دو زبان VC++و VBاستC# .از VC++قدرت و دستورات غنی و از VB آسانی و سرعت برنامه نویسی را به ارث برده است.
قابلیتهای و ویژگیهای C#
دستورات و ساختار C# کاملا شبیه به C++است و برخی از قسمتهای C++که دیگر کاربردی نداشته اند، حذف شده است) مثل ساختارهای بیتی C# .(امکاناتی را به برنامه نویسان C++ هدیه میکند که از نبود آنها رنج می برند C# .کاملترین دستورات و امکانات برنامه نویسی را در مقایسه با سایر زبانها داراست .در این زبان ساختار و دستورات قدیم برنامه نویسی با دستورات و ابداعات نوین برنامه نویسی جایگزین شده اند.
این زبان همانند C++ به حروف کوچک و بزرگ حساس است .در یک برنامهC# کل دستورات و توابع به طور کامل در دل کلاسها و اشیا قرار دارند C# .به نوع متغیر (type-safe) حساس است و انواع جدید و متنوعی از دادهها را پشتیبانی میکند. این زبان به طور کامل شیءگراست .هر کلاس یا شیء فقط می تواند یک کلاس پدر داشته باشد .(single inheritance) در C# کلمات کلیدی جدیدی معرفی شده که امکان تعریف رویدادها (event) ، رابطها (interface) و بسیاری از قابلیتهای جدیدی را که در هیچ زبانی دیگری وجود نداشته است، مهیا می سازد.
برنامه نویس در C# راحت است و با چند دستور و تعریف می توان برنامه های کاربردی مورد نیاز را به سرعت فراهم آورد .به همین دلیل C#از جمله زبانهای RAD (Rapid Application Development) شناخته میشود .از جمله قابلیتهای زبان C# امکان بسط و گسترش راحت و سریع برنامه هاست و به سهولت می توان نسخه های جدیدی از یک برنامه نوشته شده به این زبان را تهیه کرد.
برنامه نویسان Java نیز از امکانات و ویژگیهای C# لذت خواهند برد. بسیاری از دستورات لازم جهت برنامه نویسی نظیر داده های شمارشی (enum) که Java فاقد آنها بود در C# گنجانده شده است .به خاطر ساختار بهتر و کاملتر زبان C# و قدرت کامپایلر آن، کد C# سریعتر از کد Java اجرا خواهد شد. Visual C# .Netدر حال حاضر تنها کامپایلر C# است که توسط مایکروسافت تولید می شود .یکی از امکانات مفیدی که VisualC# به برنامه نویسان C# ارایه می دهد، امکان درج توضیحات بیشتر همراه با جزییات اجزای برنامه است. در این صورت می توان اطلاعاتی که برای شیء در موقع ساخت تعریف شده را از کامپایلر دریافت کرده و یا در هنگام کامپایل برنامه، خطاهایی که مثلا مربوط به عدم رعایت قوانین یک شیء است را به کاربر گوشزد کرد .این دستورات باید دارای قالب تعریف شده XML باشند C#.تنها زبان Visual Studio .Net است که این قابلیت را دارد.
از C# می توان برای نوشتن برنامه های تحت ویندوز، توابع کتابخانه ای ویندوز، ساخت کنترل های ویندوز، برنامه نویسی در محیط وب، طراح کامل برنامه ها و ابزارها ASP .Netدر وب و همچنین برنامه ها محیط کاراتر استفاده کرد .این زبان خود شامل توابع و یا کتابخانه خاصی نیست، در عوض به طور کامل و موثر می تواند از امکانات .Net Frameworkاستفاده کند.
C# در .Net Framework
برای برنامه نویسی در .Net Platformقالب تعیین شده تحت عنوان .Net Framework شناخته میشود .در این قالب، تمام کامپایلرهای زبانهای برنامه نویسی .Net باید کدی تولید کنند که اصول و قوانین تعیین شده را برای تولید کد منسجم و مطمئن (trusted code)رعایت کنند .یکی از مشکلاتی که در کد تولید شده توسط کامپایلرهای قبلی وجود داشت این بود که کد تولید شده دارای هیچ قالب یکسان نبود .در.Net Framework کامپایلر ابتدا با استفاده از دستورات برنامه:
کد C#را به کدی به زبان MSIL (Microsoft Intermediate Language)ترجمه می کند و سپس آن را به کد ماشین تبدیل خواهد کرد .کد MSIL به راحتی به زبان ماشین تبدیل خواهد شد و به همین دلیل امکان تست و رفع اشکال (Debugging)برنامه بسیار راحت خواهد بود .با این شرایط کامپایلر C# یک مترجم (Just in time) JIT است .در سیستم کامپایل به روش JIT برنامه نویس می تواند هر نقطه ای از برنامه را بلافاصله اجرا کرده و خروجی آن را بررسی کند .برای تولید چنین کدی، کامپایلرها می بایست یکسری قوانین خاص را رعایت کنند .در .Net Frameworkانواع داده ها تعریف شده است که امکان جای دادن تقریبا هر نوع دادهای را در برنامه میسر میسازد .مثل اعداد صحیح ۶۴ بیتی که عددی به بزرگی ۹۲۲۳۳۷۲۰۳۶۸۵۴۷۷۵۸۰۸ را می توانند نگهداری کنند و یا مقادیر حسابی مثل داده اعشاری یا دسیمال که حتی می تواند نتیجه بزرگترین عملیات حسابی دنیا را نیز در خود جای دهد C# .علاوه بر انواع متغیرهاC++ ، متغیرها.Net Framework را نیز به طور کامل پشتیبانی می کند .داده هایی نظیر رشته ها (string) در C# تعریف شده است که علاوه برانعطاف فوق العاده، برنامه نویسانC++را از مشکل کاربرد اشاره گرهای رشته ای و آرایه های کاراکتری رها کرده است .
استاندارد شدن داده ها این امکان را به برنامه نویسان می دهد که به راحتی بتوانند از توابع و کدهای نوشته شده به زبانهای دیگر استفاده کنند .این حرکت برای برنامه نویسی اجزای COM قبلا اجرا شد ولی سرانجام با آمدن .Net انواع متغیرها دارای استانداردی شدند.
کدی که کامپایلر C# تولید می کند یک کد سازماندهی شده و قابل مدیریت برای .Net Framework است. این کد به اصطلاح برنامه نویسی Managed code خوانده می شود. در کد مدیریت شده اعمالی نظیر مدیریت حافظه، ورودی و خروجی، مدیریت سیستم، استفاده از منابع سیستم و ;.کاملا به عهده سیستم عامل است .کد مدیریت شده این امکان را برای سیستم عامل فراهم میکند که اگر برنامه به هر دلیل متوقف شود، سیستم عامل به راحتی بتواند آن را از حافظه خارج سازد و مانع از متوقف شدن سیستم (hang)شود .در .Net Platformبرنامه ای تحت عنوان Garbage-Collector تعریف شده که کار مدیریت حافظه را انجام میدهد .این برنامه مرتبا حافظه را بررسی کرده و در صورتی که شیء یا متغیر بلا استفادهای در حافظه موجود باشد، آن را حذف میکند و حافظه را آزاد می سازد C# .امکان میدهد که برنامه از حداکثر قدرت کامپیوتر کاربر استفاده کند، در عین حال هیچ خطر جدی را برای کامپیوتر کاربر نداشته باشد .به چنین کدی، کد قابل اطمینانtrusted code گفته می شود.
C#علاوه بر قدرت تولید کد مدیریت شده (Managed code)امکان تعریف کد مدیریت نشده (Unmanaged code) را نیز فراهم می سازد .نوشتن چنین کدی به هیچ وجه پیشنهاد نمی شود، زیرا C# امکان برنامه نویسی با اشاره گرهایUnsafe در حالت مدیریت شده را دارد و این نیاز به کد مدیریت نشده را حذف می کند. امکانی که در سایر زبانهای .Net مثل VB .Net و Jscript .Net وجود ندارند .به طور معمول برنامه نویسان احتیاجی به کد مدیریت نشده و یا اشاره گرهای Unsafe ندارند، ولی گاهی لازم است که به آدرس خاصی از حافظه دسترسی یافت و یا گاهی برای سرعت بخشیدن به اجرای قسمتی از برنامه از اشاره گرهای زبان C# استفاده کرد.
شاید یکی از مهمترین امکانات .Net Platform این باشد که بر مبنای کاراکترهای Unicode بنا شده است .در سیستم کاراکتریUnicode ، هر کاراکتر به جای ۸ بیت، از ۱۶ بیت استفاده خواهد کرد که در این صورت به جای ۲۵۶ کاراکتر میتوان ۶۵۵۳۶ کاراکتر را کدگذاری کرد .پس با این احتساب میتوان حروف تمام زبانهای زنده دنیا از جمله حروف زبان فارسی را در رشته های حرفی قرار داد. بدین ترتیب برنامه نویسان فارسی زبان دغدغه درج حروف و کلمات فارسی را در برنامه هایشان نخواهند داشت .لازم به ذکر است سیستم عاملهای WinNT Win2000و WinXPبر این مبنا طراحی شده اند.
در کل .Net Platfrom امکانات فوق العاده ای را برای برنامه نویسان به ارمغان می آورد که C# به نحو احسن می تواند از حداکثر قدرت آن استفاده کند.
آیا C# محبوبیت خواهد یافت
این پرسشی است که حتی خود مایکروسافت نیز نمی تواند جواب آن را بدهد .خوب C# یک زبان جدید است و حتی برنامه نویسان با سابقه نیز هنوز در استفاده از آن تازه کار هستند .این زبان نرم افزاری که از ابتدا نوشته شده دارای هیچ نسخه قبلی نیست نکته جالب اینجاست که کامپایلر این زبان برای مطابقت با سایر زبانهای.Net ، شماره نسخه این محصول را عدد هفت نشان می دهد اکنون حدود یک سال است که از عمر این زبان برنامه نویسی می گذرد و حتی برخی از برنامه نویسان نام آن را نیز نشنیده اند .اگر برنامه نویسان C++یا Javaبا امکانات و قابلیتهایC# آشنا شوند، به طور حتم شگفت زده شده و آن را پدیده خواهند نامید .با این وجود شاید برنامه نویسان VB ساختار VB .Netرا به این زبان ترجیح دهند .این زمان و برنامه نویسان هستند که سرنوشت این زبان را رقم خواهند زد . قدر مسلم سایر کسانی که با آن آشنا شوند اذعان خواهند کرد که C# بهترین ابزار برای برنامه نویسی در .Net Platformاست

۳ ) مقدمه ای بر معماری ADO.NET

ADO.NET به عنوان بخشی از .NET Framework از هر برنامه ای که در آن مورد استفاده قرار می گیرد ،خواه یک فرم ویندوزی ،خواه یک فرم وب و خواه یک آبجکت تجاری سطح میانی، مستقل است. ولی روش فرستادن داده ها به داخل کنترل ها، وظیفه خود کنترل است، نه ADO.NET و معماری ومرتبط کردن داده ها در فرم های وب، بر دو فرض استوار است. اولین فرض این است که اکثر دستیابی ها به داده ها فقط خواندنی است،یعنی داده ها به کاربران نمایش داده می شوند ولی د راکثر موارد توسط آنها تغییر نمی کنند. فرض دوم این است که کارایی و Scalability ،در عین حال که در سیستم عامل ویندوز بی اهمیت نیستند ، ولی وقتی که برنامه ها در اینترنت مورد استفاده قرار می گیرند، از اهمیت حساس و حیاتی برخوردار می شوند.
جهت بهینه سازی کارایی برای دستیابی های فقط خواندنی به داده ها ،معماری مرتبط کردن داده ها روی فرم های وب در .NET Framework ،نیز فقط خواندنی است. وقتی که یک کنترل را به یک منبع داده مرتبط می کنید، داده ها فقط به خاصیت مرتبط شده وارد می شوند ، ولی از کنترل بیرون کشیده نمی شوند. این بدان معنی نیست که ویرایش داده ها با استفاده از فرم های وب، غیر ممکن یا حتی بسیار مشکل است.بلکه این کار باید به صورت دستی انجام گیرد.

اکثر این موارد به خاطر طبیعت خود اینترنت است. در یک محیط سنتی برنامه نویسی وب ،یک صفحه ایجاد می شود و به مرورگر کاربر فرستاده می شودو بعد کاربر صفحه و هر اطلاعاتی که در صفحه موجود است، فراموش می شود. به عبارت دیگر اینترنت به صورت پیش فرض Stateless ( ناپایدار) است و حالت و وضعیت صفحه، بین رفت و برگشت به سرور حفظ نمی شود.
کنترل های روی فرم وب، نیز مانند کنترل های روی فرم ویندوزی، نه تنها می توانند به جدول های پایگاه داده مرتبط شوند، بلکه می توانند به هر منبع داده ای دیگری نیزمتصل شوند.از آنجایی که مدیریت منابع سرور و مسائل Scalability حاصله ،در محیط اینترنت بسیار مهم و حساس است، باید به انتخاب روش های دستیابی به داده توجه زیادی کرد. در اکثر موارد ،وقتی که داده هایی خوانده می شوند و به داخل صفحه آورده می شوند و بعد از دست می روند، بهتر است به جای DataSet از یک DataReader استفاده کرد، زیرا DataReader کارایی بهتری دارد و حافظه سرور را حفظ می کند. ولی همیشه این طور نیست و شرایطی وجود دارد که در آن ، استفاده از یک DataSet ، هم ساده تر و هم کارآمدتر است.برای مثال ، اگر با داده هایی مرتبط به هم کار می کنید، آبجکت DataSet با پشتیبانی از DataRelations و متدهای GetChildRows , Get ParentRows ، هم آسانتر پیاده سازی می شود و هم کارآمدتر است، زیرا مستلزم رفت و برگشت کمتری به منبع داده است. همچنین DataSet ، مکانیزمی برای خواندن و نوشتن داده ها از/ ونوشتن داده ها به یک XML stream دارد.سرانجام اگر داده چندین بار مورد دستیابی قرار بگیرد ، مثلاً وقتی داده ها را یکی یکی می بینید، کارآمدتر است که به جای اینکه هر بار DataSet را ایجاد کنید، آن را ذخیره کنید. البته همیشه این طور نیست. در بعضی شرایط ،حافظه ای برای که برای ذخیره سازی یک DataSet بزرگ لازم است، کارایی بدست آمده از نگهداری داده ها را تحت الشعاع قرار می دهد. همچنین اگر داده ای که ذخیره می شود فرار باشد، این خطر وجود دارد که داده های ذخیره شده هماهنگی خود را با منبع داده اولیه از دست بدهند.یک تفاوت دیگر نیز بین معماری مرتبط سازی داده ها د رفرم های ویندوزی و فرم های وب ، وجود دارد. فرم های وب مستقیماً از مرتبط سازی داده ها به یک آبجکت DataRelation پشتیبانی نمی کنند. برای انجام همین کار در یک فرم وب، باید از خاصیت DataBinder استفاده کرد.

مرتبط کردن کنترل ها به یک منبع داده ADO.NET

کنترل های فرم وب از مرتبط کردن ساده (simple-binding) تقریباً هر خاصیتی به یک مقدار در منبع داده و مرتبط کردن پیچیده (complex-binding) خاصیت های کنترل که چندین مقدار را نمایش می دهند، پشتیبانی می کنند.کنترلهای فرم وب، همیشه می توانند در زمان اجرا مرتبط شوند و اگرمنبع داده در دسترس باشد، در زمان طراحی نیز، می تواند مرتبط شود.( از آنجایی که برنامه های فرم وب ،بیشتر به جای DataSet از DataCommand استفاده می کنند،( منبع داده در اکثر مواقع در زمان طراحی در دسترس نیست.)کنترل های فرم وب که به صورت ساده مرتبط شده اند، بر خلاف کنترل های فرم ویندوزی ، خاصیت های مربوط به مرتبط سازی را ندارند ، بلکه مقدار در زمان اجرا و با استفاده از یک عبارت مرتبط سازی داده ،به صورت صریح از خاصیت گرفته می شود و یا به آن اختصاص داده می شود.در Studio.NET Visual ، پنجره Prorerties ، ابزاری برای ایجاد عبارت های مرتبط سازی دارد و نیز می توانیم آنها را در زمان اجرا ایجاد کنیم. عبارت مرتبط سازی داده ها در زمان اجرا، با #%> و <% مشخص می شوند:
PropName = ( <%# dataExpression %>)DataExpression ، می تواند هر عبارتی باشدکه به یک آیتم داده یعنی یک ستون از یک DataRow ، یک خاصیت از کنترل دیگر روی صفحه ، یا حتی یک عبارت تبدیل تبدیل می شود.ولی باید توجه داشته باشیم که فرم های وب، آبجکت BindingContext یا هر چیزی شبیه آن را ندارد، بنابراین سطر جاری، معنی ندارد. وما باید دقیقاً مشخص کنیم که کدام سطر از یک منبع داده ، مثل یک DataTable در خاصیت مرتبط شده نشان داده خواهد شد.بنابراین ، برای مثال برای اشاره کردن به یک DataCloumn در یک DataSet ، باید از دستور زبان زیر استفاده کنیم:
<%# myDataSet.myTable.DefaultView(0).myColumn %>
تا زمانیکه عبارت موردنظر، در زمان اجرا به نوع داده درستی تبدیل شود، میتوانیم از تبدیل نوع استفاده کنیم تا از نوع صحیحی از داده استفاده کنیم. برای مثال :
myTextBox.Text = <%# myDataSet.myTable.Rows.Count.Tostring() %>

مرتبط کردن ساده یک خاصیت کنترل در زمان طراحی
در فرم مورد نظر بعد از انتخاب مثلاً یک TextBox ، در پنجره Properties ، (DataBinding) را انتخاب می کنیم و بعد روی دکمه (…) کلیک میکنیم تا پنجره مربوطه باز شود. در پنجره Simple Binding فیلد موردنظر را انتخاب کرده ،دکمه ok راکلیک میکنیم تا binding انجام شود.اگر منبع داده در زمان طراحی در دسترس نباشد، می توانیم خاصیت کنترل را در زمان اجرا مرتبط کنیم. اگر انجام این کار در تگ مربوط به کنترل ممکن است، انجام این کار با استفاده از رویداد Data binding که در هنگام فراخوانی متد Data bind برای کنترل رخ می دهد، بسیار ساده تر است.
مرتبط کردن ساده یک خاصیت کنترل در زمان طراحی
بعد از انتخاب مثلاً یک TextBox ، در پنجره Property روی دکمه Event کلیک میکنیم و بعد Data binding رادوبار کلیک می کنیم تا اداره کننده رویداد اضافه شود. وکد زیر را به رویه اضافه می کنیم :
this.myTextBox.Text = this .myDataSet .myTable[0] .myField;
وقبل از اینکه بتوایند داده های روی فرم وب را نمایش دهیم ،باید با پر کردن یک DataAdapter یا اجرای یک DataCommand صریحاً آنها را از منبع داده بار کنیم . و نیز بایستی داده ها را به خاصیت های کنترل وارد کنیم.
این کار را میتوان با فراخوانی متد DataBind که به وسیله تمام کنترل هایی که از System .Web .Control ارث می برندپیاده سازی می شود انجام داد. راخوانی متد DataBind موجب فراخوانی متد DataBindدر کنترل های فرزند آن نیز می شود. بنابراین ، فراخوانی DataBind از کلاس Page ، باعث فراخوانی متد DataBind از تمام کنترل های کلاس Page می شود.
وقتی که از متد DataBind یک کنترل ،مستقیماً و یا با فراخوانی متد DataBind پدر فراخوانی می شود ، عبارت های داده ای موجود در تگ های کنترل، تبدیل می شوند و رویدادهای DataBinding مربوط به کنترل ها روی می دهند.
اگر می خواهیم از یک فرم وب برای بروز رسانی داده ها استفاده کنیم،باید در هنگام فراخوانی متد DataBind دقت کنیم. DataBind ،مثل متد AcceptChanges آبجکت DataSet ، مقادیری که در حال حاضر در خاصیت های مرتبط شده وجود دارند را جایگزین می کنند .

نمایش داده های مرتبط شده در صفحه
در ویرایش گر کد، کد زیر را به رویداد Page_Load اضافه می کنیم :
this. myDataAdapter. Fill ( this. myDataSet. myTabel );
this.DataBind();
مرتبط سازی پیچیده خاصیت های کنترل
کنترل هایی که به صورت پیچیده مرتبط شده اند، در هر محیط،خاصیت های DataSource و DataMember را برای تعریف منبع داده دارند و نیز کنترلهای فرم وب، یک خاصیت DataValueField را دارند که معادل خاصیت ValueMember در یک کنترل فرم ویندوزی است.کنترل های DataList و DataGrid همچنین خاصیتی به نام DataKeyField دارند که اطلاعات مربوط به کلید اصلی را در منبع داده نگه می دارند. این خاصیت، که مجموعه DataKeyFields را پر می کند،به ما امکان می دهد تا بدون اینکه لزوماً اطلاعات کلید اصلی را در یک کنترل نمایش دهیم، آن را ذخیره کنیم.
به علاوه ،کنترل های ListBox , DropDownList , CheckBoxList , RadioButtonList , HtmlSelectخاصیتی به نام DataTextField دارند که ستونی را که باید نمایش داده شود را مشخص می کند. این خاصیت، معادل خاصیت DisplayMember در یک کنترل فرم ویندوزی است.
اگر خاصیت DataSource به یک DataSet و خاصیت DataMember به یک DataTable مقداردهی شود، می توانیم به راحتی خاصیت را مستقیماً مقداردهی کنیم.

مرتبط سازی پیچیده یک کنترل در زمان اجرا
رویداد SelectedIndexChanged را به ویرایشگر کد با کد زیر اضافه می کنیم:
this.myDataView.Tabel = this.mtDataSet.mtTable;
this.myDataView.RowFilter = “my Field Name “+this.mydataGrid.SelectedItem.Cells[1].Text;
this.mylistBox.DataSource = this.myDataView;
this.mylistBox.DataTextField = “myFieldname”;
this.mylistBox.DataBind();

استفاده از آبجکت DataBinder
علاوه بر قرار دادن مستقیم عبارت های مرتبط سازی داده ها در HTML Stream ، .NET Framework آبجکت DataBinder را ارائه می کند که عبارتهای مرتبط سازی داده ها را ارزیابی می کندو به صورت اختیاری نتیجه رابه صورت یک رشته فرمت دهی می کند. نحوه کار DataBinder بسیار ساده است و می تواند تبدیل نوع را به صورت خودکار انجام دهد که این امر، عمل کدنویسی را در بعضی شرایط ساده می کند، مخصوصاً وقتی که با یک آبجکت ADO.NET کار می کنید وچندین تبدیل نوع لازم است و دستور زبان ، پیچیده است. ولی آبجکت DataBinder دیرهنگام ،مرتبط می شود و مثل تمام آبجکت هایی که دیرهنگام مرتبط می شوند، ومخصوصاً به خاطر تبدیل نوع ، باعث پایین آمدن کارایی می شود.این آبجکت ،یک آبجکت ایستا است ،یعنی میتواند بدون نمونه سازی به کارگرفته شود. این آبجکت می تواند یا از داخل HTML صفحه ( که با #%> و <% مشخص می شود) و یا در کد فراخوانی شود.
این آبجکت هیچ خاصیتی یا رویدادی ندارد و فقط یک متد Eval دارد. این متد Overload شده تا یک رشته فرمت دهی اختیاری را قبول کند.

حفظ وضعیت آبجکت ADO.NET
از آنجایی که فرمهای وب،بین رفت و برگشت از server ،وضعیت را حفظ نمی کنند، اگر بخواهیم که یک DataSet را بین زمانی که صفحه ایجاد می شود و زمانی که طول می کشد تا کاربرآن را با تغییرات برگرداند حفظ کنیم ،باید این کار را به طور صریح انجام دهیم.
ما می توانیم یک DataSet را روی Server ،با ذخیره کردن آن یا در وضعیت Application ویا در وضعیت Session ذخیره کنیم و یا می توانیم آن را روی client و با ذخیره کردن آن در ViewState کلاس Page حفظ کنیم . همچنین می توانیم یک DataSet را در یک فیلترhidden در صفحه حفظ کنیم .اگرچه از آنجاییکه این روش همان روشی است که کلاس Page ،ViewState را پیاده سازی می کند، به ندرت مزیتی در انجام آن وجود دارد.
حفظ آبجکت های ADO.NET بر روی سرور
ADO.NET چند مکانیزم برای حفظ حالت در یک برنامه اینترنتی دارد.در سمت سرور، دو تا از ساده ترین مکانیزم ها برای استفاده، حالت Application وحالت Session هستند. این دوساختار حالت،فرهنگهایی هستندکه داده ها را به صورت جفت های اسم/مقدار نگهداری میکنند. مقدار به عنوان یک آبجکت ذخیره و بازیابی می شود،بنابراین وقتی که آن را بازیابی می کنید،باید آن را به نوع درست تبدیل کنید. هر دو حالت به طور یکسانی استفاده میشود و تفاوت فقط در محدوده(Scope) است.
حالت Application برای تمام صفحه ها وتمام کاربران یک برنامه قابل دسترسی است. ولی حالت Session ، مخصوص یک Session مرورگر است.

ذخیره یکDataSet در حالت Session
Page-Load را به صورت زیر تغییر می دهیم تا DataSet در حالت Session نگهداری شود.
If ( this.IsPostBsck )
This.mydataSet = (DataSet) Session[ “ dataSet”];
Else
{
this. mydataSet.Fill( this.mydataSet.myTable );
this.Session[] = this. mydataSet;
}
this.DataBind();

بهنگام سازی یک منبع داده از طریق فرم وب
بهنگام سازی واقعی به وسیله اجرای مستقیم یک DataCommand ویا با فراخوانی متد Update آبجکت DataAdapter انجام می شود. اما باید توجه داشت که یک صفحه فرم وب حالت خود را حفظ نمی کند ومعماری (ساختار) مرتبط سازی یکطرفه است. بنابراین باید مقادیری راکه بوسیله صفحه برگردانده می شوند را در آبجکتی مناسب وارد کنیم. در یک فرم وب ،باید صریحتاً مقدار را از یک کنترل بگیرید وآبجکت ADO.NET را بروز رسانی کنیم.
کد زیر را به اداره کننده رویداد اضافه می کنیم :
system.Data.OleDbCammand cmdUpdate;
cmdUpdate = this.myDataAdapter.UpdateCommand;
cmdUpdate.Parameters[0].Value = this.TextBox1.Text;
cmdUpdate.Parameters[1].Value = this.TextBox2.Text;
cmdUpdate.Parameters[2].Value = this.TextBox3.Text;
this. myConnection.Open();
cmdUpdate.ExecuteNonQuery();
this.cnNorthWind.Close();

استفاده از کنترل های وب
فرم های وب ASP.NET دو کنترل را عرضه می کنندکه مخصوص نمایش داده طراحی شده اند: یعنی DataGrid , DataList . هر دو این کنترل ها سطرهای یک منبع داده را نمایش می دهند،اما قابلیتهای آنها متفاوت هستند.
کنترل DataGrid داده را دریک قالب جدول بندی شده نمایش می دهدوپشتیبانی درونی از ویرایش و صفحه بندی داده را به صورت درجا به عمل می آورد،اما قابلیت های قالب بندی نسبتاً محدودی دارد. کنترل DataList ، هم پشتیبانی درونی برای ویرایش درجا به عمل می آوردو هم قالب بندی انعطاف پذیری بیشتری را مجاز می دارد.
Microsoft .Net Framework ،همچنین یک کنترل تکرارکننده را پشتیبانی می کندکه قابلیت قالب بندی تقریباً نامحدودی را مجاز می دارد،اما در نمای Design از PageDesigner پشتیبانی محدودی به عمل می آورد-بیشتر قالب بندی باید مستقیماً در نمای Html از PageDesigner صورت گیرد.
این سه کنترل همگی الگوها(Template) را مورد حمایت قرار می دهند، که مجموعه هایی از کنترل ها هستند که محتویات هر بخش از کنترل را تعیین می کنند.
برای مثال ،کنترل DataGrid یک AlternatingItemTemplate را مورد پشتیبانی قرار نمی دهد وItem Templates آن محتویات یک ستون را تعیین میکند. درحالیکه ItemTemplate برای یک DataList محتویات یک سطر را تعیین می کند.
DataGrid با استفاده از خصوصیات DataSource ,DataMember به یک DataSourse متصل است ویک ساختار پیش فرض دارد ولیDataList هیچ ساختاری به خود نمی گیرد و نیازمند این است تا بخش ItemTemplate را پیش از آنکه بتواند داده ای را نمایش دهد ، مشخص کنیم.

معتبرسازی فرم وب
Framework .Net تعدادی از کنترل های معتبرسازی که می توانند برای معتبرساختن داده به کار روند را مورد پشتیبانی قرار می دهد. کنترل های فرم وب اعتبار را چک میکنند وهرگونه پیغام خطا را نمایش می دهند. هر کنترل اعتبار یک شرط منفرد را در روی صفحه چک می کند،که به عنوان ورودی شناخته می شود. برای چک کردن شرایط متعدد، کنترل های معتبر متعددی می توانند به یک کنترل ورودی اختصاص یابند.این حالت چون تمام کنترل ها بجز RequiredFieldValidator یک فیلد خالی را برای اعتبارسنجی در نظر می گیرند،اتفاق می افتد.
اگر مرورگر ازDHTML پشتیبانی می کند، معتبرسازی اول روی سرویس گیرنده رخ خواهد داد، و فرم تا زمانی که تمام شرایط محیا نشوند، تایید نخواهد گردید. معتبرسازی چه روی Client رخ داده باشد یا رخ نداده باشد، همواره هنگام پردازش یک رویداد Click بر روی سرویس دهنده رخ خواهد داد. به علاوه می توان یک متد Validate آبجکت Control را به صورت دستی برای معتبرسازی محتویات آن از کد فراخوانی نماییم.
هنگامی که صفحه معتبرسازی می شود،محتویات کنترل ورودی به کنترل اعتبارسنجی انتقال می یابند که محتویات را تست می کند و خصوصیت IsValid کنترل را روی False قرار می دهد. اگر دو کنترل غیر معتبر باشند،خصوصیت IsValid صفحه نیز روی False ،تنظیم می گردد. ما می توانیم این شرط را چک کرده و هر عملی که لازم است را انجام دهیم.

۴ ) امنیت در ASP.NET
اهمیت امنیت
امنیت یکی از نخستین جوانبی است که توسعه دهنده وب هنگام طراحی و پیاده سازی یک برنامه کاربردی درباره اش فکرمی کند (اگر هم نیست , حتما باید باشد) در هر صورت ,طراحی یک برنامه کاربردی بدون در نظر گرفتن امنیت , همانند طراحی یک برنامه کاربردی بدون امنیت است.افزودن امنیت به یک برنامه کاربردی پس از اینکه کارهای اجرایی توسعه آن پیشرفت کرد , بسیار دشوار خواهد شد .
سطوح انواع متفاوت امنیت وجود دارند . سطح ونوع امنیت مورد نیاز برنامه کاربردی شما بسته به کاری که برنامه کاربردی شما انجام می دهد , نوع ومقدار داده ای (اگر داده ای وجود داشته باشد) که شما ذخیره می کنید , ریسکی که متحمل می شوید و مدت زمان , زحمت وپولی که صرف داشتن یک برنامه کاربردی امن میکنید , متفاوت است . نیازهای امنیتی یک صفحه خانگی شخصی برای مثال تفاوت فاحشی با صفحات خانگی سایتهای اینترنت یا تجارب الکترونیکی خورده فروش داردند.

مقدمات امنیت
• برپایی سرویس دهنده وطراحی برنامه کاربردی : جلوگیری ازسوءاستفاده ازسرویس دهنده وب ویا داده به دلیل تنظیمات ناامن سرویس دهنده وطراحی ضعیف برنامه کاربردی.
• Patching (ترمیم ) :جلوگیری از مورد سوءاستفاده قرارگرفتن سرویس دهنده وب به دلیل آسیب پذیری های که درنرم افزارسرویس دهنده وجود دارد .
• کنترل دسترسی :جلوگیری ازمورد سوء استفاده قرارگرفتن سرویس دهنده وب به دلیل تنظیمات نامناسب دسترسی ‍.
• Auditing and Logging : رد گیری اینکه چه کسی وچه زمانی به سایت شما حمله می کند و اصلا چه کاری می کند.
• استفاده از SSL ودیگر ابزارهای امنیتی رمزنگاری : جلوگیری از سوء استفاده کردن از دادها .
برپایی سرویس دهنده وطراحی برنامه کاربردی

یکی از اولین عواملی که باید روی آن تمرکز کرد روش برپاکردن سرویس دهنده است. طراحی یک برنامه کاربردی که تایید اعتباروصدورمجوزها را بطور مناسب پیاده سازی میکند , برای کسی که می تواند تمام آن تدابیر امنیتی را با نفوذ ازطریق آسیب پذیری هایی که patch (برنامه ترمیمی ) راروی آن اعمال نکرده اید , پشت سر گذارد کار دشواری است.

انتخاب یک سیستم عامل (OS)
هنگامی که شمایک سیستم عامل را انتخاب می کنیداولین سوالی که ازخودمی پرسیداین است که تاچه حدازامنیت را لازم دارید همانند مسائل دیگر مربوط به طراحی یک برنامه کاربردی, نسبت مستقیم بین ایجاد امنیت و هزینه وجود دارد .

  راهنمای خرید:
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.