عنوان :
قیمت : 59,700 تومان
توضیحات در پایین همین صفحه

درگاه 1

توجه : دریافت شماره تلفن همراه و آدرس ایمیل صرفا جهت پشتیبانی می باشد و برای تبلیغات استفاده نمی شود

هدف ما در این سایت کمک به دانشجویان و دانش پژوهان برای بالا بردن بار علمی آنها می باشد پس لطفا نگران نباشید و با اطمینان خاطر خرید کنید

توضیحات پروژه

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

  دارای 100 صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

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

این پروژه توسط مرکز مرکز پروژه و مقالات آماده و تنظیم شده است

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


بخشی از متن :

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

1 ) تاریخچه ASP

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

منشأ ASP
اگر به اواسط دهه نود باز گردیم می بینیم که در آن زمان انتخاب زیادی برای ابزارهای تولید وب در اختیار برنامه نویسان وب وجود نداشت که می خواستند سایت وب خود را به مکانی مناسب برای تجارت تبدیل کنند. این گزینه ها در سیستم عامل و برنامه های برنامه نویسی سمت سرور و ابزارهای تولید رومیزی برای تولید راه حلها در دسترس بودند. در پایان برنامه نویس باید برنامه های Common Graphic Interface (CGI) را به کار می برد. در این برنامه ها از زبانهای کامپایل شدهای چون دلفی و ویژوال بیسیک یا زبانهای اسکریپت نویسی تفسیر شده ای مثل پرل یا رکس و اسکریپت های لایه سیستم عامل مانند UNIX استفاده می گردید.
در اوایل سال 1996مایکروسافت اولین تلاش خود را برای بهبود وضعیت موجود انجام داد. بدین منظورفن آوری رابط برنامه نویسی کاربردی سرور اینترنت 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 و صفحات فعال سرور جایگزین قرار داده اند.
در جولای 2000 .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” صفحه می باشد خلاصه می گردد. این قابلیت شرایطی را فراهم می کند تا عناصری فرمی که مورد محاوره بازدید کننده قرار گرفته اند همان مقادیر را حین ارسال صفحه دارا باشند. همان طور که در شکل 1 دیده می شود مرورگر می تواند فرم اطلاعاتی را درخواست نموده و با استفاده از دو متدHTTP به نامهایPOST وGET اطلاعات را به سمت سرور ارسال نماید.

Post Get

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

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

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

Request

Yes

No

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

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

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

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

این فرآیند طی مراحل زیر انجام می گیرد :
1 IISمیانURL مورد درخواست با فایل موجود در دیسک سخت مقایسه ای را انجام می دهد این مقایسه با ترجمه مسیر واقعی به مسیری نسبت به ریشه سایت صورت می پذیرد.
2 هنگامی که فایل به دست آمد پسوند فایل(.aspx ) به فهرستی از انواع معین فایلها مقایسه می شود تا معین گردد که آیا فایل باید برای بازدید کننده ارسال شود یا برای پردازش فرستاده شود.
3 اگر نسبت به زمانی که فایل آخرین تغییرات را متحمل شده این اولین بازدید از صفحه می باشد کدASP با استفاده از کامپایلرCommon Language Runtime به زبان اسمبلی کامپایل شده ( بهMSIL ) سپس برای اجرا به کد دودویی ویژه ماشین کامپایل می گردد.
4 کد دوددویی یک.dll از کلاس.NET است که در یک محل موقتی ذخیره می شود.
5 دفعه بعدی که صفحه درخواست می شود سرور بررسی می کند که آیا کد تغییر یافته است یا نه .اگر همان کد قبلی باشد آنگاه مرحله کامپایل حذف شده و کد کلاس کامپایل شده پیشین اجرا می گردد در غیر اینصورت کلاس حذف شده و منبع جدید دوباره کامپایل می شود.
6 کد کامپایل شده اجرا گردیده و مقادیر درخواستی مانند فیلد های ورودی فرم یا پارامترهای URL تفسیر می شوند.
7 اگر برنامه نویس از فرمهای وب استفاده کرده باشد آنگاه سرور می تواند بازدید کننده را شناسایی نموده و صفحاتی را که مطابق نیاز بازدید کننده مناسب سازی شده اند منتقل نماید.
8 نتیجه به مرورگر وب بازدید کننده ارسال می شود.

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

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

2 )مقدمه ای بر .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 میباشد كه در جدول زیر می توان 6 خصوصیت قابل تغییر برای این کلاس را مشاهده کنید
ویژگیهای عمومی WebMethodAttribute
جهت ارائه توضیحات (Description) برای سرویس وب خود خصوصیت Description را به یك متن با معنی برای متد مورد نظر تغییر دهید. این متن بعداً به Metadata در سرویس وب شما كه معروف به WSDL(Web Service Description Language) می باشد اضافه خواهد شد.
یك مشخصه ی دیگر به نام WebServiceAttribute نیز در همین فضای نامی وجود دارد كه هدف آن كل كلاس می باشد و Description آن نیز در واقع توضیح كاری است كه كلاس انجام میدهد.
[WebService(Description=”A simple Currency Converter Web Service.2 Methods”)]
public class CurrConv
{ …

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

3 ) مقدمه ای بر C#
زبان برنامه نویسی C#محصول جدیدی از مایكروسافت است كه در حال حاضر به عنوان مدرنترین زبان كامپیوتری شناخته میشود .این زبان، اولین زبانی است كه برای .Net Platform طراحی شده و بسیاری از اجزای .Net نیز بدین زبان نوشته شده اند .مایكروسافت عنوان می كند نقشی كه C/C++ برای ویندوز ایفا كرد، این بار C# برای .Net انجام خواهد داد. این زبان توسط واحد تحقیقات مایكروسافت به مدیریت اندرس هلزبرگ (Anders Hejlsberg) طراحی شده است. برنامه نویسان پاسكال، اندرس هلزبرگ دانماركی را هیچ گاه از یاد نخواهند برد. او كه در بورلند 15 سال سابقه درخشان دارد و پاسكال را به زبان قدرتمندی به نام دلفی تبدیل كرده است، این بار در مایكروسافت قدرت تمام زبانهای برنامه نویسی را در 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انواع داده ها تعریف شده است كه امكان جای دادن تقریبا هر نوع دادهای را در برنامه میسر میسازد .مثل اعداد صحیح 64 بیتی كه عددی به بزرگی 9223372036854775808 را می توانند نگهداری كنند و یا مقادیر حسابی مثل داده اعشاری یا دسیمال كه حتی می تواند نتیجه بزرگترین عملیات حسابی دنیا را نیز در خود جای دهد 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 ، هر كاراكتر به جای 8 بیت، از 16 بیت استفاده خواهد كرد كه در این صورت به جای 256 كاراكتر میتوان 65536 كاراكتر را كدگذاری كرد .پس با این احتساب میتوان حروف تمام زبانهای زنده دنیا از جمله حروف زبان فارسی را در رشته های حرفی قرار داد. بدین ترتیب برنامه نویسان فارسی زبان دغدغه درج حروف و كلمات فارسی را در برنامه هایشان نخواهند داشت .لازم به ذكر است سیستم عاملهای WinNT Win2000و WinXPبر این مبنا طراحی شده اند.
در كل .Net Platfrom امكانات فوق العاده ای را برای برنامه نویسان به ارمغان می آورد كه C# به نحو احسن می تواند از حداكثر قدرت آن استفاده كند.
آیا C# محبوبیت خواهد یافت
این پرسشی است كه حتی خود مایكروسافت نیز نمی تواند جواب آن را بدهد .خوب C# یك زبان جدید است و حتی برنامه نویسان با سابقه نیز هنوز در استفاده از آن تازه كار هستند .این زبان نرم افزاری كه از ابتدا نوشته شده دارای هیچ نسخه قبلی نیست نكته جالب اینجاست كه كامپایلر این زبان برای مطابقت با سایر زبانهای.Net ، شماره نسخه این محصول را عدد هفت نشان می دهد اكنون حدود یك سال است كه از عمر این زبان برنامه نویسی می گذرد و حتی برخی از برنامه نویسان نام آن را نیز نشنیده اند .اگر برنامه نویسان C++یا Javaبا امكانات و قابلیتهایC# آشنا شوند، به طور حتم شگفت زده شده و آن را پدیده خواهند نامید .با این وجود شاید برنامه نویسان VB ساختار VB .Netرا به این زبان ترجیح دهند .این زمان و برنامه نویسان هستند كه سرنوشت این زبان را رقم خواهند زد . قدر مسلم سایر كسانی كه با آن آشنا شوند اذعان خواهند كرد كه C# بهترین ابزار برای برنامه نویسی در .Net Platformاست

3 ) مقدمه ای بر معماری 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 ،تنظیم می گردد. ما می توانیم این شرط را چك كرده و هر عملی كه لازم است را انجام دهیم.

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

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

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

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

برای دریافت پروژه اینجا کلیک کنید


دانلود
قیمت : 59,700 تومان

درگاه 1

Copyright © 2014 cpro.ir
 
Clicky