La lettura del libro "Professional Asp.Net Design Patterns" mi ha portato a riflettere su come organizzare un progetto che fosse più adeguato alle esigenze dell'azienda.
La soluzione di Visual Studio è composta da 6 progetti. I primi cinque sono librerie di classi, l'ultimo è un'applicazione web MVC 2.
I progetti descrivono anche i vari strati in cui ho diviso la soluzione.
Si parte dalla libreria "Model" che contiene le classi che descrivono le entità del dominio. Nel mio caso: il negozio, il prodotto, le categorie merceologiche, il marchio, le categorie editoriali. La libreria si occupa di modellare il comportamento di questi oggetti, con la validazione dei dati.
La persistenza dei dati è gestita tramite le classi del Repository. In questo caso ho implementato un pattern noto cercando di ottenere il massimo disaccoppiamento della base di dati concreta. Questo è ottenuto con l'utilizzo di Interfacce ad esempio la persistenza dell'entità categoria merceologica viene gestita da una classe categoryRepository e dall'interfaccia ICategoryRepository. Gli altri strati utilizzeranno chiamate a metodi dell'interfaccia e non avranno in alcun modo bisogno di sapere quale e' l'implementazione concreta di essi.
La libreria AppService contiene le classi siteservice e shopservice che sono le due classi fondamentali: shopservice in pratica realizza l'API del sistema esponendo tutti i metodi utilizzati dall'applicazione, la classe siteservice adatta questi metodi alla visualizzazione sul sito sfruttando delle classi mapper tra gli oggetti del dominio e le classi dello strato di presentazione.
La libreria ViewModel contiene la modellizzazione dei dati necessari alla visualizzazione delle pagine del sito per ora, ma infuturo potrà contenere visualizzazioni diverse dalla pagina web. Le Pagine derivano dalla classe BaseView che in pratica contiene gli oggetti comuni a tutte le pagine.
Infine la libreria Infrastructure che contiene classi per lo più statiche e che implementano metodi o servizi comuni.
Ultimo progetto è l'applicazione web asp.net mvc 2. Su questo non c'e' molto da aggiungere se non che i controller chiameranno istanze della classe siteservice con il compito di istanziare la giusta classe del viewmodel passata come modello alla view del sito.
Nel prossimo appuntamento un pò di teoria
"Nessun bambino si è mai intromesso nel partito repubblicano ed è sopravvissuto per raccontarlo" TB
venerdì 26 novembre 2010
martedì 23 novembre 2010
Enterprise Design: tentativo di andare oltre il solito cms
Oggi il primo test: tutto bene. Il mio ultimo lavoro procede verso la pubblicazione. Il countdown segna -10 giorni più che sufficienti per completare la prima fase.
Vorrei scrivere una serie di post per descrivere tutte le fasi che hanno portato dall'idea alla realizzazione.
Inizio con una breve introduzione che descrive il sistema.
"Il sistema deve funzionare come http://shopmilesandmore.com, quindi deve esserci una vetrina di negozi convenzionati, il visitatore potrà cercare per categoria merceologica o per nome del negozio, arrivati sulla scheda di dettaglio del negozio dovrà necessariamente inserire il numero della sua card. Ogni acquisto effettuato sui siti partner deve essere tracciato in modo che sia possibile riconoscere un tot di punti a fronte dell'acquisto."
Applicazione web su piattaforma .Net 4.0, database Microsoft Sql Server 2008, per il presentation layer un sito asp.net MVC 2.
Nel prossimo post la descrizione dell'architettura.
Vorrei scrivere una serie di post per descrivere tutte le fasi che hanno portato dall'idea alla realizzazione.
Inizio con una breve introduzione che descrive il sistema.
"Il sistema deve funzionare come http://shopmilesandmore.com, quindi deve esserci una vetrina di negozi convenzionati, il visitatore potrà cercare per categoria merceologica o per nome del negozio, arrivati sulla scheda di dettaglio del negozio dovrà necessariamente inserire il numero della sua card. Ogni acquisto effettuato sui siti partner deve essere tracciato in modo che sia possibile riconoscere un tot di punti a fronte dell'acquisto."
Applicazione web su piattaforma .Net 4.0, database Microsoft Sql Server 2008, per il presentation layer un sito asp.net MVC 2.
Nel prossimo post la descrizione dell'architettura.
giovedì 5 agosto 2010
URL Unexpectedly
Mi è capitato dover far leggere un web service .Net da una pagina asp. La cosa non è particolarmente difficile. Ho utilizzato l'oggetto MSXML2.XMLHTTP facendo poi il parser dell'xml ricevuto.
Ovviamente non è andata come speravo e mi sono scontrato con il seguente errore: "Request format is unrecognized for URL unexpectedly ending in...".
La soluzione è aggiungere nel web.config le seguenti righe:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
Ovviamente non è andata come speravo e mi sono scontrato con il seguente errore: "Request format is unrecognized for URL unexpectedly ending in...".
La soluzione è aggiungere nel web.config le seguenti righe:
<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
</system.web>
mercoledì 7 luglio 2010
WebMatrix
Da oggi rilasciato tramite il web platform installer 3.0 è possibile testare il nuovo Microsoft WebMatrix un tool con cui è possibile scrivere siti web in modo semplificato. WebMatrix non sostituisce Visual Studio ma è pensato a chi vuole un approccio ancora più semplice.
Web Matrix sfrutta tutti gli ultimi tool rilasciati tra cui IIS Express, Sql Server CE 4 e Razor il nuovo motore di renderizzazione per le pagine asp.net mvc.
Web Matrix sfrutta tutti gli ultimi tool rilasciati tra cui IIS Express, Sql Server CE 4 e Razor il nuovo motore di renderizzazione per le pagine asp.net mvc.
Silverlight out of browser
Una delle features più interessanti di Silverlight 3 e 4 è la capacità di esecuzione fuori dal browser.
Prendendo una pagina web in cui gira un'applicazione silverlight e cliccando con il tasto destro del mouse verrà visualizzato un menu contestuale con la voce "Installa l'applicazione nel tuo computer..", questa voce fa partire un processo di installazione semplicissimo l'applicazione viene semplicemente copiata sulla macchina locale in una cartella prestabilita. Non ci sono cambiamenti al registro di sistema, non vengono importate librerie addizionali, non sono richiesti account amministrativi. L'utente può scegliere solo dove posizionare il collegamento se nello start menu oppure sul desktop.
Quali sono le caratteristiche delle applicazioni silverlight out of browser?
1) Storage isolato di file fino a 25 Mb, può essere esteso ma deve essere accettato esplicitamente dall'utente.
2) Accesso ai tasti che il browser invece maschera tipo i tasti funzione.
3) Può essere aggiunta allo start menu e alla taskbar e mostrare un'icona personalizzata. Può essere integrata alla taskbar di Windows 7 se si lancia nel trust mode Elevated.
4) Richiede un controllo esplicito sulla presenza di nuove versioni a differenza delle applicazioni in-browser.
5) NOn può ricevere parametri di inizializzazione dai parametri del plug-in io interagire in qualche modo con il DOM html dato che non c'e' alcun DOM con cui lavora.
Prendendo una pagina web in cui gira un'applicazione silverlight e cliccando con il tasto destro del mouse verrà visualizzato un menu contestuale con la voce "Installa l'applicazione nel tuo computer..", questa voce fa partire un processo di installazione semplicissimo l'applicazione viene semplicemente copiata sulla macchina locale in una cartella prestabilita. Non ci sono cambiamenti al registro di sistema, non vengono importate librerie addizionali, non sono richiesti account amministrativi. L'utente può scegliere solo dove posizionare il collegamento se nello start menu oppure sul desktop.
Quali sono le caratteristiche delle applicazioni silverlight out of browser?
1) Storage isolato di file fino a 25 Mb, può essere esteso ma deve essere accettato esplicitamente dall'utente.
2) Accesso ai tasti che il browser invece maschera tipo i tasti funzione.
3) Può essere aggiunta allo start menu e alla taskbar e mostrare un'icona personalizzata. Può essere integrata alla taskbar di Windows 7 se si lancia nel trust mode Elevated.
4) Richiede un controllo esplicito sulla presenza di nuove versioni a differenza delle applicazioni in-browser.
5) NOn può ricevere parametri di inizializzazione dai parametri del plug-in io interagire in qualche modo con il DOM html dato che non c'e' alcun DOM con cui lavora.
giovedì 1 luglio 2010
Supporto in ASP.NET per database embedded
Altra novità in arrivo in casa Microsoft dopo IIS Express.
A breve verrà rilasciato una nuova opzione per la scelta del database di una web application asp.net. Sql Server Compact Edition 4 infatti è la nuova scelta gratuita, embedded e compatibile con le API fin qui utilizzate per lavorare in ambiente web application.
Lavora con le API esistenti
SQL CE permette l'utilizzo delle libreria di accesso ai dati .Net attualmente esistenti, ovvero è possibile usare ADO.Net, ma anche Entity framework e NHibernate. Dal punto di vista dello sviluppatore quindi non cambia niente.
Non richiede installazione
E' sufficiente ccopiare la dll nella cartella bin e le pagine asp.net possono cominciare ad utilizzare l'engine del database. Non richiede setup o permessi extra, non è necessario essere amministratori della macchina.
I dati sono salvati in file sul disco
L'engine del database gira in ram insieme con l'applicazione, i dati sono salvati su file (.sdf) che possono essere messi nella cartella App_Data. Quando l'applicazione viene chiusa il datase automaticamente viene chiuso e scaricato.
Hosting condivisi
SQL CE 4 può funzionare in scenari "medium trust", senza che debba essere installato qualcosa sul server del provider. Quindi sarà possibile sviluppare applicazioni che oltre a contenere codice e dati conterranno anche il motore del database e il deployment sarà fatto tramite un trasferimento di file via ftp, nessun altro passaggio extra riguardante database o configurazioni. Niente più pagamenti extra per quote di sql server.
Stored Procedure
Non sono supportate dall'engine di SQL CE 4.
Sarà interessante studiare il comportamento dell'engine all'aumentare delle richieste sicuramente una opzione possibile per la maggior parte dei siti e delle applicazioni, per quelle ad alto volume rimane la necessità di passare a server maggiormente performanti.
Il rilascio della prima Beta pubblica è programmato per la prossima settimana insieme a IIS Express.
A breve verrà rilasciato una nuova opzione per la scelta del database di una web application asp.net. Sql Server Compact Edition 4 infatti è la nuova scelta gratuita, embedded e compatibile con le API fin qui utilizzate per lavorare in ambiente web application.
Lavora con le API esistenti
SQL CE permette l'utilizzo delle libreria di accesso ai dati .Net attualmente esistenti, ovvero è possibile usare ADO.Net, ma anche Entity framework e NHibernate. Dal punto di vista dello sviluppatore quindi non cambia niente.
Non richiede installazione
E' sufficiente ccopiare la dll nella cartella bin e le pagine asp.net possono cominciare ad utilizzare l'engine del database. Non richiede setup o permessi extra, non è necessario essere amministratori della macchina.
I dati sono salvati in file sul disco
L'engine del database gira in ram insieme con l'applicazione, i dati sono salvati su file (.sdf) che possono essere messi nella cartella App_Data. Quando l'applicazione viene chiusa il datase automaticamente viene chiuso e scaricato.
Hosting condivisi
SQL CE 4 può funzionare in scenari "medium trust", senza che debba essere installato qualcosa sul server del provider. Quindi sarà possibile sviluppare applicazioni che oltre a contenere codice e dati conterranno anche il motore del database e il deployment sarà fatto tramite un trasferimento di file via ftp, nessun altro passaggio extra riguardante database o configurazioni. Niente più pagamenti extra per quote di sql server.
Stored Procedure
Non sono supportate dall'engine di SQL CE 4.
Sarà interessante studiare il comportamento dell'engine all'aumentare delle richieste sicuramente una opzione possibile per la maggior parte dei siti e delle applicazioni, per quelle ad alto volume rimane la necessità di passare a server maggiormente performanti.
Il rilascio della prima Beta pubblica è programmato per la prossima settimana insieme a IIS Express.
Iscriviti a:
Post (Atom)