Exam 70-536 Application Development Foundation
Area di riferimento - Implementing serialization and input/output functionality in a .NET Framework application (18 percent) - Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage - May include but is not limited to: IsolatedStorageFile class, IsolatedStorageFileStream class; - DeflateStream class; GZipStream class GZipStream and DeflateStream classes La classi GZipStream e DeflateStream permettono di comprimere dati...
Area di riferimento - Implementing serialization and input/output functionality in a .NET Framework application (18 percent) - Access files and folders by using the File System classes - May include but is not limited to: File class and FileInfo class; Directory class and DirectoryInfo class; - DriveInfo class and DriveType enumeration; FileSystemInfo class and FileSystemWatcher class; Path class; - ErrorEventArgs class and ErrorEventHandler delegate; RenamedEventArgs class and RenamedEventHandler delegate - Manage byte streams by using...
Area di riferimento - Implementing serialization and input/output functionality in a .NET Framework application (18 percent) - Serialize or deserialize an object or an object graph by using runtime serialization techniques. - May include but is not limited to: Serialization interfaces; Serialization attributes; SerializationEntry structure and SerializationInfo class; - ObjectManager class; Formatter class, FormatterConverter class, and FormatterServices class; StreamingContext structure - Control the serialization of an object into XML format by using the System.Xml.Serialization namespace. ...
Area di riferimento - Implementing interoperability, reflection, and mailing functionality in a .NET Framework application - Send electronic mail to a Simple Mail Transfer Protocol (SMTP) server for delivery from a .NET Framework application. - May include but is not limited to: - MailMessage class; MailAddress class and MailAddressCollection class; - SmtpClient class, SmtpPermission class, and SmtpPermissionAttribute class; - Attachment class, AttachmentBase class, and AttachmentCollection class; - SmtpException class, SmtpFailedReceipientException class, and SmtpFailedReceipientsException class; -...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Create a unit of isolation for common language runtime in a .NET Framework application by using application domains - Create an application domain - Unload an application domain - Configure an application domain - Retrieve setup information from an application domain - Load assemblies into an application domain...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - AutoResetEvent class and ManualResetEvent class - EventWaitHandle class, RegisterWaitHandle class, SendOrPostCallback delegate and IOCompletionCallback delegate EventWaitHandle L'oggetto EventWaitHandle ( e gli oggetti derivati AutoResetEvent e ManualResetEvent ) permette di gestire attraverso segnali la sincronizzazione tra diversi thread. I metodi principali sono: Set() che...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - ReaderWriterLock class ReaderWriterLock La classe ReaderWriterLock permette di risolvere il classico problema dei lettori e scrittori su una risorsa. In particolare questo oggetto è pensato per gestire al meglio le situazioni in cui esistono tanti lettori e pochi scrittori quindi è opportuno utilizzarlo soltanto se la risorsa che viene gestita debba essere modificata...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - Interlocked class - Monitor class Thread Synchronization Tutti i thread all'interno del sistema possono avere accesso a risorse condivise come le porte seriali, i file, le finestre ecc. Se un thread richiede l'accesso esclusivo a una risorsa tutti gli altri thread che hanno bisogno della stessa risorsa non potranno continuare il proprio lavoro. Per prevenire che una risorsa condivisa venga corrotta da più thread i programmatori devono utilizzare opportuni costrutti...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - IAsyncResult interface (Refer System namespace) The Asynchronous Programming Model (APM) Eseguire operazioni in modo asincrono è la chiave per la costruzione di applicazioni scalabili e con alte performance. Il team di Microsoft del CLR ha progettato un pattern che rende semplice allo sviluppatore l'utilizzo della programmazione asincrona. Molte classi del framework supportano l'APM fornedo metodi del tipo BeginXXX e EndXXX. Ad esempio la classe FileStream ha un metodo Read...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - Timer class, TimerCallback delegate Timer L'oggetto Timer del namespace System.Threading è il miglior timer da usare quando si vogliono eseguire in background dei task periodici. Quando si costruisce una istanza di un oggetto Timer si specificano le seguenti informazioni: Metodo da richiamare periodicamente (deve rispettare la firma del delegate TimerCallback ) ...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Develop multithreaded .NET Framework applications - Thread class - ThreadPool class - WaitCallback delegat - ThreadStart delegate and ParameterizedThreadStart delegate - ThreadState enumeration and ThreadPriority enumeration Thread Pool I Thread permetto di eseguire operazioni in modo...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Implement, install, and control a service - ServiceController class and ServiceControllerPermission class Controllare i servizi di Windows La classe ServiceController permette di connettersi a un servizio sul computer locale o su un computer remoto, esaminare le capacità del servizio, avviarlo fermarlo e così via. Affinchè un processo possa effettuare questa operazione deve avere le opportune autorizzazioni. Per richiedere...
Area di riferimento - Implementing service processes, threading, and application domains in a .NET Framework application - Implement, install, and control a service - Inherit from ServiceBase class - ServiceInstaller and ServiceProcessInstaller class - SessionChangeDescription structure and SessionChangeReason enumeration Servizi di Windows I servizi di Windows sono processi che vengono eseguiti in background e non hanno interfaccia grafica. I servizi rappresentano un modo ideale per...
Area di riferimento - Developing applications that use system types and collections - Control interactions between .NET Framework application components by using events and delegates - EventArgs class - EventHandler delegates Events Un evento permette a un tipo di notificare ad altri oggetti che si è verificato qualcosa di speciale. Il classico esempio è l'evento offerto dalla classe Button chiamato Click. Quando un pulsante viene cliccato, uno o più oggetti nell'applicazione riceveranno una notifica...
Area di riferimento - Developing applications that use system types and collections - Control interactions between .NET Framework application components by using events and delegates - Delegate class Delegates Il .NET Framework per implementare il meccanismo delle funzioni di callback utilizza i delegates. Nei sistemi Windows le funzioni di callback si utilizzano frequentemente per: Ricevere notifiche su eccezioni non gestite Gestire i cambiamenti del file system Gestire gli eventi...
Area di riferimento - Developing applications that use system types and collections - Implement .NET Framework interfaces to cause components to comply with standard contracts. (Refer System namespace) - IConvertible interface - IFormattable interface IConvertible interface L'interfaccia IConvertible fornisce metodi per convertire un oggetto in un tipo del CLR che ha un valore in qualche modo equivalente. [ComVisible(true), CLSCompliant(false)]public interface IConvertible{ // Methods TypeCode GetTypeCode(); bool ToBoolean(IFormatProvider provider); byte ToByte(IFormatProvider provider); char ToChar(IFormatProvider provider); DateTime ToDateTime(IFormatProvider provider); decimal ToDecimal(IFormatProvider provider); double ToDouble(IFormatProvider provider); short ToInt16(IFormatProvider provider); int ToInt32(IFormatProvider provider); long ToInt64(IFormatProvider provider); sbyte ToSByte(IFormatProvider provider); ...
Area di riferimento - Developing applications that use system types and collections - Implement .NET Framework interfaces to cause components to comply with standard contracts. (Refer System namespace) - ICloneable interface Shallow copy e Deep Copy Spesso nella pratica si ha la necessità di dover effettuare la copia di un oggetto. Esistono sostanzialmente due possibilità: Shallow copy Deep copy La shallow copy effettua una copia parziale dell'oggetto, in particolare vengono copiati solamente i membri value-type mentre gli oggetti figli vengono condivisi con l'oggetto di partenza. In questo caso una modifica alla copia può...
Area di riferimento - Implementing serialization and input/output functionality in a .NET Framework application (18 percent) - Serialize or deserialize an object or an object graph by using runtime serialization techniques. - May include but is not limited to: Serialization interfaces; Serialization attributes; SerializationEntry structure and SerializationInfo class; - ObjectManager class; Formatter class, FormatterConverter class, and FormatterServices class; StreamingContext structure - Control the serialization of an object into XML format by using the System.Xml.Serialization namespace. ...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace) - BitVector32 structure and BitVector32.Section structure BitVector32 structure La struttura BitVector32 permette di gestire a livello di bit un numero a 32 bit. Ecco un esempio di utilizzo: BitVector32 bit = new BitVector32(12); // creo un vettore di bit il cui contenuto iniziale è il numero 12Console.WriteLine(bit.ToString()); // Output: BitVector32{00000000000000000000000000001100} // Costruzione delle maschere necessarie all'accesso agli elementi del vettore di bitint primoBit =...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace) - Named Collections - NameObjectCollectionBase class - NameObjectCollectionBase.KeysCollection class - NameValueCollection class - CollectionsUtil Named Collections La classe NameValueCollection deriva dalla classe astratta NameObjectCollectionBase e rappresenta un dizionario simile a StringDictionary. Tuttavia è permesso l'inserimento di più valori per chiave i quali possono essere acceduti mediante la chiave stessa o un indice. NameValueCollection d = new NameValueCollection(); // utilizzare l'indexer comporta la sovrascrittura del vecchio valore...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace) - Specialized Dictionary - HybridDictionary class - IOrderedDictionary interface and OrderedDictionary class - ListDictionary class Specialized Dictionary La classe HybridDictionary implementa l'interfaccia IDictionary e utilizza un ListDictionary finchè la collezione è piccola per poi passare ad un Hashtable quando la collezione diventa grande. Questo stratagemma garantisce una migliore performance nell'accesso alla struttura dati. La classe si utilizza come un comune dizionario: HybridDictionary dizionario = new HybridDictionary();dizionario["x"] = 1;dizionario["y"] = 2;dizionario["z"]...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using specialized collections. (Refer System.Collections.Specialized namespace) - Specialized String classes - StringCollection class - StringDictionary class - StringEnumerator class Specialized String classes La classe StringCollection permette di memorizzare una collezione di stringhe la cui dimensione può cambiare dinamicamente. La classe implementa le interfacce IList, ICollection, IEnumerable quindi si utilizza allo stesso modo di tutte le altre collection. StringCollection città = new StringCollection();città.Add("Milano");città.Add("Torino");città.Add("Roma"); // Enumero la collection mediante il costrutto foreach (consigliato)foreach (string c in città){ ...
Area di riferimento - Developing applications that use system types and collections - Improve type safety and application performance in a .NET Framework application by using generic collections. (Refer System.Collections.Generic namespace) - Generic IComparable interface (Refer System Namespace) - Generic IComparer interface and Generic IEqualityComparer interface - Generic Comparer class and Generic EqualityComparer class - Generic SortedDictionary class - Generic LinkedList class - Generic LinkedList.Enumerator structure - Generic LinkedListNode class SortedDictionary class SortedDictionary è un dizionario generico che memorizza gli elementi ordinandoli in base al valore della chiave e implementa le interfacce IDictionary<TKey, TValue>,...
Area di riferimento - Developing applications that use system types and collections - Improve type safety and application performance in a .NET Framework application by using generic collections. (Refer System.Collections.Generic namespace) - Generic ICollection interface and Generic IList interface - Generic IDictionary interface - Generic IEnumerable interface and Generic IEnumerator interface - Generic Dictionary class and Generic Dictionary.Enumerator structure - Generic Dictionary.KeyCollection class and Dictionary.KeyCollection.Enumerator structure - Generic Dictionary.ValueCollection class and Dictionary.ValueCollection.Enumerator structure - Generic KeyValuePair structure - Generic List class, Generic List.Enumerator structure and Generic SortedList class - Generic Queue class and Generic Queue.Enumerator structure - Generic Stack class and...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - BitArray class BitArray class La classe BitArray è un collection ridimensionabile in grado di memorizzare valori booleani e consente di eseguire semplice operazioni logiche.Ecco un esempio di utilizzo: static void Main(){ BitArray a = new BitArray(3); // creo un array di bit lungo 3 a[0] = true; a[1] = true; a[2] = true; BitArray b = new BitArray(3); b[0] = false; b[1] = false; ...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - DictionaryBase class DictionaryBase class La classe astratta DictionaryBase fornisce un punto di partenza per l'implementazione di dizionari fortemente tipizzati.Ecco come è definita: [Serializable, ComVisible(true)]public abstract class DictionaryBase : IDictionary, ICollection, IEnumerable{ // Fields private Hashtable hashtable; // Utilizza un Hashtable al suo interno // Methods protected DictionaryBase(); public void Clear(); public void CopyTo(Array array, int index); public IDictionaryEnumerator GetEnumerator(); protected virtual void...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - CollectionBase class CollectionBase class La classe astratta CollectionBase fornisce un punto di partenza per l'implementazione di collection fortemente tipizzate.Ecco come è definita: [Serializable, ComVisible(true)]public abstract class CollectionBase : IList, ICollection, IEnumerable{ // Fields private ArrayList list; // Utilizza un ArrayList internamente // Methods protected CollectionBase(); protected CollectionBase(int capacity); public void Clear(); public IEnumerator GetEnumerator(); protected virtual void OnClear(); protected virtual void OnClearComplete(); protected...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - SortedList class SortedList La classe SortedList implementa le interfacce IDictionary, ICollection, IEnumerable e ICloneable. E' quindi a tutti gli effetti un dizionario. SortedList list = new SortedList();list["Andrea"] = 111111;list["Stefano"] = 222222;list["Alessandro"] = 333333; foreach (DictionaryEntry entry in list){ Console.WriteLine("Lo studente {0} è la matricola {1}", entry.Key, entry.Value);} La differenza rispetto a Hashtable è che gli oggetti al suo interno sono ordinati secondo un certo criterio e...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - Stack class - Queue class Stack e Queue La classe Stack e la classe Queue sono l'implementazione di due note strutture dati nel mondo informatico. La prima utilizza la tecnica LIFO (Last In First Out) per inserire ed estrarre gli elementi. La seconda invece utilizza la tecnica FIFO (First In First Out).Semplice utilizzo della classe Stack: Stack stack = new Stack(); stack.Push("Andrea"); // Inserimento in...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - Hashtable class - DictionaryEntry class - IDictionary interface and IDictionaryEnumerator interface - IEqualityComparer interface Hashtable La classe Hashtable permette di memorizzare coppie chiave/valore cioè una struttura dati di tipo dizionario.Vediamo che il suo utilizzo è molto semplice: Hashtable table = new Hashtable(); // creazione di una nuova tabella hash table.Clear(); // svuota la tabella hash table.Add(111111, "Andrea"); // inserisce una nuova coppia chiave/valoretable.Add(222222, "Stefano");table.Add(333333, "Giorgio");table.Add(444444,...
Area di riferimento - Developing applications that use system types and collections - Manage a group of associated data in a .NET Framework application by using collections. (Refer System.Collections namespace) - ArrayList class - Collection interfaces - ICollection interface and IList interface - IEnumerable interface and IEnumerator interface - IComparer interface and IEqualityComparer interface - Iterators ArrayList class La classe ArrayList permette di creare una collezione di oggetti che possono essere ottenuti sulla base di un indice.Per inserire elementi in una lista è possibile utilizzare le funzioni Add e AddRange e Insert: ArrayList lista1 = new ArrayList();lista1.Add(1); ...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Exception Classes Exception Classes Le eccezioni sono un potente meccanismo per scrivere codice più robusto e manutenibile.Riprendiamo il codice di esempio utilizzato nel post "[70-536] - Generic Types": // Generica Pila con dimensioni limitatepublic class Pila<T>{ private int MAX; // numero massimo di elementi private int cont = 0; // numero corrente di elementi nella pila private T[] elementi; // vettore che conterrà gli elementi //...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Generic types Generic Types Constraints Quando viene compilato del codice generico, il compilatore lo analizza in modo da assicurare che il codice funzionerà per qualsiasi tipo esistente o che potrebbe essere definito in futuro. Questo penalizza molto il programmatore in quanto è costretto a utilizzare soltato i metodi della classe Object per tutti gli argomenti generici . Di fatto questo renderebbe i generics praticamente inutili. Per superare questa limitazione il CLR supporta i...
Area di riferimento
- Developing applications that use system types and collections
- Manage data in a .NET Framework application by using the .NET Framework 2.0 system types
- Generic types
Generic Types
I generics sono un meccanismo offerto dal CLR e supportato dalla sintassi dei linguaggi di programmazione che fornisce una modo di riutilizzare algoritmi.
Ritengo che i generics siano una delle caratteristiche del framework 2.0 che maggiormente ha incrementato la produttivita dello sviluppatore.
L'idea alla base è avere la possibilità di definire algoritmi indipendenti dal tipo di dato su cui lavorano, permettendo di riutilizzarne la logica.
Il paradigma di programmazione generica permette anche di creare...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Attributes AttributesGli attributi permetteno di utilizzare un tipo di programmazione dichiarativa accanto alla classica programmazione imperativa. Gli attributi aggiungono informazioni a tipi, metodi e proprietà, le quali vengono salvate nelle tabelle dei metadati e possono essere interrogate a runtime (mediante una tecnica chiamata Reflection) in modo da alterare dinamicamente l'esecuzione del codice. La FCL definisce tantissimi attributi con differenti scopi ad esempio specificare privilegi di sicurezza, dichiarare capacità come il supporto alla...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Boxing and UnBoxing Boxing and Unboxing Il boxing è un meccanismo che permette di convertire un value type in un reference type. L'operazione comporta l'allocazione di memoria heap, la copia dei campi del value type nel nuovo spazio di memoria e la restituzione dell'indirizzo del nuovo oggetto. Questo significa che dopo l'operazione di Boxing in realtà esistono due copie dei dati, una memorizzata nello stack e l'altra...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Nullable type I value types non possono contenere un valore nullo. Il tipo Nullable<T> definito nel .NET Framework 2.0 permette di aggiungere al dominio di un value types il valore nullo. Esempio di utilizzo del tipo Nullable<T>: Nullable<int> voto = null; if (voto.HasValue == false){ Console.WriteLine("Non hai ancora sostenuto l'esame.");} voto = 30;Console.WriteLine("Il voto dell'esame è {0}", voto); C# offre una sintassi semplificata...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Value types Le enumerazioni permettono allo sviluppatore di definire un insieme di simboli che hanno un fissato valore. Lo scopo è semplificare la manutenzione del codice nonchè migliorare notevolmente la sua leggibilità. Un tipo enumerato deriva dalla classe astratta System.Enum che a sua volta deriva da System.ValueType quindi gli enumeratori sono value types. La classe Enum fornisce dei metodi astratti che permettono di effettuare molte operazioni sugli enumeratori. Definizione di un tipo enumerato: enum Giorni{ ...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Value types User-Defined Value Types Gli user-defined value types sono anche chiamati strutture (structs). Come gli altri value types, le istanze degli user-defined value types sono memorizzate sullo stack e contengono direttamente i loro dati. Le strutture non sono altro che un un aggregato di altri tipi e derivano tutte implicitamente da System.ValueType. Non è possibile derivare una struttura da un altra struttura anche se invece è possibile che implementino...
Area di riferimento - Developing applications that use system types and collections - Manage data in a .NET Framework application by using the .NET Framework 2.0 system types - Value typesBreve introduzione al .NET FrameworkIl Microsoft .NET Framework 2.0 è costituito da due parti: il Common Language Runtime (CLR) e la Framework Class Library (FCL). Il CLR costituisce l'ambiente di esecuzione per le nostre applicazioni ed è l'equivalente della Java Virtual Machine del mondo Java. La FCL fornisce delle API orientate agli oggetti per svolgere diverse operazioni necessarie alle applicazioni. Il Microsoft .NET Framework offre un'ambiente gestito per l'esecuzione del...
L'esame 70-536 Application Development Foundation è il primo da sostenere per chi desidera come me ottenere le certificazioni sulla tecnologia Microsoft .NET Framework 2.0. Ho deciso di pubblicare una serie di post espressamente dedicati per la preparazione a questo esame, senza la presunzione di essere esaustivo. So che altri prima di me hanno intrapreso questa strada ma ho fatto questa scelta per alcuni semplici motivi: stimolare la mia preparazione perchè per evitare di scrivere fesserie sono obbligato ad analizzare meglio quello che studio...