Archive for the ‘.NET Framework’ Category

Windows Developer Preview, installazione da HDD USB e l’importanza del codice opensource.

venerdì, settembre 16th, 2011

E’ ormai “notizia consumata” il fatto che Microsoft in occasione della “Build Windows” Conference in quel di Anaheim, California, martedi sera abbia annunciato e reso disponibile la prima build pubblica di Windows 8 (per gli amici Windows Developer Preview).

Inutile ribadire il good mood che si è generato sul web intorno alla prossima release di Windows grazie anche all’ottima strategia di comunicazione che Microsoft sta adottando da qualche mese a questa parte basata anche su lavoro di Steven Sinofksy (che in questi giorni si è “trasformato” nel nuovo Steve Jobs Winking smile) e del suo mega team.

Era ormai un mese che seguivo gli sviluppi del nuovo OS grazie soprattutto al blog del Windows engineering team (http://blogs.msdn.com/b/b8/), ma nella spettacolare presentazione di martedi ho visto praticamente “materializzarsi” tutte le novità che erano state annunciate ed abbondantemente discusse nei commenti dei posts.

L’annuncio della disponibilità di una beta \ preview pubblica se lo aspettavano un po tutti, ergo mentre seguivo la keynotes del day 1 in streaming preparavo la partizione estesa sul hdd del mio laptop per poter “accogliere” il nuovo Windows. A fine keynotes avevo il download manager che puntava a http://msdn.microsoft.com/en-us/windows/apps/br229516.

Nella notte di mercoledi la blogosfera si è letteralmente riempita di guide, howto e posts tutti relativi all’installazione di WDP usando varie tecniche (VM su VPC, VM su VirtualBox, installazione nativa, etc). Personalmente, avendo “preparato” appositamente il mio laptop, a fine download, ero pronto per una bella installazione nativa che mi facesse godere a pieno del nuovo OS, ma l’ostacolo era dietro l’angolo: le dimensioni del img ISO WindowsDeveloperPreview-64bit-English-Developer (quella con I developer tool inclusi)di ben 4.8 GB.

E qui vengo all’oggetto di questo post: per usare quella ISO in un’installazione nativa c’è la necessità di avere o una pendrive da 8GB o un DVD9, ma a me mancavano entrambi e non potevo aspettare di procurarmeli … dovevo provare WDP, i nuovi tools di sviluppo (VS 2011 Express e Blend 5), la nuova API per le app metro style, subito Smile.

L’alternativa possibile per chi come me è sprovvisto di un pendrive “larga” e non si ritrova un DVD9 sottomano e quella di usare un HDD USB.

Nel mio caso l’HDD aveva i suoi 500GB tutti spalmati su un’unica partizione, per cui ho dovuto usare la live di gparted (gparted è un software che fa da partition manager e che gira su GNU/Linux http://gparted.sourceforge.net/) per poter “tirare fuori” dalla partizione principale una secondaria da 10 GB da usare come supporto per l’installazione di WDP.

Lo step successivo è stato quello di caricare il contenuto della ISO nella nuova partizione (necessariamente NTFS perchè ci sono file nel setup di WDP con peso sup. a 4GB) e renderla bootabile in modo da poter sfruttare il boot da device USB supportato dai BIOS moderni.

Mi era già capitato di installare Win7 da pendrive USB ed in quel caso avevo usato l’ottimo e super user friendly tool di Microsoft “Windows 7 USB/DVD download tool” (sempre per gli amici WUDT) (link) per cui ho deciso di riutilizzarlo.

Quindi .. Step 1: selezione della ISO,

image

Step 2: media type USB Device

image

STEP 3: … ecco  il secondo problema: il software non supportava HDD USB ma solo drive removibili (pen drive USB).

image

 

Leggendo la documentazione dal sito ufficiale,  pare che questa sia stata una scelta by design. Essendo, come dicevo super user friendly Smile, i suoi sviluppatori hanno deciso di evitare che qualche utente distratto potesse formattarsi l’HD sbagliando la selezione da quella dropdownlist.

 

Poi, però, mi sono ricordato di aver letto che di questo tool erano disponibili i sorgenti su codeplex. Una ricerca da codeplex.com .. ed istantaneamente “pesco” la pagina ufficiale:

 

http://wudt.codeplex.com/

 

Leggendo la documentazione “dev oriented” ho scoperto che in realtà I sorgenti di WUDT sono già inclusi nell’installer standard scacaricabile da MS Store, ed infatti in :

 

%userprofile%\AppData\Local\Apps\Windows 7 USB DVD Download Tool

 

ci ho trovato un bel wudtsource.zip pronto per essere “esplorato”.

 

La modifica è stata più che banale.

 

Aperta la solution in VS 9, ho subito notato quel “DriveService”:

 

image

 

… si tratta della classe astratta da cui poi ereditano DvdDriveService e UsbDriveService. Ovviamente, la mia modifica era da fare su quest ultimo.

 

Aperto il file UsbDriveService.cs, il “blocco by design” si nota subito :

 

 

        /// <summary>
        /// Initializes the list of drives to work with.
        /// </summary>
        /// <returns>The result of the initialization.</returns>
        public override DriveStatus Initialize()
        {
            return this.Initialize(DriveType.Removable);
        }


ed il conseguente codice di inizializzazione:

 

        /// <summary>
        /// Initializes the list of drives to work with.
        /// </summary>
        /// <param name="type">The type of drives to get.</param>
        /// <returns>The result of the initialization.</returns>
        protected DriveStatus Initialize(DriveType type)
        {
            this.drives = new List<DriveInfo>();
            var result = DriveStatus.Ready;

            DriveInfo[] devices = DriveInfo.GetDrives();

            foreach (var drive in devices)
            {
                if (drive.DriveType == type)
                {
                    this.drives.Add(drive);
                }
            }

            if (this.Drives.Count <= 0)
            {
                result = DriveStatus.NoDevices;
            }

            return result;
        }

 

Le possibilità, quindi, sono due:

 

1) modificare l’enumerable nel metodo in ovverride, scegliendo in base alle proprie esigenze, tra:

 

    // Summary:
    // Defines constants for drive types, including CDRom, Fixed, Network, NoRootDirectory,
    // Ram, Removable, and Unknown.
    [Serializable]
    [ComVisible(true)]
    public enum DriveType
    {
        // Summary:
        // The type of drive is unknown.
        Unknown = 0,
        //
        // Summary:
        // The drive does not have a root directory.
        NoRootDirectory = 1,
        //
        // Summary:
        // The drive is a removable storage device, such as a floppy disk drive or a
        // USB flash drive.
        Removable = 2,
        //
        // Summary:
        // The drive is a fixed disk.
        Fixed = 3,
        //
        // Summary:
        // The drive is a network drive.
        Network = 4,
        //
        // Summary:
        // The drive is an optical disc device, such as a CD or DVD-ROM.
        CDRom = 5,
        //
        // Summary:
        // The drive is a RAM disk.
        Ram = 6,
    }

 

2) eliminare il controllo dal metodo init protected:

 

            foreach (var drive in devices)
            {
                //if (drive.DriveType == type)
                //{
                    this.drives.Add(drive);
                //}
            }

 

L’effetto della 2° scelta è facilmente intuibile:

 

image

 

.. ho avuto quindi la possibilità di scegliere la mia partizione su HDD USB preparata ad-hoc per accogliere la ISO di installazione di WDP.

 

Il resto è procedura standard.

 

Ne approfitto, per chi volesse provare WDP usando un VHD, l’ottimo post di Scott Hanselman:

 

http://www.hanselman.com/blog/GuideToInstallingAndBootingWindows8DeveloperPreviewOffAVHDVirtualHardDisk.aspx

Tags: , , ,
Posted in .NET Framework, Microsoft, Windows | No Comments »

Piccoli developers crescono … con Microsoft SmallBasic

martedì, novembre 11th, 2008

I miei primi passi da dev li ho fatti utilizzando il mitico Turbo Pascal di Borland (che strano dopo tutti questi anni mi ritrovo ancora a lavorare con strumenti progettati da Anders Hejlsberg, sarà un caso?? ;) . Successivamente mi buttai rapidamente a capofitto su C/C++ scrivendo videogiochi (piccoli shotemup 2D) utilizzando la lib Allegro (ancora in pieno sviluppo) su compilatori come Cygwin (uno dei porting di gcc su windows) e Watcom C++ (bei tempi quelli dell’extender a 32 bit DOS4GW ;) )

Al giorno d’oggi avvicinare i bambini allo sviluppo software è diventata una pratica molto semplice grazie alla miriade di linguaggi e di strumenti dedicati. Ultimo ritrovato è Microsoft SmallBasic, un progetto dei DevLabs di BigM che fornisce un linguaggio semplice, basato su BASIC, con a supporto un IDE userfriendly dove non mancano funzionalità apprezzate anche dai “grandi” come l’Intellisense e l’instant context sensitive help, il tutto ovviamente con pieno supporto al .NET Framework.

Il linguaggio, completamente imperativo, conta appena 15 keywords, abbastanza per approcciare ai concetti base di qualsiasi linguaggio (statement condizionali, loops, etc.).

image

Il semplice ambiente di sviluppo è composto essenzialmente dalla Toolbar (2) , l’Editor (1) e la Surface Area (3) mentre l’Intellisense sfrutta anche esso l’interfaccia basata su ribbon.

image

Maggiori info sono disponibili nel documento di “getting starting guide” scaricabile dal sito ufficiale dedicato al progetto.

Posted in .NET Framework, Microsoft, Tools | No Comments »

Quake 3 Arena .NET porting

venerdì, gennaio 25th, 2008

Gregs Dolley, uno sviluppatore americano, concentrato soprattutto sulle problematiche di programmazione grafica via OpenGL e DirectX nel mondo managed, è riuscito nella straordinaria impresa di effettuare un porting di uno dei videogiochi più famosi al mondo, Quake3 Arena (code base originale di Id Software,  scritta completamente in C), sul framework .NET \ DirectX, con soluzione di progetto compilabile con Visual Studio 2008.

Le fasi di questa impresa, che definirei titanica, sono state :

 

1) Rendere compilabile il progetto originale di Id Software su Visual Studio 2008 con MSVC++ (questo come spiega Greg, ovviamente non rappresenta un porting vero e proprio su .NET ma semplicemente "a C port to a different compiler"). Questo ha richiesto il fixing di 3000 errori di compilazione, proprio perchè la codebase originale è in C e non in C++;

 

2) Rendere compilabile la soluzione, in uscita dalla fase di cui sopra, abilitando l’opzione /clr su Visual Studio 2008 per produttore codice managed. Per questo ha dovuto fixare 28.000 errori di compilazione e più di 4000 warnings, patchare tutte le chiamate managed in chiamate native, finchè non è stato possibile aprire l’eseguibile e le dll di supporto in ILDASM (il disassemblatore .NET CLR);

 

Alla fine di questa "battaglia", la soluzione che Greg ha reso disponibile in download contiene sorgente 99% compilabile in codice managed (IL / CLR bytecode); rimangono tuttavia funzioni che sollevano eccezioni proprio perchè contengono codice assembly x86 inline;

 

Sul blog di Greg c’è il post che analizza in dettaglio tutte le varie fasi del porting (LINK)

 

Awesome, Greg!

Posted in .NET Framework | No Comments »

ClickOnce, deploy di applicazioni su IIS6 e Windows Server 2003 : una nota

martedì, dicembre 18th, 2007

Questa segnalazione magari può essere utile a qualcuno.

Utilizzando ClickOnce per il deploy di un applicazione su un server IIS6 / Windows Server 2003, bisogna considerare alcuni accorgimenti al fine di far funzionare per bene il meccanismo.

Se la pubblicazione avviene su un virtual folder protetto da Autenticazione integrata di Windows, bisogna ricordare all’utente finale di autenticarsi tramite la schermata proposta dal browser, salvando le credenziali utilizzate, altirmenti iis le richiederà per ogni singolo file facente parte della distribuzione (manifest, application, etc.). Questo workaround non è valido per l’autenticazione Basic.

Inoltre per chi utilizza il deploy da Visual Studio tramite FTP, bisogna :

Estensione MIME Type
.application application/x-ms-application
.deploy application/octet-stream
.manifest application/x-ms-manifest

Ricordo, inoltre, che chi utilizza le Front Page Extension per deployare sul server web può anche tralasciare i punti di cui sopra perchè Visual Studio provvederà a configurare automaticamente IIS ( c’è ancora qualcuno con frontpageext sul suo iis ???? :D )

Per affrondire gli aspetti di configurazione client \ server relativi a ClickOnce, c’è, ovviamente, MSDN :

http://msdn2.microsoft.com/en-us/library/ms228998.aspx

Posted in .NET Framework | No Comments »

ASP.NET UrlRewrite e AJAX UpdatePanel, problemi di postback

giovedì, dicembre 6th, 2007

Come si sa, i motori di ricerca non digeriscono (leggasi indicizzano) per bene le pagine dinamiche con parametri passati su querystring; ecco il motivo per cui si fa uso di tecniche di URLRewriting, ovvero un URL che classicamente potrebbe essere :

http://mywebsite/showproduct.aspx?IdProduct = 10

potrebbe essere più "search engines friendly" e diventare :

http://mywebsite/showproduct/10.aspx

In questo modo il motore di ricerca indicizzerà correttamente la pagina web trattandola come se fosse una pagina statica.

La tecnica URLRewriting consiste praticamente nell’intercettare una Request Web e redirigere questa richiesta su una sorgente differente.

Ai tempi delle ASP l’unico modo per poter implementare questa tecnica era l’utilzzo di un filtro ISAPI che gestiva appunto la pipeline della request , supportato da IIS.

Con l’avvento di ASP.NET e in particolare della versione 2.0, implementare URL Rewriting è diventato molto semplice grazie soprattutto ai concetti di http handler e http module, "strumenti", che permettono di "mettersi in mezzo" alla normale flusso request-response gestito dal web server per modificarne opportunamente il behavior in base a specifiche regole.

Maggiori informazioni sulle varie tecniche di implementazione si possono trovare sul blog di Scott Gu in questo post http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx.

Tornando allo scopo del post, utilizzando per un progetto web ecommerce, una tecnica di url rewriting basata su RegEx rules e il metodo RewritePath della classe HttpContext in coppia con vari UpdatePanel, sono incappato in un problema dovuto al postback e al fatto che il PageRequestManager delle AJAX Extensions di Microsoft andava abbastanza in confusione tra url originali e virtuali riscritti dal modulo di Url Rewriting.

Praticamente supponendo che l’absolute path della URL sia :

/showproduct/10.aspx

trasformata in :

/showproduct.aspx?IdProduct = 10

inserendo nella pagina showproduct un UpdatePanel con all’interno qualsiasi controllo che gestisca l’evento click ed effettuando postback sulla stessa pagina, stranamente la form  cercava di fare post sulla url /showproduct/showproduct.aspx, ignorando quindi completamente, le mie regole di rewriting.

Il titolo del post cita nello specifico l’update panel ajax, ma è da notare che l’anomalia si verifica anche con postback sincroni.

Il problema è dovuto all’errata url specificata in automatico nella proprietà action dell’oggetto form, quindi, il tutto è risolvibile risettando la suddetta proprietà con la url virtuale che successivamente il modulo di rewriting si occuperà di trasformare.

Per mettere in pratica questa soluzione è sufficiente :

1) creare una classe che si occupi di settare la proprietà a partire dal HtmlTextWriter della pagina :

 

public class RewriteFormHtmlTextWriter : HtmlTextWriter { private bool inForm; private string _formAction; public RewriteFormHtmlTextWriter(System.IO.TextWriter writer) : base(writer) { } public override void RenderBeginTag(string tagName) { if (tagName.ToString().IndexOf("form") >= 0) { base.RenderBeginTag(tagName); } } public RewriteFormHtmlTextWriter(System.IO.TextWriter writer, string action) : base(writer) { this._formAction = action; } public override void WriteAttribute(string name, string value, bool fEncode) { if (name == "action") { value = _formAction; } base.WriteAttribute(name, value, fEncode); } }

 

2) aggiungere alle pagine con url riscritta un override del metodo render che recuperando la variabile di contesto settata dal modulo http per il rewriting  e richiami la classe per il setting della proprietà action

 

protected override void Render(HtmlTextWriter writer) { if (HttpContext.Current.Items["VirtualURL"] != null) { string sVirURL = HttpContext.Current.Items["VirtualURL"].ToString(); RewriteFormHtmlTextWriter oWriter = new RewriteFormHtmlTextWriter(writer, sVirURL); base.Render(oWriter); } }

3) modificare il metodo begin request del HttpModule che si occupa del rewriting (riporto una parte del codice che utilizzo io, solo a scopo dimostrativo)

 

public void Rewrite_BeginRequest(object sender, EventArgs args) { string strPath = HttpContext.Current.Request.Url.AbsolutePath; HttpContext.Current.Items["VirtualURL"] = strPath; string strRewrite = RewriterEngine.MiaRegolaRewrite(strPath); if (!String.IsNullOrEmpty(strRewrite)) { HttpContext.Current.RewritePath("~" + strURL); } }

Questi tre passi sono sufficienti nel caso non si utilizzi un controllo all’interno di un UpdatePanel. In caso contrario si dovrà modificare la proprietà action della form con codice javascript lato client, facendo uso dell’ajax library di microsoft. Questo è necessario proprio perchè il metodo Render viene eseguito solo nel caso di postback completi sincroni, perchè non è necessario fare il rendering della pagina nel caso di partial update dovuto alla presenza di un UpdatePanel.

 

4) Ultimo passo è, quindi, l’inserimendo all’interno della pagina del seguente codice javascript che non fa altro che risettare le proprietà action ed initial action della form con la location corrente del browser che altro non è che la nostra url virtuale

 

Sys.Application.add_load(function() { var form = Sys.WebForms.PageRequestManager.getInstance()._form; form._initialAction = form.action = window.location.href; });

Posted in .NET Framework, ASP.NET | 2 Comments »

Perchè utilizzare le custom error pages ?

martedì, maggio 15th, 2007

Guardando questa foto la risposta è veramente molto semplice.

 

Sembra che la foto sia stata scattata nella Silicon Valley. Speriamo che sistemino il problema al più presto, anche perchè l’azienda di mobili Svedese non ci sta facendo di certo una bella figura.

 

Fonti : D’Arcy from Winnipeg, Tassography

Posted in .NET Framework, ASP.NET | No Comments »

Sviluppare videogiochi con .NET Framework e DirectX

lunedì, aprile 23rd, 2007

Su MSDN è stata pubblicata una pagina che riepiloga tutti i webcast (in inglese) erogati da Microsoft, nell’arco di tempo che va dal 2005 a fine 2006, relativi allo sviluppo di videogiochi utilizzando C#, il framework .NET e le lib. DirectX con il relativo wrapper managed.
La serie “Introduction to 3-D Video Game Development” è composta da 11 webcasts che partendo da un introduzione ai giochi 3d (sistemi di coordinate, definizione delle mashes, poligoni, shaders etc.) affronta argomenti come il coding dello strato software relativo all’intelligenza artificiale, gestione delle collisioni, definizione di una UI con oggetti HUD (head-up-display), gameplay, etc. Il tutto ovviamente convoglia nello sviluppo di un gioco reale 3d stile Pac-man.

L’altra serie, “Introduction to 2-D Video Game Development”, invece è composta da 8 webcasts di livello 100, che aiutanto qualsiasi utente (anche quelli alle prime armi con C#) ad entrare nel mondo dei videogiochi passando per un overview totale sullo sviluppo 2D.

Entrambe le serie sono erogate da speakers provenienti dal DigiPen Institute (un istituto che si occupa della formazione relativa alle professioni che orbitano intorno alla computer graphics e ai videogiochi in generale).

Ecco il link a MSDN :

http://www.microsoft.com/events/series/msdnvisualcsharp.mspx

Posted in .NET Framework | No Comments »

ASP.NET, controllo GridView e formattazione condizionata delle celle

martedì, dicembre 12th, 2006

Molte volte capita di dover applicare degli stili al controllo GridView in base ai dati che esso mostra.
Tipicamente si cerca una soluzione lavorando sull’evento RowDataBound, facendo un check sui dati e di conseguenza applicando una formattazione particolare intervenendo sulle proprietà “stilistiche” di riga o della singola cella.
Questa strada potrebbe essere indubbiamente quella giusta quando, magari, i campi da analizzare non sono molti oppure quando le condizioni da controllare non sono particolarmente complesse.
Cosa fare quindi in caso di esigenze più particolari?
Con l’avvento dell’archittettura basata sui provider di ASP.NET c’è la possibilità di estendere il comportamento dei singoli controlli potendoli personalizzare, tra le altre cose, sia nella logica di funzionamento sia nel rendering del layout.
A questo proposito Mike Ellison, sviluppatore dell’Università del Nevada ha reso disponibile su CodeProject il progetto GridThemes.
Si tratta in pratica di una collezione di classi che permettono di applicare una formattazione condizionata ad una griglia utilizzando dei costrutti dichiarativi basati su XML, ottenendo ad esempio il risultato mostrato qui di seguito, semplicemente inserendo i tags opportuni nel codice dichiarativo della GridView.

Interessante notare come Ellison abbia ottenuto questa interessante funzionalità attraverso meccanismi di estensione messi a disposizione dal framework .NET. Nello specifico GridThemes è formato da :
- Un BuildProvider custom che si occupa : di identificare i files per i temi stilistici posizionati nella cartella App_Code; di fare il parsing dei tags che dichiarano le condizioni da analizzare e conseguentemente (essendo apppunto un BuildProvider) di generare dinamicamente i metodi che risponderanno all’evento RowDataBound della GridView.
- Un implementazione di un controllo extender tramite IExtenderProvider che aggiunge la proprietà GridTheme a tutte le GridView presenti nella webform.

- Una classe UITypeEditor che permette di elencare tutte le GridThemes costruite dal BuidProvider da assegnare alla proprietà GridView.

Per approfondire il funzionamento di questo interessante Framework, rimando all’articolo originale presente a questa url :
http://www.codeproject.com/aspnet/GridThemes.asp

Non resta altro che fare i complimenti a Mike Ellison per questo interessante e utile progetto.

Posted in .NET Framework, ASP.NET | No Comments »

IronPython per ASP.NET finalmente in CTP

mercoledì, novembre 22nd, 2006

Soltanto ora apprendo dal blog di Scott Guthrie questa interessantissima notizia.
La settimana scorsa è stata rilasciata la versione CTP di IronPythoncon incluso il supporto alla completa integrazione con ASP.NET, Visual Studio e Visual Web Developer.
IronPython per chi non lo sapesse è la versione per .NET (quindi CLR compliant) del famoso linguaggio dinamico Python.
IronPython rappresenta sicuramente una svolta per gli sviluppatori che utilizzano questo linguaggio, proprio perchè permetterà di usare tutto il potenziale della BCL di .NET Framework pur mantenendo la compatibilità con la versione standard.
Come Scott sottolinea, IronPython è proprio l’esempio lampante di come i linguaggi che supportano .NET possano influenzare le funzionalità di dynamic languages aggiunte al CLR in questi ultimi anni.
Un esempio è proprio la feature del CLR denominata lightweight code-generation che permette di compilare velocemente e fare il JIT del codice in memoria con un incremento in termini velocistici dell’esecuzione senza dover necessariamente generare un file .dll persistente).
Tornando alla release CTP, appena terminata l’installazione il nostro Visual Studio sarà pronto a farci produrre pagine web con codice Python sia inline che code behind con tutte le features più comuni (syntax highlighting, WYSIWYG designer, full debugging support).

Dallo screenshot possiamo notare un templates chiamato IronPython Module che ci permetterà appunto di scrivere moduli standalone (utilizzabili aggiungendoli alla directory App_Script) in soluzioni web scritte in altri linguaggi.
Nel pacchetto è incluso anche il classico Personal Starter Kit (attivabile tramite File -> New Web Site -> Personal Starter Kit) implementato con IronPython che permette da subito di rendersi conto dei vantaggi offerti da questo linguaggio e dalle sue potenzialità di “linguaggio dinamico”.

Posted in .NET Framework, ASP.NET | No Comments »

WCF, Windows Vista e tecnologie Peer to Peer

martedì, ottobre 3rd, 2006

Su MSDN Magazine di Ottobre 2006, è stato pubblicato un interessante articolo di Justin Smith in cui viene illustrata una delle innovative features di Windows Communication Foundation, il Peer Channel.

Un applicazione P2P, per definizione è una istanza che gode di una connessione diretta con un altra istanza della stessa applicazione. Nel linguaggio del P2P ogni istanza della suddetta applicazione è chiamata nodo; un insieme di nodi interconnessi tra di loro è chiamato mesh (tradotto letteralmente in maglia).

Nell’articolo, Justin illustra le due tecnologie fondamentali che stanno alla base delle applicazioni P2P su piattaforma Microsoft:

- il PNRP (Peer Name Resolution Protocol) : usato da Windows Vista, ma anche da Windows XP SP2, per risolvere un indirizzo fisico, tra le altre cose, a partire da un nome di una mesh.

- il PeerChannel : una delle features del nuovo Windows Communication Foundation che permette lo scambio di messaggi tra istanze di applicazioni appartenenti alla stessa mesh network.

Justin, ovviamente sottolinea quanto sia innovativo il modello di programmazione offerto da WCF per le applicazioni distribuite, grazie proprio alla sua struttura universale che rende, ad esempio, il codice per lo scambio di binary messages su TCP/IP incredibilmente simile a quello necessario per un applicazione WS-* compliant per lo scambio di messaggi via HTTP.

Insomma un ottimo articolo per apprezzare i vantaggi tecnologici apportati da Microsoft grazie a .NET 3.0 (aka WinFX)

Posted in .NET 3.0, .NET Framework, Windows Vista | No Comments »