Tag Archives: Asp.Net

Differenze tra web application e web site in Visual Studio

Ancora oggi mi capita spesso di trovare clienti che non conoscono la differenza tra un progetto di tipo Web Site ed uno di tipo Web Application in Visual Studio.

new-web-site

new-web-application

Web site project (WSP)

I progetti di tipo web site sono compilati dinamicamente. Sul web server vengono pubblicate tutte le pagine e i controlli con il markup ma anche tutti i sorgenti C#/VB.Net.

Ogni pagina è compilata la prima volta che viene richiesta e viene generata un’assembly per ogni file.

L’unico aspetto comodo dei web site è che è possibile seguire un ciclo di modifica tipico di un sito ASP classic in cui si modifica la pagina e la si pubblica senza dover ricompilare l’intero progetto.

Ovviamente in scenari anche minimamente complessi non è certamente questo il motivo per scegliere di sviluppare un progetto web site.

Tra l’altro la proliferazione di queste DLL combinata con l’eventuale frequente modifica dei namespace potrebbe causare errori di runtime.

I web site project hanno una cartella particolare App_Code in cui è possibile inserire direttamente delle classi C#/VB.Net. Anche queste devono essere copiate sul web server e vengono compilate dinamicamente.

Continuous integration e deploy

I web site non si integrano facilmente nei processi di Continuous Integration. Ad esempio un web site non consente di gestire gli eventi di pre e post build.

Il deploy viene effettuato tramite un normale XCopy oppure da Visual Studio sfruttando il tool Copy Web Site.

Copy-web-site

Web application project (WAP)

I progetti di tipo web application sono precompilati in un’unica DLL.

In questo caso il deploy riguarda le pagine ed i controlli con il markup ma non i file di code behind che vengono sostituiti dall’unica DLL nella cartella Bin.

Al contrario di un web site per pubblicare una modifica è necessario ricompilare l’intero progetto.

Continuous integration e deploy

La web application genera una normalissima assembly .Net semplificando il deploy ed il testing.

Anche il versioning risulta facilitato in quanto come ogni assembly contiene tra le altre le informazioni di Assembly Version e File Version.web-application-publish

Per effettuare il deploy si può usare lo strumento Publish di Visual Studio oppure creare un Deployment Package che può essere direttamente installato in IIS.

In entrambi i casi gli artefatti da mettere sul web server contengono esclusivamente pagine e controlli e le DLL delle cartella bin.

Tutti i file esclusi a livello di soluzione ed i sorgenti non vengono copiati/impacchettati.

Riassunto delle principali differenze

Web site Web application
Compilazione Dinamica, un’assembly per ogni singola pagina.
Effettuata la prima volta che viene richiesta la pagina o ad ogni modifica
Compilazione dell’intera web application e generazione di un’unica assembly
Deploy Deploy di pagine e controlli.
Deploy di tutti i file sorgenti di code behind
Deploy di pagine e controlli.
Deploy dell’assembly generata nella cartella bin
Strumenti di deploy Copy web site Publish
Build deployment package
Continuous Integration Non dispone di eventi di pre/post build Gestisce gli eventi di pre/post build
L’assembly contiene le informazioni di versione
Gestione file Tutti i file su file system sono obbligatoriamente compresi nel web site project Granulare:
- è possibile escludere dei file a livello di progetto in Visual Studio
- è possibile specificare quali file compilare/copiare/embeddare

Concludendo non esistono dubbi per me che la soluzione per ogni progetto che sia minimante più grande della gestione dei DVD di casa debba essere sviluppata tramite una web application.

Tra l’altro la compilazione in Visual Studio di un Web Site di una certa dimensione risulta molto più lenta di quella di una Web Application.

Può capitare di avere ancora dei vecchi progetti web site. Consiglio la lettura dell’articolo di Scott Guthrie che elenca gli step necessari per fare l’upgrade e le modifiche necessarie.

Riferimenti

ASP.NET: Web Site or Web Application?

Upgrading VS 2005 Web Site Projects to be VS 2005 Web Application Projects

RequestValidation e RequestValidationMode in ASP.NET 4.0

Dalla versione 2.0 di Asp.Net a default è impossibile inserire del testo html nelle textbox per motivi di sicurezza, in particolare per evitare la script injection.

Cercando di inserire dei tag html in una form si ottiene un’eccezione di questo tipo:

A potentially dangerous Request.Form value was detected from the client

Tipicamente questo comportamento viene disabilitato in alcune aree del backoffice delle web application proprio per consentire l’inserimento di testo Html come ad esempio la descrizione estesa dei prodotti in un sito di commercio elettronico.

Per disabilitare la validazione è sufficiente impostare ValidateRequest a false all’interno della direttiva page.

Fin qui tutto normale.

Però migrando un progetto al framework 4.0 la validazione scatta nuovamente e si ottiene nuovamente lo YSOD.

Il problema si presenta in quanto la pipeline di validazione è stata modificata. Per ottenere nuovamente il comportamento del framework 2.0 è sufficiente settare il parametro requestValidationMode nel web.config:

<httpRuntime requestValidationMode=”2.0″ />

Ogni valore inferiore a 4.0 viene interpretato come 2.0.

Maggiori informazioni sul sito MSDN:

HttpRuntimeSection.RequestValidationMode Property

Pubblicate le slide della sessione ASP.NET MVC 3 a SMAU

Ho pubblicato su slideshare la presentazione powerpoint della sessione che ho tenuto a SMAU business a Bologna il 9 giugno.

Oltre alle sessioni su Windows Phone (Lorenzo Barbieri di Microsoft) e HTML 5 (Alessandro Scardova di DotDotNet) ho annoiato la platea parlando di software engineering, di pattern di presentazione (Model View Controller) e più in dettaglio dell’implementazione Microsoft del pattern MVC su Asp.Net.

Incorporo qui la presentazione (altrimenti è raggiungibile da slideshare).

Asp.net MVC 3

Visualizza tutte le presentazioni di Stefano Benedetti su SlideShare







Attivare i menù Add Controller e Add View di MVC in un progetto di tipo Web Application

Stò effettuando la migrazione della piattaforma di e-commerce all’architettura MVC 3.

Dato che è una modifica radicale stò procedendo per passi e la prima modifica è aggiungere lo scheletro di un’architettura MVC all’attuale progetto Web form.

In questo modo ho una struttura ibrida, il vecchio sito funziona completamente e posso piano piano modificare il layer di presentazione.

I primi passi sono:

  • aggiungere la reference a System.Web.MVC
  • aggiungere le cartelle Controllers e Views
  • modificare il file Global.asax per gestire le RouteMap e i global filters

A questo punto però cliccando col tasto destro sulle cartelle Controllers e Views mancano le rispettive voci di menù per aggiungere i controller e le view.

E’ necessario “istruire” Visual Studio per fargli capire che il progetto supporta anche i template MVC.

Per fare questo è necessario modificare il file csproj della web application aggiungendo il GUID dei progetti MVC.

Il tag ProjectTypeGuids deve cominciare con {E53F8FEA-EAE0-44A6-8774-FFD645390401}:

<ProjectTypeGuids>{E53F8FEA-EAE0-44A6-8774-FFD645390401};[senza ulteriori spazi e senza modificare il resto del tag)]</ProjectTypeGuids>
 

SMAU Bologna e Community Tour 2011 – Windows Phone, HTML 5 e MVC

Giovedì 9 giugno 2011 nel contesto di SMAU Business alla Fiera di Bologna si terrà una nuova tappa del community tour organizzata da DotDotNet.

L’evento avrà come tema il presente ed il futuro del web con sessioni su Windows Phone 7, HTML 5 e MVC 3.

Mi è piacevolmente toccata la sessione su ASP.NET MVC 3 che considero un prodotto fondamentale per chiunque sviluppi su web applicazioni di una certa dimensione/durata.

Come al solito vi invito all’evento ed alla cena a seguire.

Agenda

Ora Sessione Speakers
13.45 – 14.00 Registrazione -
14.00 – 14.45 Keynote – Presente e futuro del Web Microsoft Italia
14.45 – 15.45 Introduzione alla piattaforma Windows Phone

Windows Phone 7 ha introdotto un nuovo modo per intendere il telefono e una nuova piattaforma basata su hardware consistente, una piattaforma di sviluppo basata su Silverlight e XNA e un Marketplace con nuove opportunità di business.
In questa sessione vedremo come sviluppare su Windows Phone, come promuovere le proprie applicazioni tramite il marketplace e inoltre vedremo le moltissime novità della versione “Mango” che verrà rilasciata in autunno.

Lorenzo Barbieri
Microsoft Developer Evangelist
15.45 – 16.00 Pausa -
16.00 – 17.00 Le novità di HTML5

HTML5 è il nuovo riferimento per lo sviluppo di siti e applicaizoni web based. In questa sessione vedremo come il nuovo standard può essere utilizzato per realizzare contenuti cross-browser e plugin-free ad alto impatto visuale.

Alessandro Scardova
Microsoft MVP, DotDotNet
17.00 – 18.00 ASP.NET MVC3

MVC favorisce la manutenzione delle applicazioni web tramite una architettura elegante ed una chiara ed esplicita separazione delle competenze, l’impiego dei più diffusi pattern di software engineering, il controllo completo dell’HTML generato e degli URL, la testabilità ed estendibilità. In questa sessione vedremo le novità principali della versione 3.

Stefano Benedetti
DotDotNet

Registrazione

Per registrarsi potete seguire questo link: http://dotdotnet.org/content/SmauBo2011.aspx

Guida ad IIS Express in formato PDF

Adesso che è stato rilasciato assieme a WebMatrix e che a breve l’integrazione con Visual Studio 2010 sarà completa con il rilascio del Service Pack 1 ho scritto una piccola guida ad IIS Express.

La guida copre un po’ tutti gli aspetti del nuovo web server.

Si parte da una introduzione su cos’è IIS Express e sulle sue differenze rispetto a Cassini e a IIS.

La guida poi esamina l’installazione, configurazione ed esecuzione e comprende in dettaglio l’integrazione con Visual Studio 2010 e 2008.

SOMMARIO

  1. Cos’è IIS express
  2. Confronto tra IIS, Cassini e IIS Express
  3. Installazione
  4. Piattaforme supportate
  5. Esecuzione di IIS Express
    1. Esecuzione di IIS Express dalla command line
    2. Esecuzione tramite WebMatrix
  6. Gestire siti con IIS Express
  7. IIS Express dietro le quinte
    1. Il file applicationHost.config
    2. La sezione <applicationPools>
    3. La sezione <sites>
  8. Windows Process Activation Service
  9. Integrazione con Visual Studio 2010
    1. Configurazione di IIS Express da Visual Studio
    2. Impostare IIS Express come web server di default
  10. Configurare IIS Express con Visual Studio 2008

DOWNLOAD

La guida è in formato PDF (392,11 kb).

Per riceverla gratuitamente nella tua casella di posta elettronica puoi fare una richiesta dalla pagina contatti.

In questo vecchio post potete sinteticamente vedere le differenze tra i tre web server:

Cassini e IIS hanno partorito un figlio: IIS Express

Completata l’agenda della sessione ASP.Net 4 e IE9

CommunitTour2010Ho completato l’agenda della sessione che terrò martedi 16 novembre nell’ambito del Community Tour organizzato dalle community DotDotNet e SharePointCommunity.

Powerful ASP.Net 4.0

  • Core services
    • Web.config File Refactoring
    • Auto-Start Web Applications
    • Permanently Redirecting a Page
    • Shrinking Session State
  • AJAX
    • jQuery out of the box
    • Content Delivery Network Support
    • ScriptManager Explicit Scripts
  • Web forms
    • Meta Tags con Page.MetaKeywords e Page.MetaDescription
    • ViewState e ViewStateMode
    • Routing in ASP.NET 4
    • Gestire i Client ID
    • Persisting Row Selection nei Data Controls
    • ASP.NET Chart Control
    • Html Encoded Code Expressions
    • CSS e rendering improvements
      • div Elements e Hidden Fields
      • Rendering delle tabelle per i controlli template
      • ListView Control Enhancements
      • CheckBoxList e RadioButtonList Control Enhancements
      • Menu Control Improvements
  • Visual Studio 2010 Web Development Improvements
    • HTML e JavaScript Snippets
    • JavaScript IntelliSense
  • Web Application Deployment
    • Web.config Transformation

Internet Explorer 9

  • HTML 5
    • Canvas
    • Audio
    • Video
    • Semantic tags
    • Client side storage
  • Accelerazione tramite GPU
  • Pinned sites
  • Developer Tools (aka F12)

Iscrizioni

Ricordando quali sono i temi trattati:

  • Sviluppo di Windows Phone 7
  • Migliorare la User Interface
  • Conoscere le novità di ASP.NET 4.0 e Internet Explorer 9
  • Il framework di sviluppo di SharePoint 2010
  • Sviluppare applicazioni silverlight per SharePoint 2010

rinnovo l’invito a partecipare all’evento. Per maggiori informazioni ed iscrizioni: http://dotdotnet.org/content/Tour2010Nov.aspx

Community Tour Autunno 2010 a Bologna

Sono aperte le iscrizioni al prossimo evento di Community che si terrà a Bologna il 16 novembre 2010 organizzato dalla SharePointCommunity.it e DotDotNet, lo User Group Emiliano-Romagnolo dedicato a Microsoft .NET in collaborazione con Microsoft Italia,

L’evento è gratuito, si articolerà nell’arco dell’intera giornata e sarà suddiviso in due track parallele per IT Pro (meglio noti come sistemisti) e per sviluppatori.

Si parlerà di SharePoint, di Windows Phone 7, di SQL Server 2008 R2, delle novità di ASP.NET 4 e di IE 9

Agenda track sviluppatori

L’agenda della track per sviluppatori è la seguente:

Ora Sessione Speakers
09.30 – 10.00 Registrazione -
10.00 – 10.30 Keynote

Lorenzo Barbieri
Microsoft Italia

10.30 – 11.45 Windows Phone 7: Sviluppare applicazioni per il Marketplace
In questa sessione vedremo come sviluppare applicazioni per il Marketplace di WP7, con esempi presi da applicazioni reali. 
Lorenzo Barbieri
Microsoft Italia
11.45 – 13.00

Migliorare la UX nelle applicazioni Silverlight e Windows Phone 7 con Expression Blend
Expression Blend 4 è lo strumento che permette di realizzare User eXperiences accattivanti e di forte impatto verso l’utente finale. In questa sessione vedremo come realizzarla con Silverlight  e Windows Phone 7,

Alessandro Scardova
DotDotNet 
13.00 – 14.00

Break

-

14.00 – 18.00

Windows Phone 7 Lab 
Un intero pomeriggio a disposizione per toccare con mano gli smartphone e per provare le proprie applicazioni. Il lab si terrà in una saletta parallela. Per iscriversi occorre mandare una mail a itamsdn@microsoft.com specificando data, città e applicazioni da testare.

14.00 – 15.15

Powerful ASP.NET 4.0 & Internet Explorer 9
NET Framework versione 4 include miglioramenti per ASP.NET 4 in aree mirate. Anche Visual Studio 2010 include miglioramenti e nuove funzionalità per ottimizzare lo sviluppo di risorse Web. In questa sessione verrà fornita una panoramica di numerose delle nuove funzionalità incluse nella nuova versione. 
Vedremo anche le novità per gli sviluppatori introdotte da Internet Explorer 9

Stefano Benedetti
DotDotNet
15.15- 16.30

Introduzione allo sviluppo con Sharepoint 2010.
SharePoint 2010 è un framework di sviluppo maturo e aperto all’integrazione, che ogni sviluppatore .NET può utilizzare per creare soluzioni di integrazione. In questa sessione vedremo le novità e gli strumenti offerti dalla piattaforma. In particolare concentremo la nostra attenzione sugli strumenti offerti da Microsoft Visual Studio 2010 e sul modello di accesso ai dati offerto da SharePoint 2010 

Paolo Pialorsi
SharePoint Community 

16.30 – 16.45

Break

-

16.45 – 18.00

Sviluppare applicazioni Silverlight per Sharepoint
Per capire i vantaggi che Visual Studio 2010 e Sharepoint 2010 portano ai developer, attraverso demo live, svilupperemo una piccola applicazione Silverlight che visualizzerà i nostri dati su Sharepoint 2010 tramite servizi e vedremo come testare le nostre applicazioni Sharepoint tramite Pex & Mole

Salvatore Di Fazio
SharePoint Community   

Iscrizioni

Per maggiori informazioni e per iscriversi all’evento: http://dotdotnet.org/content/Tour2010Nov.aspx

Track per IT Pro

La track relativa agli IT Pro è organizzata dalla SharePointCommunity in collaborazione con UGISS (User Group Italiano SQL Server).

Per maggiori dettagli e per l’iscrizione vi rimando al sito della SharePointCommunity.

Cassini e IIS hanno partorito un figlio: IIS Express

E’ notizia di oggi sul blog di ScottGu che a breve verrà rilasciato IIS Express in versione beta.

IIS express è LA soluzione definitiva per lo sviluppo ed il testing in locale di siti web e web application.

Lo sviluppo ASP.Net si è sempre basato su due soluzioni:

  • ASP.Net Development Server (meglio noto come Cassini)
  • IIS locale (quindi nelle varie declinazioni 5, 6 o 7 a seconda del sistema operativo client installato)

Entrambe le soluzioni hanno vantaggi e svantaggi e IIS Express raccoglie il meglio dei due prodotti.

Ho provato a raccogliere in una tabella tutte le differenze indicate da ScottGu:
 

Cassini

 IIS

IIS Express

Leggero e veloce green-check-mark

(meno di 10mb di download)

Porte remote Non si mette in ascolto su nessuna porta remota (il che lo fa vedere di buon occhio dai reparti IT)
Non richiede diritti amministrativi Alcuni dipartimenti IT potrebbero non consentire l’installazione di un web server locale
(nè per il setup e tantomeno per il debug)
Richiede setup Non richiede setup  Si riporto testualmente Scott:”…super quick install…”
Funzionalità da web server (SSL, URL Rewriting, Custom Security Settings)
Platform support La versione di IIS dipende dal sistema operativo (quindi 5.1 su XP…) Si installa su tutte le versioni di Windows a partire da XP fornendo quindi a tutti un web server IIS 7.x
Esecuzione Il suo punto di forza è proprio stato il fatto che basta premere F5 da Visual Studio ed è funzionante Si lancia semplicemente tramite il tasto destro sulla cartella che contiene la web application.

E’ già prevista l’integrazione con Visual Studio per poterlo lanciare tramite F5

Installazione side-by-side Si installa side-by-side con Cassini e con IIS
Pipeline Classic e integrated Classic e integrated
Supporto Classic ASP (per gli sfortunati che ancora lo usano…)
Supporto PHP
tramite il modulo FastCGI

tramite il modulo FastCGI
  Note L’ambiente è praticamente uguale a quello di produzione

Se queste sono le premesse, ScottGu dov’è il link per il download???? Lo voglio!!

Tutte le info sul post originale:
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx