Webstack
Bejelentkezés

Elfelejtetted a jelszavad?

Nem vagy még tag? Kattints ide és regisztrálj most!

ASP.NET - Active Server Pages

ASP.NET | peter  | 2012-09-26 11:26:18

Az ASP.NET a Microsoft .Net keretrendszer része. Egy olyan összetett technológia ami segítségével lehetőségünk van weboldalak és web alkalmazások fejlesztésére. Rengeteg rémhír terjeng arról, hogy az ASP.NET alapú fejlesztés bonyolult és indokolatlanul eltér a többi webfejlesztő program nyelvek szemléletétől. Van ezekben némi igazság, ha az ember már foglakozott php alapú fejlesztéssel akkor elsőre.. másodikra.. sőt sokadik alkalomra is furcsának fogja találni az ASP.NET megoldásait. Azonban hozzáértő kezekben megbízható, gyors és biztonságos fejlesztés nyújt a programozónak.

ASP.NET vs PHP

Van egy régóta tartó vita, amit a kezdő, nem annyira tapasztalt és/vagy csak az egyik technológiát ismerő programozók folytatnak egymás között. A vita témája az ASP vs. PHP. Sok más programozótól hallottam, olvastam már pro-contra érveket az egyik és a másik mellett. Azonban van egy nagy baki mindben érvben. A két dolgot képtelenség összehasonlítani ugyanis az ASP.NET az nem egy programnyelv.

Az egyik leg egyszerűbb módja annak, hogy szemléltessem a különbségeket és azt, hogy mennyire felesleges a vita, hogy egy egyszerű szöveg kiíratás bemutatok php-s és ASP.NET-es megközelítésből:

PHP

echo „Hello world!”; 

ASP.NET

<asp:Literal ID="Literal1" runat="server" Text="Hello world!"></asp:Literal>

Vegyük figyelembe, hogy míg a php-s példánál egy program nyelv egyik utasításával írattam ki a képernyőre a szöveget, addig az ASP.NET-nél egy XML alapú leíró utasítás segítségével mondtam, meg mi kerüljön a képernyőre. Ennek ellenére jogos a kérdés. Miért bonyolítja túl ezt az egyszerű dolgot az ASP.

Valójában ez nem bonyolítás. Sőt! Bizonyos helyzetekben, olyan helyzetekben ahol szükség van dinamikusan generált adatokra, az ASP.NET megoldása meglepően hasznos és gyors.

Na most képzeljünk mind a két kódrészlet elé és mögé egy sor szöveg kiírást, plusz rakjunk egy gombot is az oldalra aminek a lenyomásával, a már megírt „Hello world!” szövegünk megváltozik a „Hello new world!.” szövegre.

PHP

A megoldás igen egyszerű. Szükség van egy <form> tag-ra a button-unkhoz amit pedig elláttunk megfelelő name attribútummal. Ezeket is ki kell generáltatnunk a php nyelv segítségével. Szükség van még egy változóra amiben a kiírandó szöveget tároljuk. A programunk elején megvizsgálhatjuk, hogy a $_POST tömbben szerepel-e a változtatást jelző elem és ha igen akkor a megfelelő szöveget beállítjuk a változónkba. Az echo utáni részt pedig kicseréljük a változónk nevére.

<?php

$s = "Hello world!";

if(isset($_POST['changeText'])) $s = "Hello new world!";

echo "hosszú szöveg"

echo $s;

echo "másik hosszú szöveg";

?>
<form action="welcome.php" method="post">

<input type="submit" name="change" />

</form>

ASP.NET

Itt teljesen más a megközelítés. Az asp oldalunkra behúzunk 1-1 új literál vezérlőt, aminek megadjuk a szövegét a text paraméterében. Behúzunk egy button vezérlőt is. Design nézetben a Visual Studio magától generál egy metódust a button onclick eseményéhez a szerver oldalon, ha kétszer rákattintunk a button-ra a szerkesztőben. (Persze ezt be is gépelhetjük.)

Ilyenkor megjlenik a az aspx.cs file-unkban az adott metódus aminek a törzsében egyszerűen megváltoztathatjuk a kívánt szöveg tartalmát.(Természetesen form tag-ünk itt is van, de ezt már a file létrehozásánál megelőlegezte nekünk a visual studio és mi minden vezérlőt és tartalmat ebbe a form tag-be illesztettünk be.)

Hosszú szöveg... Hello world! Hosszú szöveg...
protected void Button1_Click(object sender, EventArgs e)

{

    Literal1.Text = "Hello new world!";

}

Megint csak láthatjuk, hogy teljesen más szemléletről van szó, tehát a vita értelmetlen.

Természetesen az utóbbi megoldásra van lehetőség php-s környezetben is kiegészítők segítségével, de ez esetben megint nem beszélhetünk ASP vs. PHP csatáról egyszerűen, hiszen önmagában a php erre nem nyújt megoldást, ASP.NET pedig nem egy programnyelv.

"Az ASP-ben elősször hinni kell..."

Ha elkezdesz ASP.NET oldalakat programozni rengeteg „miért”-be és „hogyan”-ba fogsz belebotlani, amire nem mindig lehet egyszerűen választ találni.

  • Hogy működik GridView?
  • Hogyan lehet datasource-okat módosítani?
  • Mért nem lehet egyszerűen kiíratni html kódot?
  • Miért van szükség kontrolokra?
  • Hogyan működik az updatepanel?

Többnyire csak fél válaszokat lehet kapni fórumokról és egyéb netes anyagokból. Megtudjuk, hogyan kell használni a toolbox-ban található kész kontrolokat/vezérlőket, de a háttérben zajló eseményekről kevés helyen van használható leírás.

Az ASP.NET egyik hatalmas előnye, hogy még bele sem kezdtünk az oldalunkba, de már egy sor kész kódunk van, konfigurálható Control-ok hada áll a szolgálatunkban. A .NET keretrendszer pedig olyan töménytelen osztálykészlettel rendelkezik, hogy az esetek többségében saját eljárásokat írnunk sem kell. Ezek mellett a net-en szinte bármilyen library-t megtalálhatunk, amire szükségünk van.

Csak pár példa címszavakban amit pár kattintással beszúrhatunk a rendszerünkbe:

  • Membeship rendszer (teljes körű csoport és felhasználó kezelés)
  • Ajaxos frissítések
  • Menürendszer
  • Autó generált táblázatok és listák egyszer adatbázis csatolással
  • Linq To SQL és Entity Framework (ezeket bef ogom mutatni egy-egy turtorial-ban)
  • Egyszerű adatbázis kapcsolatok a Control-okhoz
  • Valid html kód generáló Controlol-ok
  • Datepicker
  • Calendar
  • Validátorok

Szóval "Don't panic!", megéri beleásni magunkat az ASP.NET nem kicsit ködös működésébe.

Kezdjünk is bele.

Nem lesz kis falat, de a kezdeti nehézségek után el se hiszitek, milyen gyorsan lehet haladni ezzel a Microsoftos „szörnyszülöttel”.

Mire lesz szükségünk?

Microsoft Visual Studio (2010 erősen ajánlott, a példa programokat ebben írtam)

Microsoft SQL server 2008 R2

Némi C#, HTML és SQL tudás hasznos lehet (az sem árt ha hallottunk már az objektum orientált programozásról)

Ha most először foglalkozol ASP.NET-es alkalmazás fejlesztéssel, akkor a következő pár dologgal jó lesz tisztába lenni:

Mi is az az aspx:

A php file-ok ASP.NET-es megfelelőinek mondanám, bár egy picit összetettebb a dolog. Minden aspx file-hoz tartozik egy .aspx.cs és egy .aspx.designer.cs file. A .aspx file-ban van leírva az adott oldal html felépítése (ez történhet html kód írásával vagy ASP-s kontrolok felhasználásával, de erről majd később). A .aspx.cs file egy úgynevezett codebehind. Itt tudjuk a server oldali kódot megírni, befolyásolni a .aspx oldalon lévő tartalmat. Lényegében az oldalhoz tartozó server oldali események gyűjtőhelye. A .aspx.designer.cs file adja meg a kettő közti kapcsolatunkat. Ha egy ASP-s kontrolt a toolbar-ról a .aspx oldalunkra húzunk és a kontrolhoz tartozik egyedi ID és runat paraméter akkor a designer file-unkban létrejön egy példány melynek neve a kontrol ID-je lesz.

Figyeljük meg hogy a két .cs file-unkban ugyanaz az osztály van definiálva. Ez a partial osztály módosító miatt lehetséges.

MasterPage

Na ennek a megértése talán egy picit bonyolultabb lehet. Vegyünk egy példát:

Adott egy weblapunk aminek van 4-5 oldala. Az oldalak felépítése többnyire megegyezik és csak a fő tartalmi elemek változnak, a menüsor, a fejléc-lábléc html felépítése ugyanaz mindenhol.

Egyik megoldás: Felépítünk egy aspx oldalt amit lemásolunk párszor és a tartalmi részeket kicseréljük. Remek ötlet... elsőre. A probléma ott van, hogyha változnak a közös részek akkor egyesével végig kell néznünk a file-okat és kicserélni amit kikell. Nem túl praktikus mi?

Nézzük mi a tökösebb megoldás! Készítsünk egy MasterPage-t amiben felépítjük a html kódunkat, beszúrjuk a szükséges css, js file-okat a kódban pedig ContentPlaceholder-ek segítségével jelöljük a változó tartalmak helyét. Ezután persze létre kell hoznunk a szükséges aspx file-okat úgy, hogy azokat a már legyártott masterpage-ből származtatjuk. Így az aspx oldalakon csak a lényeges tartalmi részeket kell kitöltenünk.

ascx vagy másnéven UserContol

Létrehozhatunk egyedi UserControl-okat. Ezek ugyanúgy kapnak .cs és .designer.cs file-okat mint az aspx-ek. A UserControl-ok felhasználása nagyon sokoldalú és rengeteg helyen hasznát vesszük. Vegyünk egy egyszerű példát:

Van egy listánk a regisztrált felhasználóinkról és szeretnénk őket az adataikkal együtt a képernyőre kiíratni és pár műveletet is végezni velük.

Első megoldás:

<asp:ListView ID="ListView1" runat="server" DataKeyNames="Id" OnItemCommand="ListView1_OnItemCommand">
        <ItemTemplate>
            <asp:Table ID="Table1" runat="server">
                <asp:TableHeaderRow>
                    <asp:TableHeaderCell>Mezőnév</asp:TableHeaderCell>
                    <asp:TableHeaderCell>Érték</asp:TableHeaderCell>
                </asp:TableHeaderRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label1" runat="server" Text="Név:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:Label ID="Label2" runat="server" Text='<%# Eval("name") %>'></asp:Label>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label3" runat="server" Text="Cím:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:Label ID="Label4" runat="server" Text='<%# Eval("address") %>'></asp:Label>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label5" runat="server" Text="Szemlyi igazolvány száma:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:Label ID="Label6" runat="server" Text='<%# Eval("userId") %>'></asp:Label>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label7" runat="server" Text="E-mail:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:Label ID="Label8" runat="server" Text='<%# Eval("email") %>'></asp:Label>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell ColumnSpan="2">
                        <asp:Button ID="Button1" runat="server" CommandName="Delete" Text="Törlés" />
                        <asp:Button ID="Button2" runat="server" CommandName="Edit" Text="Szerkesztés" />
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:Table ID="Table1" runat="server">
                <asp:TableHeaderRow>
                    <asp:TableHeaderCell>Mezőnév</asp:TableHeaderCell>
                    <asp:TableHeaderCell>Érték</asp:TableHeaderCell>
                </asp:TableHeaderRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label1" runat="server" Text="Név:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Eval("name") %>'></asp:TextBox>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label3" runat="server" Text="Cím:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:TextBox ID="TextBox2" runat="server" Text='<%# Eval("address") %>'></asp:TextBox>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label5" runat="server" Text="Szemlyi igazolvány száma:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:TextBox ID="TextBox3" runat="server" Text='<%# Eval("userId") %>'></asp:TextBox>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell>
                        <asp:Label ID="Label7" runat="server" Text="E-mail:"></asp:Label>
                    </asp:TableCell>
                    <asp:TableCell>
                        <asp:TextBox ID="TextBox4" runat="server" Text='<%# Eval("email") %>'></asp:TextBox>
                    </asp:TableCell>
                </asp:TableRow>
                <asp:TableRow>
                    <asp:TableCell ColumnSpan="2">
                        <asp:Button ID="Button1" runat="server" CommandName="Cancel" Text="Törlés" />
                        <asp:Button ID="Button2" runat="server" CommandName="Update" Text="Szerkesztés" />
                    </asp:TableCell>
                </asp:TableRow>
            </asp:Table>
        </EditItemTemplate>
        <EmptyItemTemplate>
            <asp:Label ID="Label9" runat="server" Text="Nincsennek adatok."></asp:Label>
        </EmptyItemTemplate>
    </asp:ListView>

Második megoldás

<%@ Register Src="~/UserControls/UserManage.ascx" TagPrefix="UC" TagName="UserView" %>
<asp:ListView ID="ListView1" runat="server" DataKeyNames="Id">
        <ItemTemplate>
 	      <UC:UserView ID="UserView1" runat="server" SetId='<%# Eval("Id") %>' />
        </ItemTemplate>
        <EmptyItemTemplate>
               <asp:Label ID="Label9" runat="server" Text="Nincsennek adatok."></asp:Label>
        </EmptyItemTemplate>
 </asp:ListView>

Láthatjuk, hogy mennyivel egyszerűbb és átláthatóbb a második megoldásunk. Ezen felül, ha bármi változna a megjelenítésben, nem kell bogarásznunk az aspx oldalunkon, hanem megnyitjuk a UserControlt és átírjuk amit szeretnénk. Az adatok vezérlését is rábízhatjuk a usercontrol-unkra.

Membership

Na ez egy igen hasznos dolog. A Microsoftnál voltak olyan profik és megoldották azt, hogy pár kattintással kapjunk az oldalunkhoz teljes körű felhasználó és csoport kezelést. A regisztrációtól, a bejelentkezésig és felhasználó menedzsmentig mindent megkapunk (igaz ez a legritkább esetekben elég). A visual studio toolbar-jában találunk a membershiphez tartozó controlokat. Regisztráció, Bejelentkezés, Felhasználói csoport kezelés, Státusz kijelzés stb.

IIS

Na ez az a téma amibe nem szeretnék nagyon belefolyni. Elég annyit tudnunk róla, hogy az IIS a php-s társadalom számára olyan, mint az Apache. Röviden, ez a mi webszerverünk.

Röviden ennyit tudnék bemutatni az ASP.NET-ből. A következő pár tutoriálban bemutatom a Visual Studio nyújtotta fontosabb ASP.NET-es vezérlők használatát.

Pár hasznos link:

http://aries.ektf.hu/wiki3/

https://devportal.hu/

http://www.tutorial.hu/asp-alapok/

Szerző: peter

címkék
Címkék: tutorial, microsoft, asp.net,

Hozzászólások

Hozzászóláshoz be kell jelentkezni!

Keress minket Facebookon
Ajánlások