asp.net comments edit

Da poche ore è stata rilasciata la Release Candidate di ASP.NET MVC 2. L’annuncio è stato fatto dal PM del team Phil Haack, tramite il suo blog (qui).
Le novità non sono di grandissimo impatto per lo sviluppatore, ma sicuramente di grande importanza in quanto buona parte del lavoro svolto dal team tra la Beta 2 e la RC è stato dedicato al profiling, ottimizzazione ed estensione di features già esistenti.

Comunque, come ad ogni rilascio, è disponibile la release note con tutte le novità introdotte insieme al download del Framework (qui).

Buon coding!

.net comments edit

Dato che uno è in Beta (Visual Studio 2010), l’altro in preview (WCF RIA Services) non ho motivi per lamentarmi, ma se vi capita questo immenso stack di errore mentre cercate di compilare ...

Error    1    The "CreateRiaClientFilesTask" task failed unexpectedly.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Resources.MissingManifestResourceException: Could not find any resources appropriate for the specified culture or the neutral culture.  Make sure "Web.Resources.RegistrationDataResources.resources" was correctly embedded or linked into assembly "imperugo.CommunityTour.Catania.Silverlight.Web" at compile time, or that all the satellite assemblies required are loadable and fully signed.
   at System.Resources.ManifestBasedResourceGroveler.HandleResourceStreamMissing(String fileName)
   at System.Resources.ManifestBasedResourceGroveler.GrovelForResourceSet(CultureInfo culture, Dictionary`2 localResourceSets, Boolean tryParents, Boolean createIfNotExists, StackCrawlMark& stackMark)
   at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo requestedCulture, Boolean createIfNotExists, Boolean tryParents, StackCrawlMark& stackMark)
   at System.Resources.ResourceManager.InternalGetResourceSet(CultureInfo culture, Boolean createIfNotExists, Boolean tryParents)
   at System.Resources.ResourceManager.GetString(String name, CultureInfo culture)
   at imperugo.CommunityTour.Catania.Silverlight.Web.Resources.RegistrationDataResources.get_SecurityAnswerLabel() in D:\Session\Community Tour Catania\imperugo.CommunityTour.Catania.Silverlight\imperugo.CommunityTour.Catania.Silverlight.Web\Resources\RegistrationDataResources.Designer.cs:line 128
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
   at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
   at System.ComponentModel.DataAnnotations.LocalizableString.<>c__DisplayClass5.b__2()
   at System.ComponentModel.DataAnnotations.LocalizableString.GetLocalizableValue()
   at Microsoft.RiaServices.Tools.DisplayCustomAttributeBuilder.GetAttributeDeclaration(Attribute attribute)
   at Microsoft.RiaServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes(ClientProxyGenerator proxyGenerator, CodeTypeDeclaration referencingType, IEnumerable`1 attributes, CodeCommentStatementCollection comments, String customCommentHeader, Boolean forcePropagation)
   at Microsoft.RiaServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes(ClientProxyGenerator proxyGenerator, CodeTypeDeclaration referencingType, IEnumerable`1 attributes, CodeAttributeDeclarationCollection outputCollection, CodeCommentStatementCollection comments, String customCommentHeader, Boolean forcePropagation)
   at Microsoft.RiaServices.Tools.EntityProxyGenerator.GenEntityProperty(CodeTypeDeclaration proxyClass, PropertyDescriptor propertyDescriptor, String propertyName)
   at Microsoft.RiaServices.Tools.EntityProxyGenerator.Generate()
   at Microsoft.RiaServices.Tools.ClientProxyGenerator.GenerateProxyClass(String& generatedCode)
   at Microsoft.RiaServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies()
   at Microsoft.RiaServices.Tools.CreateRiaClientFilesTask.ExecuteInternal()
   at Microsoft.RiaServices.Tools.RiaClientFilesTask.Execute()
   at Microsoft.Build.Framework.ITask.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)    imperugo.CommunityTour.Catania.Silverlight

...chiudete Visual Studio e riapritelo :).

Ciauz

eventi comments edit

Anche se un po’ indietro con la tabella di marcia, ormai ci siamo quasi, il 16 dicembre è vicino e le demo sono in dirittura di arrivo. Silverlight è fantastico e devo dire che mi sto divertendo molto a giocare con la versione beta della 4.0, come dimostrano gli screenshots seguenti:

ioSL4 

slide1slide2

Ancora qualche giorno, poi il Dry Run con il Sudano e si parte!

Come sempre, maggiori info qui.

various comments edit

Che cos’è Microsoft Live Labs Pivot? È un programma che ha lo scopo di rendere interattiva, semplice ed intuitiva la consultazione di grandi quantità di informazioni.
Nello specifico, tramite apposite collezioni e condizioni di ricerca è possibile cambiare e filtrare una grande quantità di informazioni e consultarle agevolmente in un ambiente molto simile a DeepZoom. Una volta installata l’applicazione si ha a disposizione un buon numero di collections, come tutto il campionato di Basket NBA, Wikipedia, Hard Rock Memorabilia, NFL, New Cars, Dogs, ecc.

Gli screenshots seguenti mostrano come è possibile passare in pochi click dalle statistiche sul basket NBA fino alla fisica quantistica, passando per i cani :).

001 002 003

004 005 006

Sarebbe bellissima un’integrazione nell’esplora risorse di windows.
Il download e la richiesta per l’invito sono disponibili qui, mentre, per i più curiosi, dopo il continue un video dimostrativo :).
Ciauz

continue...

asp.net comments edit

In un post precedente avevo parlato del Microsoft AJAX CDN (Content Delivery Network), con una breve spiegazione dei problemi che questo approccio può portare, come quando ad esempio lo si  utilizza in connessioni protette (https).

A pochi mesi dall’uscita Microsoft annuncia, tramite Scott Guthrie, la possibilità di sfruttare questo servizio anche in connessioni https. Ovviamente la cosa è semplicissima, l’url rimane identico, basta aggiungere la “s” ed il gioco è fatto.

Connessione non protetta:

  

Connessione protetta:

  

Un’altra importante novità sono le numerose librerie aggiunte; nello specifico ora è possibile avere tramite il CDN le seguenti librerie:

  • ASP.NET Ajax Library version 0911 (Beta);
  • ASP.NET Ajax Library version 0910 (Preview 6);
  • ASP.NET Ajax Library version 0909 (Preview 5);
  • ASP.NET Ajax Library version 3.5;
  • jQuery version 1.3.2;
  • jQuery Validate 1.5.5;
  • ASP.NET MVC 1.0;

Maggiori info qui.
Ciauz

.net comments edit

Questa sera, non so per quale motivo, Visual Studio non mi permetteva di aprire un sito presente sul mio IIS locale. La cosa curiosa è che il sito era lì da mesi e che è sempre funzionato alla grande.
Il messaggio di feedback fornito dal tool lasciava poco spazio all’immaginazione:

Unable to open the Web site 'http://localhost:8008'. To access local IIS Web sites, you must install the following IIS components:

In addition, you must run Visual Studio in the context of an administrator account.

For more information, press F1.

e la finestra era piuttosto inquietante, come mostrato dallo screenshot seguente:

VS-IIS-Problem

Ovviamente Visual Studio era in esecuzione con privilegi amministrativi, e tutti i componenti necessari erano installati e funzionanti; di fatto fino poche ore prima tutto funzionava egregiamente.

Dopo qualche “sbingata” ed una letta all’Event Viewer di sistema, sono arrivato alla conclusione che il metabase di IIS per qualche motivo si era corrotto. La cosa curiosa è che se richiedevo il sito tramite il browser questo era visualizzato correttamente e navigabile al 100%, ma di “debuggarlo” con Visual Studio non c’era storia.
Soluzoine? Rimuovere il sito da IIS e ricostruirlo :)

Ciauz

eventi comments edit

Se ripenso ad un post precedente il cui titolo era “Esce la Beta2 di Visual Studio 2010 ed è tempo di studiare!”, credo che mai parole furono più indovinate! Di fatto, a pochi giorni dalla presentazione fatta alla PDC, Silverlight 4 fa parlare parecchio di sè, motivo per cui Janky non ha aspettato molto (il giorno stesso della keynote) a cambiare la mia prossiama sessione all’università di Catania da ASP.NET 4.0 a Silverlight 4.0, realizzata in collaborazione con i ragazzi di OrangeDotNet e Microsoft.

Quindi il 16 Dicembre si parlerà di Silverlight 4 con tutte le sue novità, dall’integrazione con la Webcam fino alla RichTextArea, passando per la stampa e molto altro ancora, motivo questo che rende la sessione IMPERDIBILE!

Ovviamente, oltre a me, sul palco ci saranno lo sciuro Sudano a parlarci di Entity Framework 4.0 ed il Big Lorenzo a parlarci di Visual Studio 2010.

Registrazione ed info utili sono disponibili qui.

Ci si vede a Catania!

P.S.: per chi avesse problemi con la registrazione può comunque venire tranquillamente all’evento in quanto sarà messo a disposizione un pc per poter effettuare la registrazione in loco.

asp.net comments edit

Mentre ascolto la keynote della PDC , scopro che è stata rilasciata la prima beta di ASP.NET MVC 2.0, di cui io e Salvo abbiamo mostrato alcune funzionalità a Bologna.

Nella release note (disponibile qui insieme al download) sono elencate tutte le novità introdotte in questa prima beta:

  • New RenderAction Method;
  • Strongly Types UI Helpers;
  • TempDataDictionay Improvements;
  • Client Validation Library;
  • “Add Area” Dialog Box;
  • Calling Action Methods Asynchronously;
  • Blank Project Template;
  • Multiple Model Validator Providers;
  • Multiple Value Provider Registration;

Sicuramente alcune di queste novità sono molto interessanti e, come per le release precedenti, non mancherò di testarle (devo solo trovare il tempo) perciò…

stay tuned.

eventi comments edit

In notevole ritardo, causa stanchezza e tanto lavoro, volevo ringraziare tutti i ragazzi di DotDotNet e tutte le 50 persone (circa) presenti ieri al Community Tour di Bologna.
In special modo volevo ringraziare Alessandro, Salvatore, Pietro, Nicolò ed Igor (se ho dimenticato qualcuno chiedo scusa).

La giornata si è svolta nel migliore dei modi; un’ottima sessione di Pietro sui .NET Ria Services e Silverlight, successivamente ASP.NET MVC a tutto campo, prima io sul Framework Microsoft ed il patter MVC, successevimanete Salvatore ha mostrato il testing ed MVC 2.0.

Credo che le persone presenti siano rimaste soddisfatte dell’operato, di sicuro l’impegno è stato massimo. Ma dalle domande ed i primi feedback a voce credo di poter dire che l’argomento è sicuramente interessato.

Grazie ancora.

Ciauz.

P.S.: chi si ferma è perduto, quindi a dicembre tutti a Catania"!
Stay Tuned for more info.

asp.net comments edit

Finalmente, dopo ASP.NET MVC, anche con le ASP.NET WebForms è possibile avere maggior controllo sul markup generato, nello specifico il controllo degli ID per i controlli runat server che, precedentemente a questa release, subivano una trasformazione in base alla loro gerarchia nell’albero dei controlli della pagina.
Per esempio, in una semplice pagina in cui si abbia una Master Page con un ContentPlaceolder che continene una semplice label con un ID myLabel, si ottiene una trasformazione in NomeContentPlaceolderDellaMaster_mylabel.

La slide seguente chiarifica la situazione:

aspnet4ClientIDMode001

Ovviamente, in pagine parecchio complesse si possono avere nomi piuttosto lunghi e la loro non prevedibilità obbliga lo sviluppatore ad utilizzare degli scomodi workarounds per utilizzare del codice javascript che interagisca con questi controlli. Ovviamente questo tipo di problema vale anche per i fogli di stile (CSS) che non possono utilizzare gli ID ma devono per forza appoggiarsi all’attributo class del tag.

I due snippets seguenti mostrano i workarounds utilizzabili prima dell’uscita di ASP.NET 4.0.

#<%= myLabel.ClientID %>
{
    font-size: 100%;
}

<script type="text/javascript">
    function MyFunction()
    {
        alert(<%= myLabel.ClientID %>);
    }
</script>

Fortunatamente ora è disponibile un nuovo attributo - ClientIDMode - per tutti i controlli runat=”server”, che permette di cambiare il comportamente utilizzato dall’engine di rendering (per i soli ID) indipendentemente dalla gerarchia dei controlli contenuti nella pagina.

Nello specifico i comportamenti disponibili sono 4:

AutoID È il normale comportamente che si ha con le versioni precendenti ad ASP.NET 4.0.
Static Permette di forzare l’ID di output. Con questa opzione non avverrà nessuna trasformazione ed il valore sarà perfettamente identico a quello impostato nell’attributo ID.
Predictable Questo attributo viene utilizzato quando ci si trova in un contesto il cui il controllo contenitore è di tipo DataBoundControl, ossia quando si ha una generazione di più righe tipo in un GridView.
Inherit Indica che il CliendIDMode verrà eredito dal controllo padre.

Personalmente ritengo molto utile questa funzionalità introdotta nella nuova versione di ASP.NET, in quanto il controllo del markup è una necessità indispensabile quando si ha l’esigenza di sviluppare applicazioni web in cui il numero di interazioni client-side (javascript) con l’utente è alto.