Les vieilles version d'ASP étaient effectivement peu pratiques à l'utilisation (J'en ai fait, j'en ai bavé).
Des pages interprétées avec un langage assez lourdingue
Un exemple de code ASP existant dans l'une des applications internes au boulot :
Mantenant, l'aspx/.net, c'est totalement différent.
On entre dans l'ère des page compilées, mise en cache mémoire, etc
L'aspx maintenant, c'est ça
avec derrière des pages comme ça
Y'a vraiment un monde de différence.
Par exemple, au boulot, les sites sont en full aspx/.net et intègrent du flash et diverses autres technologies. Les serveurs web au boulot tournent sur des W2K8 (4 serveur en load balancing à 16 GB de mémoire chacun). La dessus, on héberge des dizaines de site qui reçoivent des millions de visites par mois (15 millions en mai dernier).
On est vraiment à des kilomètres du vieux asp d'il y a 10 ans.
[edit]
Au passage, ASP est loin d'être un langage aussi statique que ce que cette discussion laisse à penser.
Pour preuve, cette autre page
C'est dynamique, il y a des boucles, des fonctions des accès à la base de donnée, des includes, des variables, des retours vers le client.
Et tout ça, c'est de l'asp "old school", qui, encore une fois, fonctionne en mode interprété comme PHP.
Des pages interprétées avec un langage assez lourdingue
Un exemple de code ASP existant dans l'une des applications internes au boulot :
Code :
<%IF GetParam("cmdAction")="" THEN%>
<script language="JavaScript" src="/learner/_js/toolbarImages.js"></script>
<%END IF%>
<! --
The Login ID for the user is:
<% Response.Write Request.ServerVariables(GetAppVar("vch_siteminder_loginname")) %>
Mantenant, l'aspx/.net, c'est totalement différent.
On entre dans l'ère des page compilées, mise en cache mémoire, etc
L'aspx maintenant, c'est ça
Code :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Vuepoint.Web.Vls.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
avec derrière des pages comme ça
Code :
using System;
using System.Reflection;
namespace Vuepoint.Web.Vls
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect(
string.Format("{0}?{1}",Common.PageUrl.GetPageUrl(typeof(Portal.Login)),Request.QueryString));
}
internal static string Version
{
get {
Version version = Assembly.GetExecutingAssembly().GetName().Version;
const string VERSION_FORMAT = "VLS v{0}.{1}.{2}.{3}";
string versionstr = string.Format(
VERSION_FORMAT,
version.Major,
version.Minor,
version.Build,
version.Revision);
return versionstr;
}
}
}
}
Y'a vraiment un monde de différence.
Par exemple, au boulot, les sites sont en full aspx/.net et intègrent du flash et diverses autres technologies. Les serveurs web au boulot tournent sur des W2K8 (4 serveur en load balancing à 16 GB de mémoire chacun). La dessus, on héberge des dizaines de site qui reçoivent des millions de visites par mois (15 millions en mai dernier).
On est vraiment à des kilomètres du vieux asp d'il y a 10 ans.
[edit]
Au passage, ASP est loin d'être un langage aussi statique que ce que cette discussion laisse à penser.
Pour preuve, cette autre page
Code :
<% @ Language = VBScript %>
<!--#include file="include/functions.asp"-->
<html>
<head>
<title>Server SLA</title>
<link rel="stylesheet" type="text/css" href="css/sla.css">
<link rel="stylesheet" type="text/css" href="css/jquery.css">
<script type="text/javascript" src="script/sla.js"></script>
<script type="text/javascript" src="script/functions.js"></script>
</head>
<body>
<%
function ServerList(sApp)
%>
<!--[if IE]><script language="javascript" type="text/javascript" src="script/excanvas.pack.js"></script><![endif]-->
<script type="text/javascript" src="script/jquery.pack.js"></script>
<script type="text/javascript" src="script/jquery.bgiframe.pack.js"></script>
<script type="text/javascript" src="script/jquery.ajaxQueue.js"></script>
<script type="text/javascript" src="script/jquery.dimensions.pack.js"></script>
<script type="text/javascript" src="script/jquery.autocomplete.pack.js"></script>
<script type="text/javascript" src="script/jquery.flot.pack.js"></script>
<%
if sApp<> "" Then
szSQL = "SELECT ApplicationId FROM " & CST_INTELSYSTEMDB & "SLA_Applications WHERE ApplicationName='" & sApp & "'"
set oRs=getMoMRs(szSQL)
i=oRs(0)
oRs.close
szSQL = "exec " & CST_INTELSYSTEMDB & "sp_get_Servers_Collection @ApplicationId='" & i & "'"
set oRs=getMoMRs(szSQL)
szSearch=""
while not oRs.eof
szSearch = szSearch & ",'" & oRs("BaseManagedEntityId") & "'"
oRs.MoveNext
Wend
oRs.close
szSearch="C.BaseManagedEntityId in (" & mid(szSearch,2) & ") "
Else
szSearch="1=1"
End If
response.write "<div class=""block"">"
response.write "<table>"
ColTitle "#", 16
ColTitle "Server",150
colTitle "Status",50
colTitle "CPU",50
colTitle "MEM",50
response.write "<td class=""coltitle"" colspan=""10"">Used Disk Space</td>"
szSQL="SELECT "
szSQL=szSQL & "C.BaseManagedEntityId, "
szSQL=szSQL & "C.NetbiosComputerName, "
szSQL=szSQL & "S.Healthstate, "
' szSQL=szSQL & "ISNULL(SLA.CPUInternalId,-1) as CPUID, "
' szSQL=szSQL & "ISNULL(SLA.MEMInternalId,-1) as MEMID, "
szSQL=szSQL & " ( "
szSQL=szSQL & " SELECT SO.HealthState "
szSQL=szSQL & " FROM state AS SO, BaseManagedEntity as BME "
szSQL=szSQL & " WHERE SO.monitorid "
szSQL=szSQL & " IN ( "
szSQL=szSQL & " SELECT MonitorId "
szSQL=szSQL & " FROM Monitor "
szSQL=szSQL & " WHERE MonitorName = 'Microsoft.SystemCenter.HealthService.ComputerDown' "
szSQL=szSQL & " ) AND "
szSQL=szSQL & " SO.Healthstate = '3' AND "
szSQL=szSQL & " SO.BaseManagedEntityId=BME.BaseManagedEntityId AND "
szSQL=szSQL & " BME.displayname=C.principalname "
szSQL=szSQL & " ) AS Online "
szSQL=szSQL & "FROM State as S WITH (NOLOCK) "
szSQL=szSQL & " INNER JOIN MT_Computer as C WITH (NOLOCK) "
szSQL=szSQL & " ON S.BaseManagedEntityId=c.BaseManagedEntityId "
szSQL=szSQL & " INNER JOIN monitor as M WITH (NOLOCK) "
szSQL=szSQL & " on M.MonitorId=S.MonitorId AND M.ParentMonitorId is null "
szSQL=szSQL & " INNER JOIN " & CST_INTELSYSTEMDB & "SLA_Servers as SLA WITH (NOLOCK) "
szSQL=szSQL & " on SLA.BaseManagedEntityId=C.BaseManagedEntityId "
szSQL=szSQL & "WHERE "
szSQL=szSQL & szSearch
szSQL=szSQL & "ORDER BY "
szSQL=szSQL & " Online DESC, "
szSQL=szSQL & " healthstate DESC, "
szSQL=szSQL & " netbioscomputername "
set oRs=getMoMRs(szSQL)
i=1
' i=((iPage-1)*iPageSize)+1
while not oRs.Eof
response.write "<tr id=""path_" & oRs("netbioscomputername") & """><td valign=""top"">"
response.write i
response.write "</td><td valign=""top"">"
response.write uCase(oRs("netbioscomputername"))
response.write "</td><td align=""center"" valign=""top"">"
if oRs("Online")=3 Then
szImg="offline.gif"
ElseIf oRs("healthstate")=3 Then
szImg="cross.gif"
ElseIf oRs("healthstate")=2 Then
szImg="triangle.gif"
Else
szImg="circle.gif"
End If
response.Write "<img onClick=""getServerStatusMsg(this, '" & oRs("baseManagedEntityId") & "')"" src=""images/" & szImg & """ />"
response.write "</td>"
response.write "<td align=""left"" colspan=""3"" valign=""top"">[<a href=""javascript:;"" onclick=""getServerDetails(this.parentNode,'" & oRs("BaseManagedEntityId") & "')"">Click for details</a>]</td>"
response.write "</tr>"
i=i+1
oRs.MoveNext
Wend
ColTitle "#", 16
ColTitle "Server",150
colTitle "Status",50
colTitle "CPU",50
colTitle "MEM",50
response.write "<td class=""coltitle"" colspan=""10"">Used Disk Space</td>"
response.write "</table>"
response.write "</div>"
End Function
ServerList request.querystring("app")
%>
</body>
</html>
C'est dynamique, il y a des boucles, des fonctions des accès à la base de donnée, des includes, des variables, des retours vers le client.
Et tout ça, c'est de l'asp "old school", qui, encore une fois, fonctionne en mode interprété comme PHP.
Quand on te dit qu'un projet est terminé à 90%, prépare toi pour les 90% suivant
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC
Ninety-Ninety Rule
"Une guerre de religions, c'est quand deux peuples s'entretuent pour savoir qui a le meilleur ami imaginaire"
Vu sur IRC