ASP.NET App Suspend

by Andrea Dottor 12 October 2013 12:12

All’interno del .NET Framework 4.5.1 è stata introdotta una nuova funzionalità dal nome ASP.NET App Suspend, che farà la gioia di molti di voi (me compreso).

Di che cosa si tratta?

AppSuspend_wfASP.NET App Suspend permette di ridurre i tempi di avvio di un’applicazione ASP.NET (che solitamente ricadevano nell’utente che si trovava ad eseguire la prima richiesta), in quanto si ha possibilità di specificare che, dopo il tempo di inattività dell’ApplicationPool invece di terminare il processo, ora potrà andare in uno stato di sospensione, permettendo così alla richiesta successiva di non dover ricompilare totalmente l’applicazione.
Questa novità permette di ridurre i tempi di primo avvio del ben 90%.
Altro aspetto da non sottovalutare è che questa funzionalità permetterà così di poter avere più siti in host all’interno dello stesso server, ben 7 volte i siti attuali.
AppSuspend_stats

Vincoli

Per poter utilizzare questa funzionalità, l’applicazione dovrà essere sviluppata con il .NET Framework 4.5.1 e dovrà essere pubblicata in un server Windows Server 2012 R2.

Abilitare la funzionalità

Per abilitare la funzionalità di dovrà intervenire nei settings dell’ApplicationPool andando a selezionare (all’interno delle impostazioni avanzate) nel parametro “Idle Time-out Action” la voce “Suspend” invece di quella di default che è “Terminate”.
AppSuspend_enable

Ed ora non ci resta che aspettare di aggiornare/migrare i nostri server a Windows Server 2012 R2 e godere di questa nuova funzionalità.

Per maggiori informazioni a riguardo, vi consiglio la lettura dei seguenti post:

Tags: , ,

ASP .NET | .NET

Codice e slide della sessione Il buon programmatore - consigli pratici per una vita felice

by Andrea Dottor 12 October 2013 11:38

Venerdì 11 Ottobre 2013 ho tenuto la sessione “Il buon programmatore - consigli pratici per una vita felice”.

Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)

 

Questa sessione, e specialmente i vostri commenti post-sessione fanno capire quanto spesso le basi, o funzionalità che abbiamo ogni giorno sotto agli occhi, vengano sottovalutate.
Questa sessione è solo un punto di partenza, e chissà che trovi il tempo di approfondire questi ed altri argomenti simili direttamente qui nel blog.

Ringrazio tutti i partecipanti, vedere la sala piena, e gente che prende appunti da una soddisfazione che non immaginate…grazie.
Vi ricordo il prossimo appuntamento su SignalR giovedì 7 Novembre, e per info:
http://www.xedotnet.org/Home/Meeting/20131108

Tags: , , ,

.NET | ASP .NET | XeDotNet

Il buon programmatore - consigli pratici per una vita felice

by Andrea 07 October 2013 11:21

Venerdì 11 Ottobre 2013 si terrà il XeDotNet community meeting "Best Practices", dove io terrò una sessione dal titolo "Il buon programmatore - consigli pratici per una vita felice".
Ecco qui l'abstract:

Lavorando come consulente mi sono trovato spesso di fronte a problematiche (a volte banali), ma che erano la causa di gravi problemi di performance dell'appliccazione realizzata, oppure più banali, ma che rendevano il codice meno manutenibile e gestibile, specialmente lavorando in team. Vedere che nel tempo, persone/realtà diverse, commettono gli stessi errori mi ha fatto pensare a questa sessione...dove intendo elencare i problemi più comuni, che per causa di tempo o scarsa conoscenza, vengono commessi, e proporre delle soluzioni semplici da poter applicare fin da subito. (ASP.NET, ma non solo)

La sessione è frutto di esperienze/problematiche che ho affrontato nel corso della mia attività di consulente (www.dottor.net). Non vi presenterò soluzioni a problemi complessi, o montagne di codice, ma bensì cercherò di darvi dei suggerimenti pratici che vi faciliteranno la vita.

 

Prima della mia sessione, Davide Vernole ci parlerà di ALM con la sessione "ALM Assessment: a che livello siete?"

Misurare la nostra capacità di gestione del ciclo di vita di un'applicazione non è sempre un'operazione semplice. In questa sessione impareremo a conoscere i livelli di maturità dell'ALM e le discipline a cui si applicano e vedremo come sia possibile misurare la maturità ALM del nostro team.

 

Per partecipare al meeting, registratevi a questo link: http://www.xedotnet.org/Home/Meeting/20131011

Tags: , , ,

.NET | ASP .NET | XeDotNet

Conoscere se un Type è di tipo Nullable<T>

by Andrea 30 September 2013 14:14

Oggi sono re-incappato nel caso di dover verificare su un tipo T all'interno di una funzione generica fosse di tipo Nullable<> o no.

Ed ecco una possibile soluzione:

Type type = typeof(T);
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof (Nullable<>))
{
 
}

Fonte MSDN: How to: Identify a Nullable Type (C# Programming Guide)

Ci sono operazioni che non si fanno tutti i giorni, dove per ritrovare quella riga di codice necessario basterebbe riaprire del vecchio codice, oppure cercare un pò in rete...ma visto che potrebbe essere utile non solo a me, ho deciso di riportarla qui nel blog.
;-)

Tags: ,

.NET

Leggere un feed RSS grazie alla classe SyndicationFeed

by Andrea Dottor 14 August 2013 10:57

Dalla versione 3.5 del .NET Framework è presente la classe SyndicationFeed all’interno del namespace System.ServiceModel.Syndication, che nel framework 3.5 è contenuta nell’assembly System.ServiceModel.Web mentre dal framework 4 la trovate all’interno dell’assembly System.ServiceModel.

Link MSDN: SyndicationFeed Class

Questa classe fornisce i metodi per leggere e scrivere con facilità un feed RSS 2.0 e/o Atom 1.0.

Ecco qui un esempio che dimostra la facilità di utilizzo di questa classe. Il seguente codice permette di recuperare il contenuto di un feed, come ad esempio l’elenco dei post esposti dal feed di un blog:

/// <summary>
/// Classe che rappresenta un elemento contenuto all'interno di un feed RSS
/// </summary>
public class FeedItem
{
    public string Title { get; set; }

    public string Description { get; set; }

    public DateTime Date { get; set; }

    public string Url { get; set; }
}

/// <summary>
/// Metodo che ritorna gli item di un feed RSS, dato l'url del feed
/// </summary>
/// <param name="feedUrl">Url del feed RSS</param>
/// <returns>Elenco di elementi contenuti nel feed</returns>
public IEnumerable<FeedItem> GetPosts(string feedUrl)
{
    List<FeedItem> posts = new List<FeedItem>();
    using (XmlReader reader = XmlReader.Create(feedUrl))
    {
        SyndicationFeed feed = SyndicationFeed.Load(reader);
        reader.Close();
        foreach (SyndicationItem item in feed.Items)
        {
            FeedItem post = new FeedItem
                {
                    Description = item.Summary.Text,
                    Title = item.Title.Text,
                    Date = item.PublishDate.Date,
                    Url = item.Links.Count > 0 ? item.Links.First().GetAbsoluteUri().ToString() : null
                };
            posts.Add(post);
        }
    }

    return posts;
}

Tags: ,

.NET

Codice e slide della sessione Windows Azure - Abbattere tempi e costi di sviluppo

by Andrea Dottor 18 June 2013 16:25

Venerdì 7 Giugno 2013 ho tenuto la sessione “Windows Azure - Abbattere tempi e costi di sviluppo”.

In questa sessione vedremo come utilizzare Windows Azure per velocizzare e semplificare la realizzazione di applicazioni ASP.NET. Dallo sviluppo al deploy, passando per lo storage...andremo in dettaglio su varie funzionalità che ci faranno apprezzare ancora più la piattaforma Windows Azure.

 

Qui invece potete scaricare slide e codice della sessione “Riscrivere le query con SQLServer 2012” di Emanuele Zanchettin download

Tags: , , , ,

.NET | ASP .NET | XeDotNet | SQL Server

Convertire file Word in PDF – Aspose.Word for .NET

by Andrea Dottor 18 June 2013 16:08

Non faccio spesso pubblicità a componenti di terze parti, ma questa volta faccio un’eccezione in quando ha permesso a me (ed al mio cliente) di risparmiare molto molto tempo (e sappiamo che il tempo è denaro) :-).

aspose_words_netIl componente in questione è Aspose.Word for .NET.
Si tratta di una libreria che permette di leggere, modificare e convertire documenti Word (non solo .docx ma anche .doc).

Nel mio caso, avevo necessità di dover convertire dei documenti già generati, o da generare, da Word a PDF. Cercando in rete si trovano varie soluzioni ma che spesso richiedono Word installato nel server...e questo era assolutamente da evitare.

Guardando la documentazione di Aspose, scopro che con 2 sole righe di codice è possibile convertire un documento Word, in svariati formati tra cui il PDF. Incredulo, scarico subito la libreria (di prova) da Nuget (che trovate a questo link https://nuget.org/packages/Aspose.Words/), e cosa scopro?! Scopro che effettivamente tutto ciò è vero...2 righe di codice e potete convertire il documento Word in pdf, xps, epub, jpg, tiff, html, e molti altri formati.

Document doc = new Document("c:\\TestDocument.docx");
doc.Save("C:\\TestDocument.pdf", SaveFormat.Pdf);

La cosa ancora più eccezzionale è che questa libreria permette di lavorare in memoria utilizzando direttamente gli stream, che permetterebbe (come nel mio caso) di non dover modificare l’esistente logica di creazione dei file Word (generati con l’SDK di Open XML) e poter ritornare da una pagina web lo stream del file, senza la necessità di salvare nulla ne file-system.

at-glance-aspose-words-for-net

Spero che questo post aiuti chi si dovesse trovare nella mia stessa situazione.

Il costo della licenza non è proprio irrisorio, ma sono convinto del fatto che svilupparselo in casa avrebbe un costo decisamente superiore...e sicuramente non si arriverebbe ad avere per le mani una libreria completa come questa.

Tutti i documenti convertiti/creati fino ad ora hanno rispettato sotto tutti gli aspetti quelli del documento originale (stili, proprietà di pagina, colori, margini, ...) …e sono stati la motivazione per cui ho voluto scrivere questo post.

Tags: , ,

.NET | ASP .NET

Codice e slide della sessione Migliora il tuo codice con Knockout.js

by Andrea Dottor 10 April 2013 00:03

Ecco qui il codice e le slide della sessione “Migliora il tuo codice con Knockout.js” che ho tenuto venerdì 5 Aprile 2013:

In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?

Visto l’interesse che l’argomento ha avuto, appena troverò il tempo (e visto il periodo, purtroppo, non sarà cosa semplice), ho intenzione di pubblicare alcuni post di approfondimento a riguardo di Knockout e Durandal
Winking smile

 

Tags: , , ,

ASP .NET | JavaScript | XeDotNet

Migliora il tuo codice con Knockout.js

by Andrea 30 March 2013 11:52

Venerdì 5 Aprile 2013 terrò un meeting dal titolo "Migliora il tuo codice con Knockout.js"

Abstract:
In questa sessione vedremo come Knockout.js permetta di scrivere codice JavaScript in modo pulito e organizzato, semplificando la scrittura del codice e la sua manutenzione. Come lo si utilizza KO? Quali vantaggi ci offre? Quali librerie ci vengono in aiuto? Quali sarebbe meglio evitare?

Ci troviamo a scrivere sempre più codice client-side, e utilizzare strumenti/librerie che ci permettano di aiutarci in questo compito è sicuramente un valore aggiunto, sia per i tempi di sviluppo, ma anche per la manutenzione del codice. Rendere il codice più leggibile, strutturare meglio l'applicazione, utilizzare strumenti validi sono solo alcune delle cose di cui vi parlerò.

Se non conoscete Knockout (http://knockoutjs.com/), questo meeting fa proprio al caso vostro. Vedrete le potenzialità di questa libreria, e scoprirete un paio di framework che combinati con KO vi aiuteranno davvero molto nello sviluppo JavaScript.

Per registrarvi: http://www.xedotnet.org/Home/Meeting/20130405

Tags: , , ,

.NET | JavaScript | jQuery | XeDotNet

Spostare i file temporanei di ASP.NET

by Andrea 30 March 2013 11:19

Quando eseguite una qualsiasi applicazione ASP.NET, il runtime genera alcuni file temporanei all'interno della cartella %FrameworkInstallLocation%\Temporary ASP.NET Files\ , e la dimensione che questa cartella può raggiungere non è da sottovalutare quando l'applicazione fa un forte uso di codice compilato a runtime oppure è composta da un'enormità di controlli e pagine.

Mi è capitato più volte di dover procere alla cancellazione manuale di questi file, ma in alcuni hosting non si ha accesso alla cartella Windows e suo sottocartelle per restrizioni date all'utente con cui ci si collega al server.

In queste casistiche si può risolvere la cosa spostando la cartella dei file temporanei dell'applicazione agendo direttamente nel web.config, andando a settare nel parametro compilation -> tempDirectory il percorso della cartella da utilizzare, rendendola così raggiungibile.
Prestate attenzione, in quanto dovete assegnare alla nuova cartella i permessi di scrittura e lettura all'utente con cui viene eseguita l'applicazione (solitamente specificato nell'application pool).

Esempio:

<compilation ... tempDirectory="C:\temp\mia_app_temp\"> ... </compilation>

Link documentazione MSDN:http://msdn.microsoft.com/en-us/library/s10awwz0(v=vs.85).aspx

Tags:

.NET | ASP .NET