View Full Version : [ASP.NET] Sviluppo e Deploy Applicazione
Ciao ragazzi; mi sto avvicinando, dopo una breve parentesi con Java/JSP, allo sviluppo di Web App in .NET; vada per Visual Web Developer (uso Visual Studio 2010 Professional Edition) e vada per IIS 7, mi sono sorte alcune domande da porgere a tutti coloro che fanno uso quotidiano/e non di questa tecnologia.
Utilizzate IIS in locale o la versione "LITE" di IIS integrata in Visual Studio per lanciare in runtime le vostre Web App?
Il Deploy, come lo effettuate? Package? Web Deploy? Copy Web Site? Quale è la soluzione migliore secondo voi?
Parliamo di DB; per quanto riguarda SQL CE nessun problema, ma se usiamo SQL Server? Fate il deploy insieme alla applicazione tramite gli strumenti offerti da Visual Studio oppure... export e import delle tabelle da LOCALE/MACCHINA VIRTUALE a MACCHINA REMOTA?
Il DBMS, SQL Server, voi lo tenete in locale, in remoto o su una Virtual Machine? Io ho messo una VMWare Workstation con Server 2008 R2 e SQL Server sopra di esso, almeno tengo SEPARATO lo sviluppo del DB dal codice. Voi come vi comportate?
Grazie e saluti a tutti.
:D
tomminno
27-01-2011, 17:49
Utilizzate IIS in locale o la versione "LITE" di IIS integrata in Visual Studio per lanciare in runtime le vostre Web App?
Se non sbaglio la versione Express di IIS per Visual Studio non è ancora uscita dalla beta (SP1). Quello integrato attualmente è quello che un tempo si chiamava "Cassini". Per il debug di un applicativo web normale va benissimo. Solo in casi particolari (es debug multithread, debug con connessioni provenienti da altre macchine, per usare alcuni header particolari non supportati da Cassini) allora sei obbligato ad usare IIS.
Il Deploy, come lo effettuate? Package? Web Deploy? Copy Web Site? Quale è la soluzione migliore secondo voi?
Dipende dalla sostanza del tuo aggiornamento. Ad esempio dovendo aggiornare un assembly in gac per 500 macchine la via migliore è msdeploy, più o meno la stessa cosa se devi aggiornare un website su macchine ridondate. Non è perfetto ma è l'unico (che abbia provato e trovato) che ti consente di avere il completo controllo sulla macchina e lo puoi usare anche per aggiornare SqlServer, ovviamente è indicato per aggiornamenti via script.
Se devi pubblicare un semplice sito web una banalissima copia va più che bene.
Parliamo di DB; per quanto riguarda SQL CE nessun problema, ma se usiamo SQL Server? Fate il deploy insieme alla applicazione tramite gli strumenti offerti da Visual Studio oppure... export e import delle tabelle da LOCALE/MACCHINA VIRTUALE a MACCHINA REMOTA?
Personalmente preferisco l'utilizzo del Publishing Wizard che crea uno script da eseguire poi con il Management Studio.
Il DBMS, SQL Server, voi lo tenete in locale, in remoto o su una Virtual Machine? Io ho messo una VMWare Workstation con Server 2008 R2 e SQL Server sopra di esso, almeno tengo SEPARATO lo sviluppo del DB dal codice. Voi come vi comportate?
Grazie e saluti a tutti.
:D
A lavoro per il db di sivluppo abbiamo una macchina dedicata con 24 Gb di ram :read:
Per uno sviluppo più personale l'utilizzo di una macchina virtuale mi sembra decisamente eccessivo per le risorse hardware che impegna, già Visual Studio non è una piuma, poi ci metti la macchina virtuale e il server sql. Ti ci vogliono almeno 8Gb di ram per lavorare agevolemente.
Ciao, ti ringrazio per la celere risposta; ho letto in giro del sistema di Deploy basato su Installer .msi, ottimo se devi fare un'installazione intranet o su N macchine; per il singolo sito io uso Copy Web Site di VS 2010 per il momento, funziona da "banale" FTP.
Devo ancora prendere la mano su come realizzare i Deploy della Base di Dati sviluppata con SQL Server 2008; per quanto riguarda quest'ultimo io ho una Virtual con Windows Server 2008, SQL Server 2008 e IIS 7 installati (per fare il deploy locale prima di mandarli in produzione e, sinceramente, con 4 GB di ram me la cavo bene... ne ho dedicato solo 1 alla Virtual). Lo ammetto, sono tirato, ma hai soluzioni diverse?
Magari mettersi IIS e SQL Server sulla macchina di sviluppo e basta?
Sto cercando la soluziuone migliore per approciarmi a .NET dato che lo dovrò usare pesantemente per il lavoro da qui ai prossimi mesi e, arrivando da PHP/Python e JSP, il mondo cambia un pò... :)
tomminno
27-01-2011, 19:44
Ciao, ti ringrazio per la celere risposta; ho letto in giro del sistema di Deploy basato su Installer .msi, ottimo se devi fare un'installazione intranet o su N macchine; per il singolo sito io uso Copy Web Site di VS 2010 per il momento, funziona da "banale" FTP.
E ma poi l'installer lo avvii a mano su ogni macchina? Uno script avviato da remoto su tutte le macchine è molto più pratico. Oltretutto puoi preparare uno script di rollback che ti riporta la macchina allo stato precedente, con un installer è più difficile in quanto tende a disinstallare tutto.
Per quanto riguarda l'ftp non è detto che sia presente sulle macchine su cui uno va a pubblicare (anzi per esperienza personale l'ftp non c'è mai, ma ovviamente questo dipende dai casi)
Devo ancora prendere la mano su come realizzare i Deploy della Base di Dati sviluppata con SQL Server 2008;
Il Publishing Wizard è praticamente la scelta obbligata, anche perchè è l'unico strumento che ti consente di estrarre uno script contenente la struttura del database o volendo solo i dati. Per quanto riguarda gli aggiornamenti dopo la prima pubblicazione, solo script sql di aggiornamento.
per quanto riguarda quest'ultimo io ho una Virtual con Windows Server 2008, SQL Server 2008 e IIS 7 installati (per fare il deploy locale prima di mandarli in produzione e, sinceramente, con 4 GB di ram me la cavo bene... ne ho dedicato solo 1 alla Virtual). Lo ammetto, sono tirato, ma hai soluzioni diverse?
Magari mettersi IIS e SQL Server sulla macchina di sviluppo e basta?
Si secondo me ti risparmi una inutile macchina virtuale, tanto per sviluppo non generi un carico eccessivo sulla macchina che può gestire benissimo sia webserver che database. Ovviamente non farai stress test di rilievo.
Il Publishing Wizard è praticamente la scelta obbligata, anche perchè è l'unico strumento che ti consente di estrarre uno script contenente la struttura del database o volendo solo i dati. Per quanto riguarda gli aggiornamenti dopo la prima pubblicazione, solo script sql di aggiornamento.
Mi informerò meglio su questo strumento.
Grazie!
Si secondo me ti risparmi una inutile macchina virtuale, tanto per sviluppo non generi un carico eccessivo sulla macchina che può gestire benissimo sia webserver che database. Ovviamente non farai stress test di rilievo.
Il discorso della Virtual la uso come Hosting Remoto; dato che mi sto approciando per le prime volte a .NET per il Web, non so ancora come muovermi bene e quindi ho configurato una Virtual con Windows Server 2008 e IIS 7; li ci deployo (LOL) i progetti da Visual Studio, come se fosse una VPS Remota o un servizio di Hosting finale.
Almeno capisco la logica di funzionamento.
Caspita, con PHP/Python e JSP era tutto più immediato :D
Kralizek
27-01-2011, 20:04
allora, io ti consiglio questo (per quanto riguarda lo sviluppo, del deploy non me ne occupo):
1) un IIS7/7.5 locale come web server. Cassini va bene ma per certe cose è veramente limitato e comunque è meglio avere un sistema di sviluppo omogeneo a quello di produzione. In attesa di IIS7 Express.
2) per piccoli sviluppi, sql server ce 4 va bene. caso medio sql server express in locale va bene (fino a 4 gb!). altrimenti un server di sviluppo con sql server full è necessario. Ad ogni modo, code-wise, tutto è equivalente. cambia solo la stringa di connessione che sta nel file di configurazione
allora, io ti consiglio questo (per quanto riguarda lo sviluppo, del deploy non me ne occupo):
1) un IIS7/7.5 locale come web server. Cassini va bene ma per certe cose è veramente limitato e comunque è meglio avere un sistema di sviluppo omogeneo a quello di produzione. In attesa di IIS7 Express.
2) per piccoli sviluppi, sql server ce 4 va bene. caso medio sql server express in locale va bene (fino a 4 gb!). altrimenti un server di sviluppo con sql server full è necessario. Ad ogni modo, code-wise, tutto è equivalente. cambia solo la stringa di connessione che sta nel file di configurazione
Ho SQL Server Enteprise... vale la pena sfruttarlo no? :P
Scherzi a parte... IIS in locale non e problema, configurarlo è un attimo, ma poi è possibile configurare il build/runtime di Visual Studio su IIS locale e non su quello integrato nell'IDE di casa MS?
Kralizek
27-01-2011, 20:32
certo :)
l'unica è che devi eseguire VS in modalità administrator
certo :)
l'unica è che devi eseguire VS in modalità administrator
Immaginavo questa cosa.
Come dicevo al lavoro stiamo usando molto .NET per alcuni progetti, ma sicuramente andremo ad utilizzare anche Java. Su quel campo sono ferrato, parecchio, su .NET un pochino meno (soprattutto sulla logica di sviluppo e Deploy).
Domani provo con IIS locale ;).
Grazie mille per il momento!
Purtroppo arrivando da Oracle e JSP ti trovi un pò spaesato (non che sia diverso, ma alcuni concetti cambiano radicalmente...)
Kralizek
27-01-2011, 20:37
posso chiedere come mai questo salto così violento?
ad ogni modo considera che con WCF puoi far comunicare Java e .NET in maniera piuttosto semplice :)
posso chiedere come mai questo salto così violento?
ad ogni modo considera che con WCF puoi far comunicare Java e .NET in maniera piuttosto semplice :)
Lavoro.
Purtroppo (o per fortuna) dove lavoro ora utilizziamo parecchie tecnologie, ma principalmente in ambito .net con opc per programmare poi plc... (automazione industriale ;)).
Quindi il salto è drastico.
Si usa sempre Oracle, spesso SQL Server, al 95 % .NET e Java/Python poco.
Anche se sto provando piano piano a portare la filosofia di Java e Python dentro nell'azienda, in maniera tale da sviluppare APP multipiattaforma e sbattersi meno in futuro ;)
tomminno
28-01-2011, 00:50
Almeno capisco la logica di funzionamento.
Caspita, con PHP/Python e JSP era tutto più immediato :D
Sei te che ti stai complicando la vita inutilmente ;)
Sei te che ti stai complicando la vita inutilmente ;)
Tu dici? :D
Kralizek
28-01-2011, 09:20
in effetti, a meno che tu non voglia andare dritto su MVC, l'approccio ASP.NET WebForm puó essere traumatico all'inizio
mi spiego. trovo che la sua curva di apprendimento sia molto piatta all'inizio, con un improvviso impennarsi rendendo ogni scenario "non standard" gestibile ma non senza sbattersi.
soprattutto quando hai diversi componenti innestati uno dentro l'altro. Se poi qualcuno ha la geniale idea di scrivere codice in Page.PreRender, beh... il casino é assicurato.
d'altra parte il core engine di asp.net permette di essere personalizzato in quasi ogni componente.
ad esempio noi abbiamo un componente che slega l'url di un file dal suo file fisico (una specie di routing, ma piú avanzato)
in effetti, a meno che tu non voglia andare dritto su MVC, l'approccio ASP.NET WebForm puó essere traumatico all'inizio
mi spiego. trovo che la sua curva di apprendimento sia molto piatta all'inizio, con un improvviso impennarsi rendendo ogni scenario "non standard" gestibile ma non senza sbattersi.
soprattutto quando hai diversi componenti innestati uno dentro l'altro. Se poi qualcuno ha la geniale idea di scrivere codice in Page.PreRender, beh... il casino é assicurato.
d'altra parte il core engine di asp.net permette di essere personalizzato in quasi ogni componente.
ad esempio noi abbiamo un componente che slega l'url di un file dal suo file fisico (una specie di routing, ma piú avanzato)
Afferrato. Ma il concetto di WebForm non è nemmeno poi cosi complesso, arrivando dallo sviluppo Software, mi ci sto trovando anche bene. Poi anche JSP lavora in maniera simile (con include e componenti innestati), solo in maniera "più frustante".
L'unico motivo per il quale uso JSP e Oracle/Postgresql è che è tutto multipiattaforma, su JBoss lo sposto a destra e manca senza grossi problemi; con .NET questo, salvo mono, me lo sogno per ora.
Il problema è capire come diavolo lavora ASP.NET (problema limitato all'utilizzo e all'esperienza), come fare il deploy corretto di una App su Windows Server (che gira su una mia virtual con IIS attivo) e di SQL Server... che non capisco per quale diavolo di motivo tutta la documentazione che trovo in giro mi fa creare 5 utenti diversi per i 5 servizi offerti (Database Engine, Full Text Search, Analysis, ecc...)... lo trovo completamente assurdo :|.
Poi la logica di connessione al db:
url/ip
username
password
database name
Chiaro; ma su SQL Server devo sapere a priori il nome dell'istanza del DB.
Anche con SQL Management Studio, senza quella sono fottuto... :| (nel senso che non mi farebbe loggare a nessun DB, avendo sia username che password).
Ultima cosa, le autenticazioni miste (SQL e Windows Auth.). Ma che stiamo scherzando? :D :D
PS. non voglio criticare il prodotto, sto cercando di capire, arrivando da PostgreSQL e Oracle alcune cose non me le ritrovo per niente :D :D
Kralizek
28-01-2011, 10:44
il nome dell'istanza serve solo quando lavori su SQLExpress. altrimenti, a meno di settaggi particolari (due istanze sullo stesso server, pazzia pura), l'istanza viene "defaultata"
o forse ti riferisci al nome del DB?
le autenticazioni miste sono utilizzate in ambiente intranet dove, attraverso la propagazione dell'identitá, puoi controllare quale utente/gruppo di un dominio puó scrivere/accedere ad una determinata parte del database. utile? non lo so mai utilizzata, ma meglio qualcosa in piú che in meno ;)
una domanda da dotnettaro: la cosiddettá "portability" di java é veramente un valore aggiunto di rilievo?
mi spiego: da dotnettaro se devo creare una nuova istanza di un server, lancio windows server 2008 e gg. da un punto di vista java, c'é veramente la necessitá di eseguire il tuo codice (tipicamente server code) su una macchina linux E su una macchina windows E su una macchina solaris?
quanto spesso vi capita?
il nome dell'istanza serve solo quando lavori su SQLExpress. altrimenti, a meno di settaggi particolari (due istanze sullo stesso server, pazzia pura), l'istanza viene "defaultata"
o forse ti riferisci al nome del DB?
No no, mi riferivo al nome dell'istanza proprio; ho visto che si possono installare fino a 50 istanze diverse su una sola macchina (e non è il mio caso quindi non me ne interesso per ora).
Quando usi SQL Management Studio ti chiede l'istanza del DB.
Alla fine ho visto che lasciando vuoto lui stesso mette (local) e si connette; mah :|
le autenticazioni miste sono utilizzate in ambiente intranet dove, attraverso la propagazione dell'identitá, puoi controllare quale utente/gruppo di un dominio puó scrivere/accedere ad una determinata parte del database. utile? non lo so mai utilizzata, ma meglio qualcosa in piú che in meno ;)
IEP, ho appena letto sulla Docs MSDN; comodo, ma anche qui come sopra, non è il mio caso :P grazie per la risposta e il chiarimento!
una domanda da dotnettaro: la cosiddettá "portability" di java é veramente un valore aggiunto di rilievo?
Ni; tutto dipende dal cliente. Se il cliente usa prodotti MS certificati non esiste il problema. Se il cliente inizia ad usare prodotti OpenSource, GNU/Linux e Postgre ... inizia a diventarlo e Java diventa indispensabile in quel ruolo (si potrebbe optare anche per Python).
mi spiego: da dotnettaro se devo creare una nuova istanza di un server, lancio windows server 2008 e gg. da un punto di vista java, c'é veramente la necessitá di eseguire il tuo codice (tipicamente server code) su una macchina linux E su una macchina windows E su una macchina solaris?
Si.
quanto spesso vi capita?
Raramente, è una questione di licenze; sono dell'idea che avere prodotti come Java e Postgre che possono girare in ambienti Linux attiri più clienti, magari anche coloro che non hanno grossissime somme da investire.
Certo... il cliente cerca la certificazione, la garanzia, la sicurezza.
Nel campo dell'automazione industriale... non si parla di un Blog/CMS/Ecommerce (con tutto rispetto per queste categorie di lavori...).
tomminno
28-01-2011, 14:25
il nome dell'istanza serve solo quando lavori su SQLExpress. altrimenti, a meno di settaggi particolari (due istanze sullo stesso server, pazzia pura), l'istanza viene "defaultata"
In realtà non serve nemmeno con SqlExpress dato che durante l'installazione si può scegliere di usare l'istanza di default.
le autenticazioni miste sono utilizzate in ambiente intranet dove, attraverso la propagazione dell'identitá, puoi controllare quale utente/gruppo di un dominio puó scrivere/accedere ad una determinata parte del database. utile? non lo so mai utilizzata, ma meglio qualcosa in piú che in meno ;)
L'autenticazione di dominio su db è utile in contesti aziendali, per chi ci sviluppa o per account di procedure automatiche che accedono al db tramite impersonazione. Lato intranet generalmente l'autenticazione è gestita dalla parte web, difficile (direi praticamente impossibile) che l'utente intranet lavori direttamente sul db
Kralizek
28-01-2011, 19:36
non è che confondi internet con intranet?
perchè lo scenario che tu chiami "aziendale" per me coincide con quello "intranet"
tomminno
30-01-2011, 19:47
non è che confondi internet con intranet?
perchè lo scenario che tu chiami "aziendale" per me coincide con quello "intranet"
No no intendo proprio intranet.
Per me un utente intranet per definizione utilizza un sito web per accedere alle funzionalità interne dell'azienda, non utilizza certo il Management Studio di Sql Server. Pertanto l'accesso al db (è di questo che stavamo parlando) è un pò complicato da realizzare con l'utente di dominio che sta navigando la intranet.
Kralizek
31-01-2011, 14:21
ah ok!
cmq io ho visto sezioni di database aziendali cui avevano accesso solo alcuni gruppi del dominio e la connessione al database avveniva attraverso l'impersonificazione del visitatore.
non che la considero una best practice, ma alle security policy non si discute :S
DioBrando
31-01-2011, 19:25
A lavoro per il db di sivluppo abbiamo una macchina dedicata con 24 Gb di ram :read:
Per uno sviluppo più personale l'utilizzo di una macchina virtuale mi sembra decisamente eccessivo per le risorse hardware che impegna, già Visual Studio non è una piuma, poi ci metti la macchina virtuale e il server sql. Ti ci vogliono almeno 8Gb di ram per lavorare agevolemente.
non esagerare dai :)
io ho usato 2 VM con ciascuna un DB Oracle e VS2010 con un MacBook Pro e 4 GB di RAM e non ho avuto fastidi...
ah ok!
cmq io ho visto sezioni di database aziendali cui avevano accesso solo alcuni gruppi del dominio e la connessione al database avveniva attraverso l'impersonificazione del visitatore.
non che la considero una best practice, ma alle security policy non si discute :S
Noi usiamo file di configurazione impostati nel regedit di Windows in quanto non ci interessa della sicurezza (sono tutte Applicazioni locali per aziende).
Ora sto configurando una Virtual con Windows Server e SQL Server 2008, vediamo se riesco a connettermi in remoto ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.