فصل چهارم اولین برنامه ASP.NET شما در دلفی چگونه آماده می شود: در این فصل خواهیم آموخت تا از طریق دلفی 2006 یک برنامه ساده ASP.NET را اجرا کنیم. اکنون می خواهیم قدم اول و در واقع بزرگترین گام خود را برداریم. برای اینکه بتوانیم روش کار برنامه BDSWebExample را درک کنیم لازم است این گام نخست را بردارید. اما ابتدا ببینیم وقتی درخواست اجرای یک فایل something.aspx می دهیم چه اتفاقاتی می افتد. معماری ASP.NET: برنامه های کاربردی ASP.NET در دلفی 2006 یا هر نوع محیط.NET دیگر توسط IIS (Internet Information Server ) میزبانی می شود وظیفه این میزبان قبول درخواستهای ( HTTP ) مشترکین ( Client ) ( درخواستی مبنی بر اجرای یک صفحه aspx توسط WebBrowser شما ) می باشد. موتور محرک ASP.NET این درخواستها را به انواع مختلفی از کلاسهای شناسائی ( جدای ازآنچه توسط IIS پردازش می گردد ) تخصیص می دهد. در اغلب موارد مثلا درخواست read : هنگامی که یک صفحه aspx از وب سرور درخواست می شود ، IISاین درخواست را به سمت برنامه کاربردی aspnet_wp.dll که نوعی ISAPI هست تغییر جهت می دهد. این برنامه هم زحمت کشیده و آنرا به جریان کاری فایل aspnet_wp.exe منتقل می کند. اما این جریان کاری در طی فعالیت خود کارهای مانده را با ترجمه فوری ( Just in time ) کد های نوشته شده در صفحه ( و یا در هر فایل کد پنهان = Code Behind Files ) اجرا می کند البته مشروط بر اینکه هیچ نسخه ترجمه ای شده ای از درخواست ارائه شده در حافظه ( cashed ) موجود نباشد. آنچه که بعد از این اتفاق می افتد در واقع به اسم " چرخه حیات یک صفحه ASP.NET خوانده می شود که در آینده به آن خواهیم پرداختیم. حال به سراغ ساخت ساده ترین برنامه ASP.NET خود برویم و در طول این کار به کالبد شکافی قسمتهای مختلف یک فرم وب نیز خواهیم پرداخت. اولین برنامه کاربردی وب ASP.NET شما: برای ایجاد برنامه کاربردی وب در دلفی 2006 ابتدا آنرا اجرا کرده و از منوی File و گزینه New باید Asp.Net Web Application را انتخاب کنید. فرم محاوره ای با عنوان New Asp.Net Application نمایش داده شده و شما میتوانید یک نام برای برنامه خود انتخاب کنید. البته خود دلفی زحمت کشیده و آنرا WebApplicationX نامیده است. بهتر آنست که شما یک نام با معنی برای برنامه خود انتخاب کنید . این برنامه را DelphiApsNetTest بنامید . پس از آن با زدن کلید OK یک شاخه مجازی وب در مسیر IIS به همین نام ساخته خواهد شد تا IIS بتواند کار میزبانی از برنامه شما را انجام دهد. علاوه بر آنکه پس از زدن کلید OK فایل برنامه اجرائی ASP.Net برای شما ساخته می شود ، چندین فایل استاندارد دیگر نیز در همان پوشه ریخته می گردد. از جمله میتوان به فایلهای Web.config ، global.asax ، WebForm1.aspx اشاره کرد. در همه این فایلها ابتدا به ساکن مقداری کد نویسی شده اند. فایل WebForm1.aspx هم نام با فرم وب شما است. در این قسمت ما توجه خود را به همین فایل معطوف می کنیم. فرمهای وب ( یا WebForms ) جزء بلوک های اولیه ساختمانی یک برنامه کاربردی وب می باشد. درست مانند پنجره ها و فرم های برنامه های کاربردی تحت ویندوز 32 که در واقع قلب و روح برنامه های معمولی بودند ، در اینجا نیز فرم ها رابط کاربری و نما و روح برنامه شما را شکل خواهند داد. همچنانکه هر شئ فرم در برنامه های ویندوز دارای تعدادی خاصیت ( properties ) و رویداد ( events ) بود ، فرم های وب نیز متد ها ، خواص و رویدادهای مربوط به کنترل های ( وب ) که بر روی آنها قرارداده شده را شامل می شوند. زمانیکه شما یک فرم جدید وب را ایجاد می کنید ، دلفی نیز 2 فایل ایجاد می کند : بخش بصری ( فایل *.aspx ) و فایل کد پنهان ( با پسوند *.pas ( . فایل aspx وظیفه تشریح تمام آن چیزهائی که باید توسط browser پردازش شود ( UI = User Interface = رابط کاربر ) و فایل کد پنهان شامل تمام فرمهای وب و رویدادهای کنترلی و خواص ( منطق رابط کاربر UI Logic ) می باشد. ساخت یک صفحه با استفاده از 2 فایل به شما این امکان را خواهد داد که محتوا و دستورات را بطور کامل از هم تفکیک کنید. شروع سریع: روی صفحه آنچه شما مشاهده می کنید در واقع نمای ظاهری وب فرم است . در پائین صفحه شما میتوانید 3 سربرگ را نیز مشاهده کنید که عنوان آنها ( WebForm1.aspx ) و ( WebForm1.pas ) و ( Design ) می باشد. سربرگ Design معمولا فعال است. خب حالا به سراغ چند کنترل وب برویم و آنها را روی WebForm1 قرار دهیم . بگردید و Tool Palette را پیدا کنید . بعد یک کنترل TextBox ( چیزی شبیه به TEdit ) ، یک Button ( TButton) و یک Label (TLabel) روی فرم قرار دهید . آسان ترین روش قرار دادن آنها بر روی فرم دابل کلیک کردن روی هرکدام است. البته خیلی نمی خواهد راجع به انواع و نامهای کنترلهای وب گیج شوید . زیرا ما بعدا شما را روشن خواهیم کرد. حال نوبت به دابل کلیک کردن بر روی Button قرار گرفته بر روی وب فرم رسیده است. شاید حدس زده باشید که می خواهیم اقدام به نوشتن کد و دستورات مربوط به کلید بکنیم. درست حدس زده اید پس دابل کلیک کنید. اولا توجه کنید که سربرگ Design انتخاب نشد و بجای آن وارد فایل WebForm1.pas شده ایم. شکل ظاهری کار خیلی شبیه به محیط کدنویسی Unit دلفی می باشد. در واقع ما در همان محیط نیز قرار داریم. procedure TWebForm1.Button1_Click(sender: System.Object; e: System.EventArgs); begin Label1.Text := 'Hello:' + TextBox1.Text; end; اکنون خط مابین Begin و End را به کد اضافه کنید. اگر قبلا در محیط کد نویسی دلفی کار کرده اید بعضی چیزها را می شناسید مثل Sender که همان دکمه بوده و کد دستور در آن نوشته شده است ، رویداد هم که مشخصاClick است. اما یک پارامتر اضافی دیگر به نام e: System EventArgs وجود دارد که خیلی به آن توجه نمی کنیم و انگار که اصلا آنرا ندیده ایم. ببینیم با فشار دادن کلید F9 چه اتفاقی رخ می دهد. چون اینجا دلفی است برنامه باید اجرا شود و اجرا هم می شود . تعجب نکنید درست است که این یک برنامه معمولی دلفی نیست ولی بیائید کلید F9 را بزنیم و منتظر شویم ببینیم چه خواهد شد کلید F9: F9 ... و بعد از آن یک نسخه جدید از IE نمودار خواهد شد و مانند این عکس خواهد بود: تمام شد . ساده بود یا نه؟ اشتباه نکنید ، اینقدر ها هم ساده نیست!؟L اما اگر ایجاد این برنامه اصلا کد نویسی نداشت پس ایجاد برنامه های بزرگتر هم نباید خیلی پیچیده باشد. چی شد ... ؟ فایل WebForm1.pas کدهای مورد نیاز برای TWebForm1 ، کلاسی که توسط صفحه System.Web.UI.page یا در واقع کلاس اصلی که تمام فرمهای وب از آن گرفته می شود ، را تعریف می کند. وقتی شما کلید F9 را فشار میدهید دلفی فایل کد شما بهمراه بقیه فایلهای مورد نیاز را به یکDLL ترجمه کرده و هرزمان که شما این فایل را Brows یا مرور کنید ASP.NET اطلاعات نمایشی ( UI ) را از فایل aspx استخراج کرده و دستورات را هم از فایل کامپایل شده DLL بدست می آورد . این جدا سازی سبب می شود که انعطاف پذیری زیادی بوجود آید. مثلا شما میتوانید کدهای HTML برنامه را تا حد زیادی تغییر داده بدون آنکه لازم باشد برنامه و دستورات آنرا مجددا ترجمه کنید. با فشار دادن کلید قرار گرفته روی فرم ، اطلاعات به سرور POSTBACK می شود. سرور صفحه را با استفاده از متنی که شما در TextBox نوشته اید بازسازی کرده و این صفحه " جدید " را برای شما ارسال می کند. نهایتا مرور گر کدها یHTML خالص را تبدیل به صفحه قابل نمایش خواهد کرد. فرم وب تا اینجای کار، ما نمای محیط طراحی و کد دستورات فرم ساده خود را دیده ایم . نام سربرگ سوم در رابط کاربر یا IDE دلفی WebForm1.aspx بود آنرا با کلیک فعال کنید تا محتویات آنرا مشاهده کنید: <%@ Page language="c#" Debug="true" Codebehind="WebForm1.pas" AutoEventWireup="false" Inherits="WebForm1.TWebForm1" %> HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> name="GENERATOR" content="Borland Package Library 7.1"> ms_positioning="GridLayout"> runat="server"> id=TextBox1 runat="server"> id=Button1 runat="server" text="Button"> id=Label1 runat="server">Label فایل ASP.NET در واقع یک فایل متن ساده با پسوند aspx می باشد . فایل وب ASP.NET درست شبیه یک فایل معمولی HTML است که فقط یک تگ اضافی Runat=Server دارد. کار این تگ هم تخصیص عملیات به سرور بوده تا در سمت سرور کارهای پردازش صورت بگیرد. اگر بخواهید میتوانیم اجزاء تشکیل دهنده آنرا هم با هم مرور کنیم : جالب ترین قسمت فرم خط اول آن است که دستور @page آن توسط دلفی نوشته می شود. ASP.NET امکانات و کدهای زیادی برای زمان اجرا و اطلاعات اضافی کامپایلر و غیره دارد اما در اینجا کافی است شما به اشاره ای که کد پنهان به فایل WebForm1.pas ، یا همان نام فرمی که همه کدهای ما در آن نوشته شده ، و اشاره دیگری به WebForm1.TWebForm1 درست مانند Tform1 = class(Tform1) دقت کنید . این همان جائی است که فرم ما تعریف شده و سبب می شود تا از کلاس System.Web.UI.Page در .Net استخراج گردد. راستی از دیدن عبارت Language = C# خیلی تعجب نکنید چون دلفی نمی تواند بطور مستقیم کدهای خود را داخل فایلaspx بنویسد پس از این ترفند استفاده میکند. بین تگ و نیز سه کنترل مربوط به اشیائی که ما برروی فرم قرارداده ایم تعریف شده است. برای مثال : نمایانگر کلیدی است که شناسه آن کلید 1 تعریف شده است ID=Button1 و متن نمایش آن نیز در text = "Button" ذکر شده است و در ادامه نیز صفت استاندارد Runat = server آورده شده است. برمی گردیم به نمای ظاهری: قبل از آنکه قسمت اول را به پایان برسانیم سربرگ طراحی را فعال کنید و به سراغ بازرس اشیاء (Object Inspector) در سمت چپ محیط کاربر بروید. این همان Object Inspector قبلی است. مانند همیشه از این قسمت برای تنظیم خصوصیات و رویدادهای مختلف اشیاء و خود فرمهای وب استفاده می کنیم . همچنان که در هیچ برنامه ای همه فرمهای خود را Form1 نامگذاری نمی کنیم در اینجا هم بهتر است نام فرم را در قسمت Object Inspector تغییر دهیم و. نام آنرا THelloWorldبگذاریم. البته کار شما با ذخیره کردن فایل WebForm1.aspx ادامه پیدا می کند بهتر است آنرا HelloWorld.aspx بنامید. به این ترتیب نام فایل .pas هم تغییر خواهد کرد. تگ Event را در Object Inspector فعال کنید. مشاهده خواهید کرد که رویداد ها در اینجا عبارت on که در دلفی OnClick بود را نداشته و به صورت click یا بجای OnTextChange به TextChange معرفی شده اند.