Avatar billede apo Praktikant
13. januar 2007 - 23:30 Der er 21 kommentarer og
2 løsninger

Fra ASP til PHP eller fra ASP til ASP.Net?

Hej

Jeg vil gerne udskifte min nuværende serverside-teknologi på mit website fra ASP til noget andet og mere tidssvarende (inden ASP en dag ikke længere understøttes af de forskellige webhoteller).

Jeg havde troet at det ville være forholdsvis let at gå fra ASP til ASP.Net, men der tog jeg fejl, og de tutorials jeg har kigget igennem, synes jeg ikke er videre oplysende. Og der er desuden heller ikke mange kode-eksempler at komme efter her på E, synes jeg.

Jeg har f.eks. endnu ikke set et eksempel på en simpel (fungerede) ASP.Net-kode, som i ASP ville kunne laves så let som:

<%
  Response.Write "Hello world!"
%>

Derfor overvejer jeg nu, at skifte fra ASP til PHP i stedet for fra ASP til ASP.Net - da PHP ser ud til at minde meget om ASP (bare med andre koder), og da der samtidig er masser af kodeeksempler at finde såvel på E som på andre sites.

Men inden jeg endegyldigt afskriver ASP.Net, vil jeg høre om jeg har været uheldigt kun at falde over de forkerte og ubrugelige skod-tutorials, som den på HTML.dk m.fl.? - ja, undskyld mit tyske, men det er forbandet frustrerende at have brugt tid på noget, som ikke bringer én videre.

Spørgsmål:
1. Skal man installere en speciel ASP.Net-editor fra Microsoft for at kunne lave .aspx-sider, som eksemplerne i tutorial'en på HTML.dk bygger på? Eller skal man blot have en almindelig HTML-editor, som når man skriver ASP-classic?

2. Findes der en _velegnet_ tutorial eller et website, hvor man kan komme forholdsvis hurtigt fra ASP til ASP.Net (med _brugbare_ eksempler)?

3. Hvis jeg blot ønsker at fremtidssikre mine nuværende server-side funktioner på den letteste måde, uden at skulle begynde helt forfra, er PHP så et bedre valg for mig end ASP.Net?

4. Hvad er der af fordele ved ASP.Net i forhold til PHP?

Tak.
Avatar billede arne_v Ekspert
14. januar 2007 - 00:08 #1
Du skal lære forholdsvis meget for at komme godt igang med ASP.NET - en solid baggrund
med objekt orienteret programmering hjælper med processen. Det er ikke
"bare gå igang" som ASP og PHP.

re 1)

Langt de fleste bruger Visual Studio (evt. i den gratis VWD Express udgave), men
principielt kan du godt bruge notepad.

re 2)

Næppe. Man kommer nemlig ikke hurtigt fra ASP til ASP.NET. ASP.NET er en helt anden
måde at tænke og arbejde på end ASP. Men der findes nogle brugbare ASP.NET tutorials -
overvej også at købe en bog f.eks. fra Wrox.

re 3)

PHP er særdeles populært på web hoteller, så det er absolut ikke noget dårligt valg,
hvis det er prioriteten.

re 4)

ASP.NET er designet fra scratch med henblik på at være objekt orienteret og
velegnet til store løsninger.  PHP er vokset fra noget simpelt til også at have
objekt orienterede muligheder hen af vejen. Jeg vil sige at ASP.NET har nogle
fordele ved fra start at være designet til det som det bruges til. PHP har
for mange hacks. Til gengæld er PHP langt nemmere at komme igang med.
Avatar billede apo Praktikant
14. januar 2007 - 00:15 #2
Tak for dit indlæg, arne_v.

Bare for at se et hurtigt eksempel, hvordan skal jeg så gøre for at få denne ASP-kode til at fungere som ASP.Net?:

<%
  Response.Write "Hello world!"
%>

Jeg har prøvet med:

<%
  Response.Write("Hello world!");
%>

- et eksempel, som jeg har fundet her på E, men jeg fik en fejl.
Avatar billede apo Praktikant
14. januar 2007 - 00:16 #3
Fejlen er: "Server Error in '/' Application."
Avatar billede arne_v Ekspert
14. januar 2007 - 00:17 #4
den burde virke hvis language er sat til C#
Avatar billede keysersoze Guru
14. januar 2007 - 00:17 #5
1. Der findes flere måder at lave .NET på - skal du have det optimale ud af .NET skal du anskaffe dig visual studio .net fra MS eller web matrix (også fra MS)

2. forskellen på ASP og .NET er så stor at du ikke lynhurtigt kan skifte fra det ene til det andet - og kompleksiteten i .NET gør også at du ikke lige så let kan finde samme let tilgængelige ressourcer. De findes da (fx har MS lagt nogle færdige hjemmesider ud man kan få inspiration fra http://msdn2.microsoft.com/en-us/asp.net/aa336613.aspx) det er bare et spørgsmål om at lede nok og specielt tænke på at man ikke skal lede efter de samme ord som med asp (hvilket vel er lettere sagt end gjort).

3. jeg vil klart mene at .NET er et klart bedre valg - ikke med det sagt at php er dårligt, men der er nok betydeligt mere i fremtiden der vil bygge på .NET end på php.

4. performance, sikkerhed, genbrug, flere sprog...

Det der er vigtigt at forstå er, at ASP.NET ikke bare er en ny version af ASP - det er en helt anderledes måde at arbejde på. Samtidig skal det også nævnes, at man nok aldrig ville vælge ASP.NET til at skrive "Hello World" - det kan nok klares hurtigere i ASP eller PHP - til gengæld vil .NET klart bedre kunne håndtere store og komplekse løsninger. Grunden til at du nok har problemer med at finde tutorials og kodestumper er, at mange af de ting du i ASP vil kunne se eksempler på rundt omkring enten bliver håndteret på en anden måde i .NET og derfor kræver det et nærmere kig på Frameworket eller også fordi kompleksiteten i det gør det for stort til bare at skrive et lille kodeeksempel (ikke at det er ensbetydende med at det er svært at lave - det er bare svært at fremvise).
Avatar billede apo Praktikant
14. januar 2007 - 00:19 #6
arne_v > Det eneste jeg har gjort er at uploade en .aspx-fil med følgende indhold:

<%
  Response.Write("Hello world!");
%>

Men der mangler måske noget?
Avatar billede arne_v Ekspert
14. januar 2007 - 00:19 #7
men den rigtige måde er noget a la:

<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
    t.Text = "Hello world!";
}
</script>
<asp:label id="t" runat="server"/>
Avatar billede arne_v Ekspert
14. januar 2007 - 00:20 #8
prøv med:

<%@ Page Language="C#" %>
<%
  Response.Write("Hello world!");
%>
Avatar billede apo Praktikant
14. januar 2007 - 00:42 #9
keysersoze > Også tak for dit indlæg. Det gør det lidt lettere for mig, at se forskellen på ASP og ASP.Net.

arne_v > Dit første eksempel minder faktisk om måden, man bruger CSS på, hvor henter specifikationerne via en class:

CSS:
.tText {noget:noget_andet;}

HTML:
<span class="tText">Noget</span>

Kan man, lige som med CSS, også lægge ASP.Net koderne ud i en ekstern fil? Hvis, hvordan gør man det?
Avatar billede arne_v Ekspert
14. januar 2007 - 00:47 #10
ja - det er faktisk anbefalet at have en foobar.aspx med kun tags og en foobar.aspx.cs
(eller foobar.aspx.vb) med kun kode
Avatar billede apo Praktikant
14. januar 2007 - 00:53 #11
Hvordan gør jeg det, kan du vise mig et kort eksempel på hvordan man kobler tingene sammen?
Avatar billede arne_v Ekspert
14. januar 2007 - 00:55 #12
det er forskelligt i ASP.NET 1.1 og 2.0 men jeg kan bixe et 1.1 eksempel
Avatar billede apo Praktikant
14. januar 2007 - 00:56 #13
Jeg skulle have adgang til ASP.Net 2.0, hvis det er...
Avatar billede arne_v Ekspert
14. januar 2007 - 00:58 #14
foobar.aspx

<%@ Page Language="C#" Inherits="Foo.Bar" %>
<asp:label id="t" runat="server"/>

foobar.aspx.cs

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Foo
{
    public class Bar : Page
    {
        protected Label t;
        public void Page_Load(Object src, EventArgs e)
        {
            t.Text = "Hello world!";
        }
    }
}
Avatar billede arne_v Ekspert
14. januar 2007 - 00:59 #15
koden er copy pastet og tilrettet uden at være testet, men det er princippet

i 2.0 så arver de ikke fra hinanden men bruger 2.0 partial class muligheden

(men overordnet er princippet det samme)
Avatar billede arne_v Ekspert
14. januar 2007 - 01:00 #16
og Visual Studio kan iøvrigt lave en masse af det arbejde for dig
Avatar billede apo Praktikant
14. januar 2007 - 01:09 #17
Okay, det ser lidt mere kompliceret ud når man henter koden fra en ekstern fil, end når koden er i den samme fil (jeg kan kun nogenlunde gennemskue det).

Inherits="Foo.Bar" - hvad betyder det?

Og hvordan med sikkerheden, som keysersoze nævner skulle være bedre i ASP.Net. Er der nogle sikkerhedsmæssige aspekter man skal være opmærksom på, lige som med PHP og SQL-injections?

Kan man lave sikkerhedsmæssigt "ged i den", hvis der er noget man ikke er helt opmærksom på?
Avatar billede arne_v Ekspert
14. januar 2007 - 01:11 #18
Inherits="Foo.Bar" betyder at web siden i foobar.aspx som bliver compilet
til en klasse arver fra klassen Foo.Bar som er i foobar.aspx.cs
Avatar billede arne_v Ekspert
14. januar 2007 - 01:12 #19
I sidste ende er det stadig programmøren som er ansvarlig for sikkerheden - SQL
injections og andre oopser er en potentiel mulighed i alle sprog.

ASP.NET har features til at undgå dem, men man skal vælge de rigtige features.
For at undgå SQL injection bruger man parameters i .NET.
Avatar billede apo Praktikant
14. januar 2007 - 01:22 #20
Jeg må læse noget mere om ASP.Net før jeg helt begynder at forstå hvordan det hænger sammen. Men nu har jeg da fået en begyndende indsigt i hvordan jeg overhovedet laver en .aspx-fil, tak for det.

I øvrigt troede jeg kun, at SQL-injections var et problem i PHP?

Læg venligst et svar, arne_v
Avatar billede arne_v Ekspert
14. januar 2007 - 01:27 #21
nix

de kan skam også laves i ASP.NET, ASP, JSP, Perl CGI, whatever hvis udvikleren
bare ukritisk konkatanerer bruger input ind i SQL og udfører det
Avatar billede arne_v Ekspert
14. januar 2007 - 01:28 #22
og et svar
Avatar billede apo Praktikant
14. januar 2007 - 01:29 #23
Ok.

Jeg siger tak for hjælpen. Points er afgivet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester