lunedì 5 dicembre 2011

Una rassegna di Visual Studio 11 Developer Preview

Il Visual Studio 11 Anteprime Developer fornire un primo sguardo a quello che accadrà per gli sviluppatori NET per una varietà di prodotti:. Visual Studio 11, il Microsoft NET Framework 4.5 e Windows 8 "stile Metro" di sviluppo.. L'anteprima è presumibilmente completo, ma, altrettanto probabilmente, buggy. Indipendentemente da ciò, tutte le anteprime disponibili (vedi "Different Strokes") offrono l'opportunità di una revisione in caso Microsoft vuole prendere sviluppatori per il futuro. Inizieremo con la Metro.

Windows 8 e Metro-Style applicazioni
Fino qui in Canada, siamo abituati a due "lingue ufficiali". Tradizionalmente, questo è stato l'approccio in rete, anche -. Di Visual Studio / .NET riesame del quadro si concentrerà sul sostegno per Visual Basic e Visual C #, con alcune osservazioni segno su C + + e C #. Ma, come l'anteprima espresso chiarisce, Microsoft sta promuovendo un altro nuovo linguaggio "ufficiale": JavaScript. Mentre il numero di F # sviluppatori rimane piccolo e il C + + comunità non vede una crescita molto, ci sono un sacco di HTML + JavaScript sviluppatori là fuori. La domanda è: Quanti di coloro che gli sviluppatori vogliono creare applicazioni Windows con questi strumenti?
Dato il punto di anteprima Express, mostrato nella Figura 1, è la creazione di applicazioni in stile Metro, vale la pena chiarire che cosa significa. Metro cambia il modo gli utenti avranno a loro applicazioni mediante l'applicazione di una sorta di radicale semplicità. Per accedere alle loro applicazioni, gli utenti sono stati tradizionalmente integrati tre strumenti: menu di avvio, barra delle applicazioni e desktop. Ripensando ai loro originali apparire ¬ ¬-recchi, è possibile vedere una costante evoluzione nel loro flessibilità e raffinatezza. Cosa Metro fa è sostituire tutti e tre con una sola interfaccia. C'è ancora un desktop di Windows 8 (almeno in anteprima), ma quando si preme il tasto Start, quello che appare sullo schermo è la scacchiera metropolitana.

[Clicca sull'immagine per ingrandirla.]
Figura 1. Visual Studio 11 Anteprima Developer Express, in esecuzione sotto Windows 8, consente di creare una varietà di applicazioni della metropolitana in cinque lingue diverse.
Penso che come Metro, anche se sto ancora armeggiando con la navigazione (soprattutto, come faccio a uscire da qualcosa, una volta ho aperto?). E poiché la scacchiera si estende orizzontalmente, trovo che voglio un equivalente del mouse del swipe delle dita sul mio smartphone che sposta le mie icone lateralmente. Ma a parte questo, mi sono trovato la regolazione in tempi relativamente brevi - e questo è da un ragazzo che non ha mai veramente preso vantaggio dalla capacità di Windows 7 pin applicazioni insieme. Si può avere un metro in stile applicazione nel vostro futuro.
Se questo è il caso, i problemi reali sono: Quanto è facile per aggiungere alla scacchiera, e che cosa fa l'opzione JavaScript assomiglia? La risposta alla prima domanda: ridicolmente facile. Dopo aver costruito e il debug del Metro-style applicazione, basta cliccare la scelta Distribuisci dal menu Genera e una nuova piazza appare sulla scacchiera. In anteprima, è tutta basata su XAML sviluppo in quattro delle cinque lingue ufficiali, in modo da Silverlight e Windows Presentation Foundation (WPF) gli sviluppatori sono già sulla strada della metropolitana.
L'opzione JavaScript
in Visual Studio 11 Express, ogni tipo di linguaggio contiene modelli per diversi tipi di applicazioni Metro (Applicazioni Application, applicazioni Grid e Spalato), oltre a librerie di classi e librerie di unit test. C + + aggiunge il componente DLL WinRT e modelli di applicazione DirectX. JavaScript aggiunge un modello per un programma di navigazione.
La maggior parte di questi sono versioni Metro di applicazioni con cui probabilmente stai familiare. Un Application Grid, per esempio, è l'equivalente di una multiforme applicazione (anche se in Metro-parlare, si tratta di "multipagina" applicazioni); un'applicazione Spalato è la versione metropolitana di quello che più sviluppatori che definirei un Master-Detail forma.
Visual Basic, C #, C + + e C # applicazioni modelli di progetto per le applicazioni della metropolitana sono molto simili: un file XAML e un file di codice. Il modello JavaScript per Metro-applicazioni in stile, d'altra parte, è qualcosa di ... diverso.
Il modello di progetto JavaScript fonde diversi paradigmi di programmazione a cui sviluppatori. NET sono abituati. Gli sviluppatori Web, per esempio, vedrà alcuni elementi familiari: C'è un file HTML e un file js, una cartella CSS e una cartella di immagini - tutti i componenti di un'applicazione Web tipica.. C'è anche un package.appxmanifest file che fa parte di qualsiasi applicazione Metro (che elenca gli assembly privati ​​l'applicazione richiede e le capacità dell'applicazione).

Tuttavia, c'è anche una cartella Riferimenti che non solo i programmatori JavaScript riconoscerà per l'aggiunta di riferimenti a librerie di classe (è possibile creare queste librerie nelle altre lingue ufficiali). Mentre è difficile prevedere quali cambiamenti sono venire dalla tua parte da ciò che manca, non c'è vista di progettazione per il file HTML (di default la pagina si apre in visualizzazione Origine), ma è possibile aprirlo in Expression Blend, amico dello sviluppatore XAML è. Il modello include anche una cartella con due sottocartelle winjs (CSS e JS) per tenere Windows / Metro risorse specifiche.
Come i riferimenti e le cartelle winjs indicare, queste applicazioni sono legate alla Metro / .NET ambiente Windows e non può essere riproposto per un pubblico web. Mentre è ovviamente una buona cosa per fornire agli sviluppatori la flessibilità, la domanda è: chi troverà questa combinazione di paradigmi di programmazione un modo interessante per creare applicazioni Windows 8? Il numero di sviluppatori che creano Metro-style domande superino il numero di sviluppatori che utilizzano F #, per esempio?
E 'un mondo asincrono
Metro a parte, c'è un sacco di chicche in anteprima che gli sviluppatori troveranno interessante, sia nel quadro e in Visual Studio.
A partire da. NET Framework 4, Microsoft è stata sempre fornisce un nuovo supporto per l'elaborazione parallela. Molto di questo è stata guidata dal desiderio di ridurre lo sforzo richiesto per creare applicazioni che possono sfruttare i computer multi-processore (se si vuole introdurre un bug non avrai mai rintracciare, scrivere un multi-threaded).
Ma l'elaborazione asincrona è anche un altro passo nel processo di scollegare l'interfaccia utente dal codice che lo guida: Riduce l'intreccio tra il codice e le azioni degli utenti. In effetti, il nuovo mondo è costituito da processi in esecuzione su processori diversi o in ambienti diversi che possono avere bisogno di interagire - a volte attraverso la rete.In questo mondo non è possibile eseguire due righe di codice e di assumere che i risultati torneranno nell'ordine in cui li ha emessi (e potrebbe essere necessario attendere un tempo molto lungo per ottenere il risultato).
La nuova. NET Framework 4,5 Async e attendono parole chiave (in C # e Visual Basic) rendono molto più facile da implementare la programmazione asincrona per prendersi cura di molti problemi nella gestione di processi in parallelo.Ma questo non significa che i problemi vanno via: gli sviluppatori sarà ancora bisogno di gestire ciò che accade quando i processi vengono lanciati, ma non si completa prima che la successiva riga di codice viene eseguito.
Per sfruttare l'elaborazione asincrona, è necessario modificare il metodo aggiungendo la parola chiave Async alla dichiarazione di metodo e di restituire un oggetto Task di qualsiasi dato il metodo originariamente restituiti. Questo metodo ha restituito un oggetto Customer prima di essere convertito in un metodo asincrono (ho anche seguito la convenzione di denominazione di aggiungere "Async" alla fine di ogni funzione asincrona):
Funzione Pubblica Async GetCustomerAsync (CustId As String) 
  Come Threading.Tasks.Task (del cliente)
All'interno del metodo, è necessario utilizzare la parola chiave su tutti attendono di lunga durata metodi di chiamare.Questo esempio utilizza il attendono parola chiave con il metodo StartNew fabbrica per creare un nuovo oggetto clienti:
= cust Attendere Threading.Tasks.Task (del cliente).
       Factory.StartNew (function () nuovo cliente (CustId))
Ora, quando l'oggetto Customer viene creato con la parola chiave Attesa,. NET darà il filo principale in attesa della chiamata per completare e realizzare il nuovo cliente su un nuovo thread. Quando questo thread ha completato, l'elaborazione continuerà a la seguente riga.
In ASP.NET e ASP.NET MVC, mentre non è necessario l'attendono e le parole chiave Async, è ora possibile leggere e scrivere il vostro flusso di input in modo asincrono e dare il tuo thread di elaborazione in mezzo. Questo sarà un vantaggio per i siti occupati a parlare con i clienti su connessioni lente: Non dovrete rinunciare ad un filo ad una richiesta che è in dribbling (o fuori) lentamente.
Questo significa anche che se si ha un processo di lunga durata sul server, è possibile inviare i dati del cliente come si è sviluppata per mantenere il cliente da timeout - ancora una volta, senza occupare un filo per tutta la durata del processo. Se sei a tuo agio con l'aggiunta vostri moduli HTTP al tuo sito, è possibile creare moduli HTTP asincrone pure.
Nuovo per ASP.NET
Mentre non ci sono nuovi controlli nella Casella degli strumenti, ci sono alcune nuove funzionalità per gli sviluppatori ASP.NET, e due di loro sono legati alla sicurezza.
In ASP.NET, la validazione di default genera un'eccezione se un utente immette qualcosa che assomiglia a markup HTML in una pagina. Ci sono casi, tuttavia, in cui si vuole dare agli utenti che la capacità, almeno per i campi selezionati in forma. ASP.NET 4,5 consente di configurare il vostro sito per la convalida lazy in modo che gli ingressi non sono convalidati fino a quando non li tocchi nel codice lato server (nelle versioni precedenti di ASP.NET, tutti i dati sulla pagina è stato validato in una sola volta). È possibile utilizzare la proprietà non convalidati dell'oggetto Request per accedere ai dati con attivazione convalida per i dati. Più utile per gli sviluppatori ASP.NET, è possibile impostare la proprietà ValidateRequest sui controlli ASP.NET per disabili per ottenere lo stesso risultato con controlli selezionati sulla pagina.
Come bonus, il modulo Microsoft AntiXSS per prevenire cross-site scripting è automaticamente incluso in ASP.NET e può essere aggiunto come un HttpModule nel file web.config.
Ci sono due altre caratteristiche che risparmiare qualche digitazione nel file aspx quando si fa riferimento fogli di stile o JavaScript:. Attributo src dell'elemento script o un collegamento ora ha solo bisogno di fare riferimento a una cartella su un sito di IIS per raccogliere tutti i css e js.. file nella cartella. Se siete disposti ad aggiungere quattro o cinque righe di codice al file Global.asax, si può racchiudere qualsiasi raccolta arbitraria di. Css o. Js file in un file che sarà anche ridotto alla sua dimensione minima. Il tuo link e gli elementi script può quindi fare riferimento il fascio, ancora una volta ad accelerare i download.

L'associazione di dati diventa ancora più flessibile, in ASP.NET 4.5. È possibile impostare il SelectMethod su un controllo databound a qualsiasi metodo che restituisce un insieme generico, eliminando la necessità di un DataSource.Impostazione della proprietà ModelType del controllo per il tipo di dati dell'oggetto nella raccolta permette il controllo di capire in fase di progettazione quali sono le proprietà della classe ha. Il controllo può semplicemente riferimento le proprietà della classe restituito dal metodo. Se la raccolta implementa l'interfaccia IQueryable (se, ad esempio, è il risultato di una query LINQ in esecuzione su un database di Entity Framework), l'associazione è a doppio senso: di paging, l'ordinamento e gli aggiornamenti verranno gestiti automaticamente.
Aggiungendo un attributo ai parametri del metodo causerà ASP.NET per individuare e impostare i parametri del metodo per voi. Questo esempio, per esempio, crea un metodo che cerca un controllo sulla pagina chiamata RegText e lo usa per impostare il parametro Regione del metodo:
Public Function GetCustomers (
  Regione <System.Web.ModelBinding.Control("RegText")> As String) _
    Come IQueryable (Of cliente) ()
Queste modiche continuare il processo di separare l'interfaccia utente dal codice che lo utilizza. L'attributo di controllo nei precedenti soci esempio più del lavoro con la classe e meno con l'interfaccia utente, rendendo la classe più riutilizzabili.La classe con tutte le sue annotazioni dati possono essere spostati da una applicazione ad un'altra senza dover aggiungere un sacco di funzionalità per l'interfaccia utente. Ma l'interfaccia utente è ancora obbligato a utilizzare i nomi giusti (come GetCustomers e "RegText" negli esempi precedenti) per trarre vantaggio della classe.
. Se si scrivono le tue espressioni obbligatorio in tutti i file aspx, hai fatto senza il beneficio di IntelliSense, passando una stringa al Bind (o Eval) metodi, in questo modo:
<Asp: TextBox ID = runat "CustId" = "server"
  Testo ='<%# Bind ("CustomerID")%> '/>
La nuova sintassi di ASP.NET 4,5 sposta l'obiettivo vincolante per le virgolette e ti dà il supporto di IntelliSense. In questo esempio si lega la proprietà Text alla proprietà CustomerId sulla cust oggetto:
<Asp: TextBox ID = runat "CustId" = "server"
  Text = <%% # cust.CustomerID> />
Servizi di edilizia
WebSockets è uno standard del W3C (o diventare uno) critico per service-oriented architecture (SOA). In questo momento, per creare un servizio interoperabile richiede servizi web. Poiché i servizi Web utilizza un formato basato su testo messaggio XML e comunica utilizzando il protocollo più lento del mondo (HTTP), la comunicazione è lenta e senso unico.
Lo standard WebSockets utilizza il protocollo TCP, supporta sia il testo e trasmissioni binaria, e può creare canali bidirezionali di comunicazione che consente al servizio di chiamare il cliente quando il servizio ha dei dati da condividere (il cliente deve ancora aprire il canale di comunicazione). ASP.NET 4,5 rende la creazione di un client o un servizio WebSockets una questione di scrivere tre o quattro righe di codice (e, naturalmente, i metodi associati con l'invio e la ricezione di richieste di eseguire in modo asincrono).
Accompagnata da un sostegno generale per WebSockets nei browser esistenti, creando più potenti applicazioni AJAX diventa molto più facile. La possibilità per il servizio di chiamare il cliente quando i dati è pronto può rendere le applicazioni più reattive (eliminando la necessità per il cliente di attendere una risposta) e più scalabile (riducendo la necessità per il cliente di eseguire il ping del servizio continuo per verificare la risultati). Mentre l'attenzione per WebSockets è stato in AJAX, WebSockets funziona ovunque. , Con una certa tecnologia per la definizione dei formati dei messaggi, WebSockets potrebbe diventare una tecnologia chiave per la creazione di servizi interoperabili.
Questo porta a Windows Communication Foundation (WCF), modifiche che, non sorprendentemente, supporta la creazione di servizi basati su WebSockets (User Datagram Protocol anche per "fire and forget" dei servizi). Anche aggiunto - ancora una volta, non a caso - è il supporto per la trasmissione asincrona quando il client è lento ad accettare una risposta. Il vero vantaggio per gli sviluppatori, tuttavia, sono nella semplificazione del file di configurazione di WCF e la validazione molto meglio di impostazioni di configurazione di WCF durante la costruisce. C'è qualche speranza che i comuni mortali sarà in grado di eseguire il debug di configurazioni WCF.
Visual Basic Ottiene parità
Oltre al supporto per la programmazione asincrona, Visual Basic ottiene alcune caratteristiche che gli sviluppatori C # hanno avuto per qualche tempo. La più importante è la parola chiave yield, che lo rende estremamente facile creare un metodo che scorre un insieme. La parola chiave Resa restituisce un valore all'interno di un ciclo (o qualsiasi insieme di istruzioni), e ricorda dove era stato interrotto. La prossima volta che viene chiamato il metodo, il codice riprende da dove la parola chiave yield ultimi eseguiti e ricorda lo stato il codice è stato lasciato, eliminando la necessità di variabili statiche che tenere traccia di quello stato.
Sotto la categoria di "risolvere problemi che non pensavo che qualcuno avesse," Visual Basic ottiene anche il C # spazio dei nomi globale. Quando appare globale nel nome completo di una classe, indica l'inizio della. NET gerarchia dello spazio dei nomi. Potrebbe essere necessario se questo, nella gerarchia delle classi, si definisce uno spazio dei nomi con lo stesso nome come nella gerarchia NET -. "Sistema", per esempio. Che potrebbe dare difficoltà di accesso alla classe System.Int32, perché. NET sarebbe per la classe Int32 nello spazio dei nomi di sistema, piuttosto che l'. NET spazio dei nomi. Global.System.Int32 consente di specificare che si desidera da una classe. NET spazio dei nomi.
Visual Studio riceve anche alcuni miglioramenti fresco di nuovo nella versione 11. Indipendentemente dalla lingua o ambiente di sviluppo, tutti gli sviluppatori di ottenere una nuova funzione nel menu contestuale per i metodi e le proprietà: vista gerarchia di richiamo (vedi Figura 2). Selezionando questa opzione si apre una nuova finestra di Visual Studio che mostra tutti i luoghi dove viene chiamato il metodo e tutte le chiamate che il metodo fa. È possibile analizzare sia attraverso raccolte di metodi per vedere dove questi metodi vengono chiamati da e quali chiamate che fanno. Di fronte a capire un codice che non hai mai visto prima, questa singola caratteristica potrebbe risparmiare enormi quantità di tempo.


[Clicca sull'immagine per ingrandirla.]
Figura 2. Visual Studio 11 sembra ancora di Visual Studio, ma è uno strumento più potente - la finestra Gerarchia chiamate rende molto più facile per capire che cosa sta facendo l'applicazione.
Tutte le anteprime (compresa la versione Express) hanno due nuove scelte del menu: analisi del codice e delle prestazioni Run Wizard di lancio (vedi figura 3). Questi strumenti forniscono un feedback sulla qualità del codice e quello che sta succedendo sotto il cofano. Come strumento di analisi di accessibilità, questi non sostituirà strumenti dedicati, ma si potrebbe trovare spunti nel codice che non si otterrebbe alcun altro modo.

[Clicca sull'immagine per ingrandirla.]
Figura 3. In aggiunta al codice statico-strumenti di analisi, Visual Studio 11 include uno strumento di analisi delle prestazioni per il monitoraggio dell'utilizzo della CPU e l'allocazione della memoria, tra le altre metriche.
Per gli sviluppatori ASP.NET, il grande cambiamento è probabilmente che server di sviluppo di Visual Studio è stato soppiantato da IIS Express. IIS Express fornisce tutte le funzionalità di un Web Server (il server di sviluppo elaborato solo le richieste HTTP) e deve essere 100 per cento compatibile con la versione completa di IIS (il server di sviluppo di sicurezza applicata in modo leggermente diverso rispetto IIS fatto).
Sono un grande fan di controlli utente ASP.NET, così, a quanto pare, è il team di Visual Studio. È ora possibile selezionare arbitrariamente qualsiasi insieme di HTML in una pagina, fare clic destro e selezionare Extract to controllo utente, come mostrato nella Figura 4. Una finestra di dialogo pop-up che consente di assegnare un nome e, dopo pochi secondi, il progetto avrà un nuovo controllo utente e la tua pagina verrà utilizzato.

[Clicca sull'immagine per ingrandirla.]
Figura 4. È possibile aggiungere un nuovo controllo utente al progetto selezionando i tag in un file. aspx e scegliendo Extract to controllo utente da un menu contestuale. Nella finestra di dialogo Salva con conseguente Come è possibile impostare il nome del controllo utente e decidere dove salvarlo.
Non c'è molto che posso immaginare di essere fatto con senso Intelli ¬, ma Visual Studio 11 non mostra alcuni miglioramenti importanti. File aspx. Le liste ¬ Senso Intelli quando si aggiungono elementi sono molto più brevi, in quanto elementi non validi sono ora automaticamente omessi. Se si modifica un tipo di elemento, la sua etichetta corrispondente aprire o chiudere automaticamente riscritta.
JavaScript sviluppo si avvicina sempre di più a ciò che lato server agli sviluppatori per scontato in compilato i dati di tipo lingue. JavaScript corrispondente coppia è ora incluso e IntelliSense in JavaScript sembra leggermente migliore (ci sono limitazioni essenziali per IntelliSense in un non-dati-tipo di lingua). Il grande miglioramento in JavaScript è un opzione Vai a definizione quando si fa clic su un nome di variabile o una funzione che porta alla dichiarazione dell'elemento.
Una serie di modifiche a promettere test per rendere la vita più facile e migliore integrazione con la vita dello sviluppatore. Test Manager aggiunge test esplorativi per entrambe le edizioni Professional e Ultimate. Con i test esplorativi, è possibile iniziare la vostra applicazione in esecuzione e associarlo, per esempio, una storia dell'utente.Tutte le azioni eseguite sono registrati in uno script di test è possibile incorporare nel vostro test automatizzati. Come si trovassero errori, è possibile registrare e si verrà automaticamente associato con la storia dell'utente. La caratteristica mi piace di più? Se trovate qualcosa di interessante durante la prova di corsa e vuole a vagare per la tangente, è possibile interrompere la registrazione per giocare con la vostra applicazione.
Se stai usando agenti di test in esecuzione su più computer per fornire prove di stress, Lab Manager ora raggiungere oltre a quelli dei computer e installare gli agenti per voi.
Se questa è una recensione (e lo è), dovrei essere in grado di riassumere il valore del prodotto. Anche se non avete intenzione di passare a. NET Framework 4.5, l'aggiornamento a Visual Studio 11 è ben la pena di considerare (cosa che non mi sentivo sulla versione precedente di Visual Studio).
L'aggiornamento a. Framewrok NET 4.5 non è così facile una scelta. Se si sta costruendo servizi, i miglioramenti a WCF sono eccellenti, e vale la pena di passare alla nuova versione non appena uscirà. Le altre variazioni sono certamente la pena e non ve ne pentirete se si aggiorna, ma non ho visto niente di convincente - a meno che non si desidera creare Windows 8 Metro-applicazioni in stile. Se questo è il vostro obiettivo, poi, naturalmente, ti consigliamo sia Visual Studio 11 e. NET Framework 4.5. Per quanto riguarda la creazione di applicazioni in JavaScript ... Ti farò fare la vostra propria mente. Ho avuto abusi abbastanza.

Nessun commento:

Posta un commento