جلسه چهارم : اولین برنامه کاربردی ASP .Net

©کليه حقوق منحصرا متعلق به شرکت نرم افزاري الگوپارس مي باشد.

 نقل مطالب باذکر منبع آزاد مي باشد.

27/5/1385

 

عنوان اصلی (سلسله مقالات) : An introduction to Asp.Net programming with Delphi

نویسنده : Zarko Gajic

منبع : delphi.about.com

ترجمه : ابوذر نوذری   (با اندکی دخل و تصرف)

 

مقدمه :

به چهارمین جلسه از کارگاه آموزشی ASP .Net در دلفی خوش آمدید. در این جلسه با طریقه ساخت یک برنامه کاربردی ساده تحت وب با استفاده از زبان دلفی و تکنولوژی ASP .Net آشنا خواهیم شد. امروز اولین و بزرگترین قدم را خواهیم برداشت! برای اینکه شما با کارکرد برنامه نمونه BDSWebExample [که در جلسات قبل مفصلا در مورد آن بحث کردیم] آشنا شوید، ابتدا باید چگونگی ساخت یک برنامه ساده تحت ASP .Net بوسیله زبان دلفی را بیاموزید.

قبل از شروع کار لازم است تا با کمی مباحث تئوری و پایه هنگامی که یک صفحه aspx درخواست می شود آشنا گردید.

  top

معماری ASP .Net :

برنامه های کاربردی ASP .Net که با زبان دلفی (و یا هر زبان دیگر سازگار با دات نت) ساخته می شوند، بوسیله سرویس دهنده IIS میزبانی [میزبانی کردن یا Host اصطلاحی است که بیشتر در مفاهیم شبکه به کار می رود. به معنای فراهم کردن خدمات برای ماشین های سرویس گیرنده ای که از راه دور به سرور متصل می شوند-م] می گردند. سرویس دهنده IIS درخواست ها یا Request های سرویس گیرنده که برای مثال می تواند فراخوانی یک صفحه با پسوند aspx از طرف مروگر سرویس گیرنده باشد؛ را می پذیرد و این تقاضاها را به برنامه کاربردی ASP .Net ارجاع می دهد. موتور زمان اجرای ASP .Net یا ASP .Net Runtime Engine این تقاضاها را به دستگیره ها یا Handeler های کلاس های متعددی که در موتور زمان اجرای ASP .Net وجود دارند برای پردازش می فرستد (توجه نمایید که این کار طی فرایندی کاملا مجزا از IIS انجام می پذیرد). در اکثر موارد وقتی یک صفحه با پسوند aspx از سرویس دهنده وب درخواست می شود، IIS این درخواست ها را به یک ISAPI با نام aspnet_wp.dll ارسال [یا اصطلاحا Redirect] می نماید [ISAPI سر نام کلمات Internet Server Application Programming Interface است که به عنوان واسط هایی با کاربری آسان برای برنامه های کاربردی میزبانی شده بوسیله وب سرور IIS مایکروسافت عمل می نماید. برای روشن تر شدن این اصطلاح این نکته متذکر می گردد که اگر با API های ویندوز در برنامه های تحت سکوی Win32 آشنایی داشته باشید می توان گفت که در واقع فلسفه وجودی و دلیل استفاده از ISAPI دقیقا مشابه فلسفه وجودی و دلیل استفاده از API هاست- م].

در این جلسه با هم ساده ترین برنامه ASP .Net را خواهیم ساخت و در طی ساخت این برنامه بخش های مختلف یک WebForm را بررسی می نماییم.

top  

اولین برنامه ASP .Net شما :

برای ساخت یک برنامه ASP .Net در دلفی 2006 از منوی File روی گزینه New کلیک کنید سپس گزینه ASP .Net Web Application - Delphi For .Net را انتخاب نمایید. ایجاد یک پروژه ASP .Net جدید در دلفی 8 و 2005 هم تقریبا روندی مشابه دلفی 2006 دارد. کادر محاوره ای New ASP .Net Application به صورت زیر پدیدار می گردد. این کادر محاوره ای شما را قادر می سازد تا نام برنامه، مسیر و سرور آنرا تعیین نمایید. در این کادر با فشردن کلید OK یک پوشه (مجازی) جدید در IIS برای میزبانی برنامه ASP .Net شما ساخته می شود. پیشنهاد می شود همواره نامی با معنا به پروژه هایتان اختصاص دهید. نام این پروژه را DelphiASPNetTest بگذارید.

 

 

با فشردن کلید OK برنامه جدید ASP .Net محتوی چندین فایل استاندارد ساخته می شود. این فایل ها شامل web.config , global.asax و یک فایل webform1.aspx می باشند. تمام فایل ها دارای ساختاری کد نویسی شده از قبل هستند. webform1.aspx نام وب فرم شما [یعنی همان خروجی قابل مشاهده بوسیله کاربر] می باشد. فعلا بر روی این فایل تمرکز کرده و در مورد آن توضیح خواهیم داد.

وب فرم ها ابتدایی ترین بلوک های سازنده یک برنامه کاربردی ASP .Net هستند. همانگونه که در برنامه های Win32 دلفی اشیائ TForm یا به طور کلی فرم ها جان و روح برنامه ها هستند، وب فرم ها هم جزئ عناصر رابط کاربر یک برنامه تحت وب محسوب شده و ظاهر [و راه تعامل و برقراری ارتباط کاربر با برنامه- م] را می سازند. به طور مشابه همانطور که اشیائ TForm دارای خواص و رویداد هستند، وب فرم ها هم خواص، متدها و رویدادها را برای کنترل های وبی که درون خود جای داده اند، ارائه می نمایند. وقتی شما یک وب فرم جدید ایجاد می نمایید، IDE دلفی دو گونه فایل را ایجاد می کند. یکی بخش بصری یا Visual (فایل های با پسوند aspx) و دیگری فایل منطق برنامه یا Code Behind که برای اداره [یا اصطلاحا Handel] کردن رویدادها و خواص کنترل های وب و خود فرم مورد استفاده قرار می گیرد. ساخت یک صفحه واحد وب از روی این دو گونه فایل به این روش، این امکان را می دهد تا طراحی ظاهر و منطق صفحات وب را از هم جدا نمایید.

  top

شروع کار :

چیزی که هم اکنون در IDE دلفی باید مشاهده نمایید، نمای طراحی مربوط به وب فرم WebForm1 است. در پایین IDE دلفی، سه برگه یا تب قابل مشاهده است : webform1.pas , webform1.aspx , Design که تب Design باید فعال شده باشد.

 

 

ما اکنون تعدادی کنترل وب را بر ر وی WebForm1 قرار خواهیم داد. در پالت ابزار یا Tool Palette گروه Web Controls را انتخاب نمایید. یک کنترل TextBox و یک Button و یک Label روی فرم قرار دهید. راحت ترین راه برای قرار دادن یک کنترل روی فرم وب دابل کلیک کردن روی آن است.

اگر نام کنترل های وب برایتان نا آشناست، نگران نباشید چرا که در جلسات بعدی به زودی در مورد کنترل های وب بحث خواهیم کرد.

 

 

حال بر روی کامپوننت Button دابل کلیک نمایید، همانطور که احتمالا انتظار دارید، می خواهیم کدی مناسب برای کنترل نمودن رویداد OnClick این Button بنویسیم. پس روی آن دابل کلیک نمایید!

ابتدا توجه نمایید که تب Design دیگر انتخاب شده نیست؛ بلکه اکنون تب WebForm1.pas فعال شده و به حالت انتخاب شده در آمده است. با نگاهی به کد موجود در WebForm1.pas متوجه خواهید شد که ساختار آن دقیقا مشابه یک یونیت معمولی دلفی است.

 

procedure TWebForm1.Button1_Click(sender: System.Object; 

                                       e: System.EventArgs);

begin

  Label1.Text := 'Hello:' + TextBox1.Text;

end;

 

حال یک خط کد، مشابه خط قرمز موجود در بالا اضافه نمایید. اگر شما از قبل با دلفی آشنایی و سابقه کار با آن را داشته باشید، این مسائل باید برایتان کاملا ملموس باشد. بسیار خوب! پارامتر Sender را هم در اینجا ملاحظه می نمایید. ما کدی برای کامپوننت Button1 جهت کنترل رویداد Click آن می نویسیم . توجه نمایید که در اینجا یک پارامتر اضافی دیگر با نام e از نوع System.EventArgs در هدر پروسیجر مشاهده می گردد.

  top

اجرای برنامه :

پس از فشردن F9 پنجره Internet Explorer همانند شکل زیر باز خواهد شد :

 

 

حال نام خودتان را در TextBox نوشته و روی دکمه کنار آن کلیک نمایید... چیزی که پس از اجرا ملاحظه خواهید کرد متنی است که به شما سلام می دهد! مثل Hello : Zarko

  top

بررسی اتفاقات :

فایل WebForm1.pas کدی را برای کلاس TWebForm1 تعریف می کند. این کلاس از  System.Web.UI.Page ارث بری می نماید. System.Web.UI.Page کلاس مهمی است که همه فرم های وب از آن مشتق می شوند. زمانی که شما F9 را می فشارید دلفی کلاس TWebForm1 را به یک فایل dll کامپایل می کند (برای بقیه فایل های مشابه نیز همین کار انجام می شود). هنگامی که شما این صفحه (یعنی webform1.aspx) را در مروگر وب مرور می نمایید، ASP .Net اطلاعات ظاهری (UI یا رابط های کاربری) صفحه را از فایلی که پسوند aspx دارد لود می نماید و دقیقا همین کار را هم برای لود کردن کدهای [منطق] صفحه از فایل dll کامپایل شده انجام می دهد. این تفکیک [جدا کردن منطق از طراحی ظاهر صفحه] انعطاف پذیری بسیار خوبی را برای برنامه بوجود می آورد. چرا که برای مثال شما می توانید کدهای HTML را بدون نیاز به کامپایل مجدد پروژه تغییر داده و UPdate نمایید.

وقتی شما دکمه موجود در فرم را کلیک نمودید؛ این فرم برای سرور ارسال می گردد، سرور این صفحه را بوسیله اطلاعاتی که در TextBox وارد نموده اید مجددا ایجاد کرده و صفحه جدیدی را برای مروگر می فرستد. در پایان هم مروگر سرویس گیرنده این صفحه را با کد HTML خالص اجرا می نماید.

  top

فرم وب :

هم اکنون نمای طراحی و کدهای موجود در یک وب فرم ساده را مشاهده خواهیم کرد. تب سوم با نام WebForm1.aspx را در پایین IDE دلفی فعال نمایید.

 

<%@ Page language="c#" 

    Debug="true" 

    Codebehind="WebForm1.pas" 

    AutoEventWireup="false" 

    Inherits="WebForm1.TWebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

  <head>

    <title></title>

    <meta name="GENERATOR" 

          content="Borland Package Library 7.1">

  </head>

  <body ms_positioning="GridLayout">

  <form runat="server">

    <asp:textbox id=TextBox1 runat="server">

    </asp:textbox>

    <asp:button id=Button1 runat="server" text="Button">

    </asp:button>

    <asp:label id=Label1 runat="server">Label</asp:label>

  </form>

</body>

</html>

 

یک فرم وب ASP .Net یک فایل متنی ساده با پسوند aspx است. یک فرم ASP .Net همانند یک فرم HTML معمولی است که یک تگ اضافی Runat = Server را به همراه دارد. این تگ فرم را به یک فرم سمت سرور یا Server Side تبدیل می نماید. یعنی پردازش ها سمت سرور انجام می شود. بیایید با هم ببینیم این صفحه aspx از چه چیزهایی تشکیل شده است :

در حال حاضر جالب ترین قسمت این صفحه خط اول آن است. در راهنمای صفحه، @ یا اصطلاحا Page Directive دلفی به طور اتوماتیک خواص Inherits و CodeBehind را مشخص می نمایند. ASP .Net تعدادی راهنمای کامپایلر که بوسیله علامت @ مشخص می شوند را ارائه می کند. راهنماهای کامپایلر یا Directive ها دستورالعمل های پردازشی هستند که به موتور زمان اجرا و کامپایلر یک سری اطلاعات اضافی در مورد طریقه اجرای کد برنامه می دهند.

در حال حاضر شما تنها باید به خاصیت CodeBehind که برابر webform1.pas تعیین شده است توجه نمایید، یعنی در واقع نام یونیتی که تمام کنترل کننده های روبداد ها یا Event Handler ها درون آن قرار گرفته اند. خاصیت Inherits هم به webform1.TWebForm1 که در واقع نام کلاس تعریف شده در webform1.pas که خود از System.Web.UI.Page ارث بری می نماید (مشابه ارث بری TForm1 از کلاس TForm در برنامه های Win32 دلفی) اشاره می کند.

توجه : در کد ارائه شده خاصیت Language برابر با زبان سی شارپ قرار گرفته است. دلیل این مساله این است که در حال حاضر زبان دلفی قابلیت نوشتن مستقیم در فایل های aspx را ندارد وتنها می توان به عنوان CodeBehind از آن استفاده نمود.

بین تگ های <Form> و <Form/> سه کنترل وب وجود دارد که ما آنها را در فرم وب قرار داده ایم. برای مثال :

<asp:button id=Button1 runat="server" text="Button"> </asp:button>

این کد کامپوننت Button را معرفی می نماید که خاصیت ID آن [معادل خاصیت Name در برنامه های win32 دلفی- م] برابر Button1 و خاصیت Text آن [معادل خاصیت Caption در برنامه های win32 دلفی] برابر Button می باشد.همچنین خاصیت استاندارد Runat=Server نیز به آن اضافه شده است.

  top

بازگشت به نمای طراحی :

قبل از پایان این جلسه، تب Design را فعال نمایید. به Object Inspector که در سمت چپ ویرایشگر کد قرار گرفته است نگاهی بیندازید. دقیقا مشابه Object Inspector موجود در نسخه های قبلی دلفی است که تاکنون با آنها کار کرده اید. سعی کنید از آن برای مقدار دهی به خواص کامپوننت ها و نوشتن کد Event Handler های هر یک از کامپوننت های وب فرم و همچنین خود وب فرم استفاده نمایید.

به طور کلی شما هیچ گاه نباید فرم هایتان را با نامی مشابه TWebForm1 نامگذاری نمایید [چرا که این نام یک نام کلی و پیش فرض است که دلفی به همه فرم ها اختصاص می دهد و عملکرد فرم را بیان نمی کند- م]. همچنانکه شما در برنامه های win32 دلفی نیز فرمی را با نام TForm1 نامگذاری نمی کنید. حال از Object Inspector برای تغییر نام فرم به THelloWorld استفاده نمایید. دقت کنید که این کافی نیست. شما همچنین باید webform1.aspx را با نامی متفاوت ذخیره نمایید، پیشنهاد می شود آنرا با نام Helloworld.aspx ذخیره نمایید. برای یونیت پروژه که پسوند pas دارد نیز همین کار را انجام دهید.

در انتها کامپوننت Button1 را انتخاب کرده و در Object Inspector تب Events را فعال نمایید. به نام رویدادها توجه کنید : همه رویدادها فاقد پیشوند On هستند [همانطور که به خاطر دارید در برنامه های تحت سکوی win32 در دلفی رویدادها با On شروع می شدند- م].در دنیای دات نت رویدادها بدون On نامگذاری می گردند. مثلا معادل OnClick رویداد Click و معادل OnTextChange رویداد TextChange را داریم.

  top

چند تذکر :

جلسه امروز در اینجا به پایان می رسد. اگر شما قبلا سابقه کار برنامه نویسی تحت سکوی win32 را داشته اید احتمالا در برخورد با مفاهیم تازه در این جلسه کمی سر در گم شده اید. حتما مواردی مثل نام کنترل ها، کدهای HTML ، کلاس های جدید و مواردی از این دست برای شما جدید هستند. اما جای نگرانی نیست! ما گام به گام جلو خواهیم رفت و نکات و مفاهیم جدیدی که درباره ASP .Net را نیاز دارید به شما خواهیم آموخت.

حال تا جلسه بعد تعدادی از کامپوننت ها را در وب فرمها قرار دهید و در Object Inspector خواص و رویدادهای آنها را بررسی کرده و تغییر دهید. سعی کنید معادل آنها را در برنامه های Win32 برای خودتان پیدا نمایید تا بتوانید تشابهی بین آنها برقرار سازید.

  top
 
 
 

کلیه حقوق این سایت متعلق به شرکت نرم افزاری الگوپارس می باشد