SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Operativa básica del Framework .NET Interfaces estándar Delegados y Eventos Excepciones Atributos Colecciones Globalización y localización Interoperabilidad Hilos y Servicios
Operativa básica del Framework .NET Interfaces estándar Para que nuestras clases puedan ser utilizadas por código cliente en la misma forma que las del propio sistemas, han de implementar los correspondientes interfaces estándar, los principales de los cuales se relacionan a continuación: IComparable: permite la comparación de dos instancias del mismo tipo, con el método CompareTo permitiendo la ordenación de una lista de elementos de este tipo. IEquatable: para poder determinar la igualdad entre dos instancias del mismo tipo, mediante el método Equals. IConvertible: para especificar las operaciones para convertir nuestro tipo a una variedad de tipos del sistema, ToXxxx. ICloneable: para devolver una copia idéntica de un a instancia de nuestro tipo en otro objeto, mediante Clone. IFormattable: para devolver un String con un determinado formato, a partir de una instancia de nuestro tipo. Útil para la salida a pantalla o listado con el método ToString(). IDisposable: nos permitirá generar un método Dispose, para liberar los recursos utilizados en cuanto sea necesario.
Operativa básica del Framework .NET Delegados y Eventos Los delegados son el equivalente, en programación orientada a objetos, a los punteros a función de otros lenguajes, como el C++.  Aunque con una seguridad de tipos incrementada y un uso muy diferenciado con respecto a sus antecesores. Se utilizan principalmente en los retornos de funciones (callbacks), llamadas asíncronas, ejecuciones diferidas y en la gestión de eventos. En todos los casos, como forma de especificar la firma del método a ejecutar. En la operativa habitual sólo utilizaremos los eventos asociados al interfaz de usuario de nuestra aplicación, mediante las facilidades que nos suministra el IDE o en el caso de implementar llamadas asíncronas con Threading. Pero podemos definir delegados y eventos a nuestra conveniencia, asociados a la lógica de negocio, y lanzar la ejecución en el momento oportuno. public class AccountEventArgs : EventArgs {// Custom event argument class.    private double _balance;    public AccountEventArgs(double b) {       _balance = b;    }    public double Balance {       get { return _balance; }    } } public class Account { // Account class, defines two public events.    public event EventHandler<AccountEventArgs> AccountInDeficit;    public event EventHandler<AccountEventArgs> AccountInCredit; } public class Account {    …    private double _balance;    …    public void Deposit(double amount) {       _balance += amount;       if (_balance > 0 && _balance <= amount) { // Moved into credit, raise the AccountInCredit event.       EventHandler<AccountEventArgs> handler = AccountInCredit;           if (handler != null) {             AccountEventArgs args = new AccountEventArgs(_balance);             handler(this, args);          }       }    } } Account acc1 = new Account("Jane"); // Create an Account object. acc1.AccountInCredit += OnAccountInCredit; // Handle the AccountInCredit event on the Account object. acc1.Withdraw(100); // Deposit and withdraw some money. acc1.Deposit(50); acc1.Deposit(70); void OnAccountInCredit(object sender, AccountEventArgs args) // Event-handler for AccountInCredit event {    double balance = args.Balance;    Console.WriteLine("Account in credit, new balance: {0:c}", balance); }
Operativa básica del Framework .NET Excepciones Las excepciones son el sistema mediante el que el Framework .NET implementa el control y gestión de los errores y problemas que se puedan producir durante la ejecución del código de una forma controlada y uniforme. Todos los métodos propios del Framework utilizan este sistema para indicar los fallos. Podemos definir y utilizar nuestras propias excepciones, heredando de System.Exception o de una de sus subclases, para ampliar la información aportada por el sistema o para especificar circunstancias de negocio o no contempladas por el Framework, para lo cual utilizaremos la palabra clave throw. Para controlar la posible ocurrencia de una excepción en un bloque de código habremos de emplear las palabras clave de bloque Try…Catch…Finally. Las excepciones están estructuradas en jerarquías, las cuales habrán de ser tenidas en cuenta a la hora de controlar los posibles errores en la ejecución. Manejo de excepciones
Operativa básica del Framework .NET Atributos Los atributos son la herramienta de la que disponemos para añadir metadatos en los ensamblados, asociándolos a cada objeto, tipos o miembros, destino de los mismos. Son declaraciones descriptivas de tipo palabras clave asociadas a tipos, campos, métodos o propiedades.  Estos atributos se salvan con los metadatos y permiten describir el código al CLR o, incluso, modificar el comportamiento de la aplicación en tiempo de ejecución. Permiten, entre otras, indicar la forma en la que se han de serializar los datos, especificar características de seguridad, limitar el alcance de la optimización de la compilación Just-In-Time, de forma que el código sea fácil de depurar. Otra de las funcionalidades para las que se utilizan los atributos es para añadir descripciones útiles para los desarrolladores que vayan a utilizar servicios que hayamos desarrollado y pongamos a su disposición.
Operativa básica del Framework .NET Colecciones En el Framework disponemos de una amplia gama de clases de colección para contener objetos, las cuales permiten mayor flexibilidad que los arrays porque son serializables y disponen de métodos que nos permiten añadir, eliminar y acceder a los elementos de la colección. Disponemos de colecciones orientadas a objetos, las cuales residen en el espacio de nombres System.Collections, como pueden ser ArrayList, Queue, Stack, Hashtable, SortedList o BitArray. También hay colecciones genéricas, en el espacio de nombres System.Collections.Generic, por ejemplo List<T>, Queue<T>, LinkedList<T>, Stack<T>, SortedDictionary<TKey,TValue>, Dictionary<TKey,Tvalue> o SortedList<TKey,TValue>. Finalmente tenemos las colecciones especializadas en el espacio de nombres System.Collections.Specialized, como StringDictionary,  ListDictionary, HybridDictionary, OrderedDictionary, NameObjectCollectionBase(abstract), NameValueCollection, CollectionsUtilclass, BitVector32 structure o StringCollection,.
Operativa básica del Framework .NET Espacio de nombres System.Collections Interfaces de colección Interfaces de comparación Ienumerable GetEnumerator IComparer Icollection Count IsSynchronized SyncRoot CopyTo IEqualityComparer Interfaces enumeración Ilist IsFixedSize  IsReadOnly  Item  Add  Clear Contains IndexOf Insert Remove RemoveAt Idictionary IsFixedSize  IsreadOnly Item Keys Values Add  Clear Contains GetEnumerator Remove Ienumerator Current MoveNext Reset IDictionaryEnumerator Entry Key Value
Operativa básica del Framework .NET Globalización y localización En el mundo actual es imprescindible que nuestras aplicaciones sean accesibles y se puedan adaptar a las peculiaridades de idioma y cultura de todos nuestros clientes. Los términos asociados a estas funcionalidades multiculturales son los siguientes: Véase “CultureInfo Class” en   http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(VS.80).aspx
Operativa básica del Framework .NET Principales clases del espacio de nombres System.Globalization
Operativa básica del Framework .NET CultureInfo class [Visual C#] private void mostrarCulturas() { CultureInfo[] culturas = CultureInfo.GetCultures(CultureTypes.SpecificCultures); foreach (CultureInfo cultura in culturas) { Console.WriteLine(cultura.Name & “, “ & cultura.DisplayName); } } [Visual Basic] Private Sub mostrarCulturas() Dim culturas As CultureInfo() = _ CultureInfo.GetCultures(CultureTypes.SpecificCultures) For Each cultura As CultureInfo In culturas Console.WriteLine(cultura.Name & “, “ & cultura.DisplayName) Next culture End Sub Ejercicio
Operativa básica del Framework .NET Formatos de fecha [Visual C#] private void formatoFechas() { DateTimeFormatInfo formatoFecha1 = new CultureInfo("en-US", false).DateTimeFormat; DateTimeFormatInfo formatoFecha2 = Thread.CurrentThread.CurrentCulture.DateTimeFormat; Console.WriteLine("Formato de fecha 1: {0}", formatoFecha1.ShortDatePattern); Console.WriteLine(" Formato de fecha 2: {0}", formatoFecha2.ShortDatePattern); formatoFecha1.AbbreviatedMonthNames = new string[] {"Jn", "Fb", "Mr", "Ap", "My", "Jn", "Jy", "Au", "Se", "Oc", "Nv", "De", ""}; string hoy = DateTime.Now.ToString("dd-MMM-yyyy", formatoFecha1); Console.WriteLine("Ammended Date Format: {0}", hoy) ; } [Visual Basic] Private Sub formatoFechas) Dim formatoFecha1 As DateTimeFormatInfo = New CultureInfo("en-US", _ False).DateTimeFormat Dim formatoFecha2 As DateTimeFormatInfo = _ Thread.CurrentThread.CurrentCulture.DateTimeFormat Console.WriteLine(" Formato de fecha 1: {0}", formatoFecha1.ShortDatePattern) Console.WriteLine(" Formato de fecha 2: {0}", formatoFecha2.ShortDatePattern) formatoFecha1.AbbreviatedMonthNames = New String() {"Jn", "Fb", "Mr", "Ap", "My", "Jn",_ "Jy", "Au", "Se", "Oc", "Nv", "De", ""} Dim hoyAs String = DateTime.Now.ToString("dd-MMM-yyyy", formatoFecha1) Console.WriteLine("Ammended Date Format: {0}", hoy) End Sub Ejercicio
Operativa básica del Framework .NET Interoperabilidad El framework .NET, mediante el CLR, provee un entorno de ejecución controlada de aplicaciones, sea cual sea el lenguaje en el que hayan sido desarrolladas, dentro de los de la plataforma .NET, a lo que se llama entorno manejadoy los programas que en el corren, código manejado. Todos los componentes desarrollados con otras tecnologías, DLL’s, Component Object Model, llamadas a las API’s de Windows, y todo aquél código que no ofrezca un interfaz .NET,  entrará en la categoría de código no manejado. El Framework .NET nos ofrece varias formas de acceder a este código no manejado y poder integrarlo en nuestras soluciones, ya sea como llamadas a objetos externos o integrándolos en los ensamblados anteriormente comentados. De tal forma que su uso será absolutamente transparente al usuario, quedando perfectamente integrado y siendo su gestión totalmente controlada, como la del resto de nuestros ensamblados, gozando de todas las ventajas y privilegios que nos ofrece el entorno .NET.
Operativa básica del Framework .NET El accceso o llamadas al código no manejado se pueden realizar mediante Platform Invoke o COM Interop.  En ambos casos Interop Marshaler será la herramienta encargada del paso de datos entre código manejado y no manejado, mediante el uso de los stacks manejado y no manejado. Los ensamblados para Interop se pueden crear mediante Visual Studio o la herramienta de línea de comandos tlbimp. 57-06 57-06 tlbimp MyTypeLib.tlb /out:InteropAssembly.dll /keyfile:Keys.snk
Operativa básica del Framework .NET Hilos o Hebras Toda ejecución que lancemos en el sistema lo hará bajo un hilo (Thread) principal, del que podrán partir otros hilos de ejecución, pudiendo sincronizarse las ejecuciones de los diversos hilos, para coordinar los procesos, estando todas las clases relacionadas en el espacio de nombres System.Threading. Estos hilos nos permiten el lanzamiento de ejecuciones asíncronas que evitan el bloqueo de la interfaz de usuario mientras el sistema está ocupado en otros accesos. Los servicios Windows son procesos, sin interfaz de usuario, que corren en un contexto de seguridad diferente del que tenga el usuario activo, habitualmente lanzados de forma autónoma y automática en el arranque del sistema, tras haber sido debidamente instalados, debiendo usar el espacio de nombres System.ServiceProcess, en su creación. Tanto los hilos como los servicios corren en unas unidades de aislamiento dentro de los procesos de .NET llamados Dominios de Aplicación, los cuales permiten las ejecuciones en paralelo, aisladas unas de otras, permitiendo, incluso, la ejecución concurrente de versiones distintas de los mismos procesos sin interferir unos con otros.
Operativa básica del Framework .NET Para dotar de cierto paralelismo a nuestras aplicaciones, no es necesario dividirlas en procesos completamente independientes. Dentro de un proceso, podemos tener varias hebras ejecutándose concurrentemente. Con las hebras se gana algo de eficiencia, al resultar más eficientes tanto los cambios de contexto como la comunicación entre hebras.  No obstante, al compartir el mismo espacio de memoria, deberemos ser cuidadosos al acceder a recursos compartidos, para lo que tendremos que utilizar los mecanismos de sincronización que veremos más adelante. En la plataforma .NET, las clases incluidas en el espacio de nombres  System.Threading, junto con la palabra reservada lock en C# / SyncLock en VB, nos proporcionan toda la infraestructura necesaria para crear aplicaciones multihebra.  De hecho, todas las aplicaciones .NET son en realidad aplicaciones multihebra. El recolector de basura no es más que una hebra que se ejecuta concurrentemente con la hebra principal de la aplicación y va liberando la memoria que ya no se usa.
Operativa básica del Framework .NET Threads de Windows: Son unidades de ejecución que permiten enfocar el desarrollo orientado a tareas. Mejoran el rendimiento y la respuesta de las aplicaciones ligadas en operaciones de entrada y salida, aunque reducen el rendimiento de las aplicaciones con alto consumo de CPU. Los componentes COM se integran con estos hilos. Threads de .NET: Son hilos lógicos, normalmente basados en hilos de Windows. Todo el framework .NET ha sido desarrollado para tener en cuenta la programación basada en hilos. Los hilos de .NET integran perfectamente los objetos COM. Disponemos de la clase estática ThreadPool que nos permite utilizar hilos genéricos de trabajo, sin necesidad de definición en nuestro proceso, sólo ejecutando QueueUserWorkitem con un delegado WaitCallback. Sean del tipo que sean, una vez lanzado un hilo, no se puede parar la ejecución del proceso.
Operativa básica del Framework .NET [Visual C#] void CrearHilo() { Thread t = new Thread(new ParameterizedThreadStart(ProcesoLanzado)); // El hilo .NET ha sido creado, pero el método no ha sido llamado. t.Start(1000); // Ahora se lanza la ejecución en el nuevo hilo. } void ProcesoLanzado(object param) { int contador = (int)param; for (int x = 0; x < contador ; ++x) { . . . . } } [Visual Basic] Sub CrearHilo() Dim t As New Thread(New ParameterizedThreadStart(AddressOf ProcesoLanzado)) ' El hilo .NET ha sido creado, pero el método no ha sido llamado. t.Start(1000) ' Ahora se lanza la ejecución en el nuevo hilo. End Sub Sub ProcesoLanzado (ByVal param As Object) Dim contador As Integer = CInt(param) For x = 0 To contador . . . . Next End Sub
Operativa básica del Framework .NET Métodos de la clase Thread COM Security Localization Thread State Thread Local Storage Domains and Contexts Thread Control CriticalRegions Thread Affinity GetApartmentState SetApartmentState CurrentPrincipal ExecutionContext Priority CurrentCulture ThreadState AllocateDataSlot GetData SetData CurrentContext GetDomain Abort CurrentThread Join Interrupt BeginCriticalRegion EndCriticalRegion EndThreadAffinity BeginThreadAffinity SetProcessorAffinity ThreadState: Unstarted, Running, WaitSleepJoin, Stopped, and Aborted.
Operativa básica del Framework .NET Objetos de sincronización de hilos BackgroundWorker Un hilo puede apuntar a uno o más hilos que están esperando. EventWaitHandle Solo un hilo es propietario del objeto protegido por el mutex.  Mutex Más de un hilo es propietario del objeto protegido por unsemaphore. Semaphore Provee un bloqueo para proteger código.  Usado por lock(C#) / SyncLock(VB). Monitor Solo un hilo puede escribir en los datos protegidos, el resto solo puede leer los datos. ReaderWriterLock
Operativa básica del Framework .NET Un servicio Windows es un proceso sin interfaz de usuario que, habitualmente, suele ejecutarse con un entorno de seguridad que no corresponde al del usuario del equipo y que puede ser lanzado automáticamente en el arranque del equipo. También es posible indicar que, en caso de parada inesperada, el servicio re-arranque automáticamente. La instalación y desinstalación de los servicios se realiza mediante el Software Configuration Manager, con lo que quedará inscrito en el registro del sistema. Esta herramienta es también la utilizada para arrancar, pausar o para los servicios, pasando mensajes numéricos de 32 bits al servicio. Un servicio puede depender de otros para su ejecución. Un proceso puede contener más de un servicio. En el caso de requerir parámetros o valores de alguna aplicación, los servicios deberán dar soporte a la comunicación inter-procesos.
Operativa básica del Framework .NET Para generar un nuevo servicio deberemos heredar de la clase Sysyem.ServiceBase.ServiceBase y utilizar su método estático Run para registrar la función ServiceMain y los handlers asociados al servicio. La inicialización del servicio deberá situarse en el método OnStart, en lugar de en el constructor. Para poder acceder a los servicios registrados en el sistema deberemos utilizar la clase ServiceController, junto con el SCM, para poder pasarle comandos o mensajes IPC al servicio. Aunque todo esto está bastante simplificado si desarrollamos nuestro servicio desde Visual Studio 2008, ya que disponemos de una plantilla de proyecto específica para generar servicios y sólo tendremos que ir implementando la funcionalidad que requiera nuestro servicio mediante el uso de los controles adecuados. Habremos de generar un Installer, con el atributo RunInstaller a True, y una instancia de ServiceInstaller para cada servicio del proceso, el cual deberá tener una instancia de ServiceProcessInstaller.

Weitere ähnliche Inhalte

Andere mochten auch

Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Antonio Palomares Sender
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoAntonio Palomares Sender
 
Framework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosFramework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosAntonio Palomares Sender
 
Introducción a la Plataforma .NET
Introducción a la Plataforma .NETIntroducción a la Plataforma .NET
Introducción a la Plataforma .NETMelissa Santacruz
 
Presentacion de Visual Basic
Presentacion de Visual BasicPresentacion de Visual Basic
Presentacion de Visual BasicFrancheska Parras
 
Introduccion a la plataforma .NET
Introduccion a la plataforma .NETIntroduccion a la plataforma .NET
Introduccion a la plataforma .NETjnarchie
 
Introduccion a Visual Studio .NET
Introduccion a Visual Studio .NETIntroduccion a Visual Studio .NET
Introduccion a Visual Studio .NETjnarchie
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET FrameworkSorey García
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 

Andere mochten auch (12)

.Net framework
.Net framework.Net framework
.Net framework
 
Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)Framework .NET 3.5 02 Entorno de desarrollo (ide)
Framework .NET 3.5 02 Entorno de desarrollo (ide)
 
Framework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entornoFramework .NET 3.5 01 Conceptos básicos y entorno
Framework .NET 3.5 01 Conceptos básicos y entorno
 
Net y WPF
Net y WPFNet y WPF
Net y WPF
 
Framework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datosFramework .NET 3.5 08 Validación de datos
Framework .NET 3.5 08 Validación de datos
 
Introducción a la Plataforma .NET
Introducción a la Plataforma .NETIntroducción a la Plataforma .NET
Introducción a la Plataforma .NET
 
Presentacion de Visual Basic
Presentacion de Visual BasicPresentacion de Visual Basic
Presentacion de Visual Basic
 
Clase ii
Clase iiClase ii
Clase ii
 
Introduccion a la plataforma .NET
Introduccion a la plataforma .NETIntroduccion a la plataforma .NET
Introduccion a la plataforma .NET
 
Introduccion a Visual Studio .NET
Introduccion a Visual Studio .NETIntroduccion a Visual Studio .NET
Introduccion a Visual Studio .NET
 
Entendiendo el .NET Framework
Entendiendo el .NET FrameworkEntendiendo el .NET Framework
Entendiendo el .NET Framework
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 

Ähnlich wie Framework .NET 3.5 06 Operativa básica del framework .net

Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfBrimmerRamrez
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacionkaolong
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005hvillarreal
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#José García
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
Desarrollo a aplicaciones . net (1)
Desarrollo a aplicaciones . net (1)Desarrollo a aplicaciones . net (1)
Desarrollo a aplicaciones . net (1)jenny21071
 

Ähnlich wie Framework .NET 3.5 06 Operativa básica del framework .net (20)

Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Tarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdfTarea_Investigacion programacion .pdf
Tarea_Investigacion programacion .pdf
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Glosario vs .net
Glosario vs .netGlosario vs .net
Glosario vs .net
 
Visual basic .NET
Visual basic .NETVisual basic .NET
Visual basic .NET
 
FMK Capa de Presentacion
FMK Capa de PresentacionFMK Capa de Presentacion
FMK Capa de Presentacion
 
Visual Studio2005
Visual Studio2005Visual Studio2005
Visual Studio2005
 
Aplicaciones En Capas
Aplicaciones En CapasAplicaciones En Capas
Aplicaciones En Capas
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#Reporte_de_microsoft_visual_c#
Reporte_de_microsoft_visual_c#
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Mis diapositivas uml
Mis diapositivas umlMis diapositivas uml
Mis diapositivas uml
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Desarrollo a aplicaciones . net (1)
Desarrollo a aplicaciones . net (1)Desarrollo a aplicaciones . net (1)
Desarrollo a aplicaciones . net (1)
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
DAM-S7.pptx
DAM-S7.pptxDAM-S7.pptx
DAM-S7.pptx
 

Mehr von Antonio Palomares Sender

Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesAntonio Palomares Sender
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redAntonio Palomares Sender
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingAntonio Palomares Sender
 
Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasAntonio Palomares Sender
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosAntonio Palomares Sender
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosAntonio Palomares Sender
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeAntonio Palomares Sender
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serializaciónAntonio Palomares Sender
 

Mehr von Antonio Palomares Sender (10)

Framework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de solucionesFramework .NET 3.5 15 Configuración y despliegue de soluciones
Framework .NET 3.5 15 Configuración y despliegue de soluciones
 
Framework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la redFramework .NET 3.5 13 Programación orientada a la red
Framework .NET 3.5 13 Programación orientada a la red
 
Framework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawingFramework .NET 3.5 12 Uso de system.drawing
Framework .NET 3.5 12 Uso de system.drawing
 
Framework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 SeguridadFramework .NET 3.5 11 Seguridad
Framework .NET 3.5 11 Seguridad
 
Framework .NET 3.5 10 Linq
Framework .NET 3.5 10 LinqFramework .NET 3.5 10 Linq
Framework .NET 3.5 10 Linq
 
Framework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebasFramework .NET 3.5 09 Depuración, monitorización y pruebas
Framework .NET 3.5 09 Depuración, monitorización y pruebas
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
 
Framework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetosFramework .NET 3.5 05 Tipo y jerarquía de objetos
Framework .NET 3.5 05 Tipo y jerarquía de objetos
 
Framework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtimeFramework .NET 3.5 04 El common language runtime
Framework .NET 3.5 04 El common language runtime
 
Framework .NET 3.5 14 Gestión de archivos y serialización
Framework .NET 3.5 14  Gestión de archivos y serializaciónFramework .NET 3.5 14  Gestión de archivos y serialización
Framework .NET 3.5 14 Gestión de archivos y serialización
 

Kürzlich hochgeladen

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdflauralizcano0319
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskbydaniela5
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888ElianaValencia28
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfJoseAlejandroPerezBa
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaElizabethLpezSoto
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024anasofiarodriguezcru
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.radatoro1
 

Kürzlich hochgeladen (20)

TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdftecnologiaactividad11-240323205859-a9b9b9bc.pdf
tecnologiaactividad11-240323205859-a9b9b9bc.pdf
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjskTrabajo de Tecnología .pdfywhwhejsjsjsjsjsk
Trabajo de Tecnología .pdfywhwhejsjsjsjsjsk
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888TECNOLOGIA 11-4.8888888888888888888888888
TECNOLOGIA 11-4.8888888888888888888888888
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdfTENDENCIAS DE IA Inteligencia artificial generativa.pdf
TENDENCIAS DE IA Inteligencia artificial generativa.pdf
 
Tecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestríaTecnología Educativa- presentación maestría
Tecnología Educativa- presentación maestría
 
Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024Trabajo de tecnología primer periodo 2024
Trabajo de tecnología primer periodo 2024
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
TinkerCAD y figuras en 3D. Uso del programa TinkerCAD para crear fuguras.
 

Framework .NET 3.5 06 Operativa básica del framework .net

  • 1. Operativa básica del Framework .NET Interfaces estándar Delegados y Eventos Excepciones Atributos Colecciones Globalización y localización Interoperabilidad Hilos y Servicios
  • 2. Operativa básica del Framework .NET Interfaces estándar Para que nuestras clases puedan ser utilizadas por código cliente en la misma forma que las del propio sistemas, han de implementar los correspondientes interfaces estándar, los principales de los cuales se relacionan a continuación: IComparable: permite la comparación de dos instancias del mismo tipo, con el método CompareTo permitiendo la ordenación de una lista de elementos de este tipo. IEquatable: para poder determinar la igualdad entre dos instancias del mismo tipo, mediante el método Equals. IConvertible: para especificar las operaciones para convertir nuestro tipo a una variedad de tipos del sistema, ToXxxx. ICloneable: para devolver una copia idéntica de un a instancia de nuestro tipo en otro objeto, mediante Clone. IFormattable: para devolver un String con un determinado formato, a partir de una instancia de nuestro tipo. Útil para la salida a pantalla o listado con el método ToString(). IDisposable: nos permitirá generar un método Dispose, para liberar los recursos utilizados en cuanto sea necesario.
  • 3. Operativa básica del Framework .NET Delegados y Eventos Los delegados son el equivalente, en programación orientada a objetos, a los punteros a función de otros lenguajes, como el C++. Aunque con una seguridad de tipos incrementada y un uso muy diferenciado con respecto a sus antecesores. Se utilizan principalmente en los retornos de funciones (callbacks), llamadas asíncronas, ejecuciones diferidas y en la gestión de eventos. En todos los casos, como forma de especificar la firma del método a ejecutar. En la operativa habitual sólo utilizaremos los eventos asociados al interfaz de usuario de nuestra aplicación, mediante las facilidades que nos suministra el IDE o en el caso de implementar llamadas asíncronas con Threading. Pero podemos definir delegados y eventos a nuestra conveniencia, asociados a la lógica de negocio, y lanzar la ejecución en el momento oportuno. public class AccountEventArgs : EventArgs {// Custom event argument class. private double _balance; public AccountEventArgs(double b) { _balance = b; } public double Balance { get { return _balance; } } } public class Account { // Account class, defines two public events. public event EventHandler<AccountEventArgs> AccountInDeficit; public event EventHandler<AccountEventArgs> AccountInCredit; } public class Account { … private double _balance; … public void Deposit(double amount) { _balance += amount; if (_balance > 0 && _balance <= amount) { // Moved into credit, raise the AccountInCredit event. EventHandler<AccountEventArgs> handler = AccountInCredit; if (handler != null) { AccountEventArgs args = new AccountEventArgs(_balance); handler(this, args); } } } } Account acc1 = new Account("Jane"); // Create an Account object. acc1.AccountInCredit += OnAccountInCredit; // Handle the AccountInCredit event on the Account object. acc1.Withdraw(100); // Deposit and withdraw some money. acc1.Deposit(50); acc1.Deposit(70); void OnAccountInCredit(object sender, AccountEventArgs args) // Event-handler for AccountInCredit event { double balance = args.Balance; Console.WriteLine("Account in credit, new balance: {0:c}", balance); }
  • 4. Operativa básica del Framework .NET Excepciones Las excepciones son el sistema mediante el que el Framework .NET implementa el control y gestión de los errores y problemas que se puedan producir durante la ejecución del código de una forma controlada y uniforme. Todos los métodos propios del Framework utilizan este sistema para indicar los fallos. Podemos definir y utilizar nuestras propias excepciones, heredando de System.Exception o de una de sus subclases, para ampliar la información aportada por el sistema o para especificar circunstancias de negocio o no contempladas por el Framework, para lo cual utilizaremos la palabra clave throw. Para controlar la posible ocurrencia de una excepción en un bloque de código habremos de emplear las palabras clave de bloque Try…Catch…Finally. Las excepciones están estructuradas en jerarquías, las cuales habrán de ser tenidas en cuenta a la hora de controlar los posibles errores en la ejecución. Manejo de excepciones
  • 5. Operativa básica del Framework .NET Atributos Los atributos son la herramienta de la que disponemos para añadir metadatos en los ensamblados, asociándolos a cada objeto, tipos o miembros, destino de los mismos. Son declaraciones descriptivas de tipo palabras clave asociadas a tipos, campos, métodos o propiedades. Estos atributos se salvan con los metadatos y permiten describir el código al CLR o, incluso, modificar el comportamiento de la aplicación en tiempo de ejecución. Permiten, entre otras, indicar la forma en la que se han de serializar los datos, especificar características de seguridad, limitar el alcance de la optimización de la compilación Just-In-Time, de forma que el código sea fácil de depurar. Otra de las funcionalidades para las que se utilizan los atributos es para añadir descripciones útiles para los desarrolladores que vayan a utilizar servicios que hayamos desarrollado y pongamos a su disposición.
  • 6. Operativa básica del Framework .NET Colecciones En el Framework disponemos de una amplia gama de clases de colección para contener objetos, las cuales permiten mayor flexibilidad que los arrays porque son serializables y disponen de métodos que nos permiten añadir, eliminar y acceder a los elementos de la colección. Disponemos de colecciones orientadas a objetos, las cuales residen en el espacio de nombres System.Collections, como pueden ser ArrayList, Queue, Stack, Hashtable, SortedList o BitArray. También hay colecciones genéricas, en el espacio de nombres System.Collections.Generic, por ejemplo List<T>, Queue<T>, LinkedList<T>, Stack<T>, SortedDictionary<TKey,TValue>, Dictionary<TKey,Tvalue> o SortedList<TKey,TValue>. Finalmente tenemos las colecciones especializadas en el espacio de nombres System.Collections.Specialized, como StringDictionary, ListDictionary, HybridDictionary, OrderedDictionary, NameObjectCollectionBase(abstract), NameValueCollection, CollectionsUtilclass, BitVector32 structure o StringCollection,.
  • 7. Operativa básica del Framework .NET Espacio de nombres System.Collections Interfaces de colección Interfaces de comparación Ienumerable GetEnumerator IComparer Icollection Count IsSynchronized SyncRoot CopyTo IEqualityComparer Interfaces enumeración Ilist IsFixedSize IsReadOnly Item Add Clear Contains IndexOf Insert Remove RemoveAt Idictionary IsFixedSize IsreadOnly Item Keys Values Add Clear Contains GetEnumerator Remove Ienumerator Current MoveNext Reset IDictionaryEnumerator Entry Key Value
  • 8. Operativa básica del Framework .NET Globalización y localización En el mundo actual es imprescindible que nuestras aplicaciones sean accesibles y se puedan adaptar a las peculiaridades de idioma y cultura de todos nuestros clientes. Los términos asociados a estas funcionalidades multiculturales son los siguientes: Véase “CultureInfo Class” en http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo(VS.80).aspx
  • 9. Operativa básica del Framework .NET Principales clases del espacio de nombres System.Globalization
  • 10. Operativa básica del Framework .NET CultureInfo class [Visual C#] private void mostrarCulturas() { CultureInfo[] culturas = CultureInfo.GetCultures(CultureTypes.SpecificCultures); foreach (CultureInfo cultura in culturas) { Console.WriteLine(cultura.Name & “, “ & cultura.DisplayName); } } [Visual Basic] Private Sub mostrarCulturas() Dim culturas As CultureInfo() = _ CultureInfo.GetCultures(CultureTypes.SpecificCultures) For Each cultura As CultureInfo In culturas Console.WriteLine(cultura.Name & “, “ & cultura.DisplayName) Next culture End Sub Ejercicio
  • 11. Operativa básica del Framework .NET Formatos de fecha [Visual C#] private void formatoFechas() { DateTimeFormatInfo formatoFecha1 = new CultureInfo("en-US", false).DateTimeFormat; DateTimeFormatInfo formatoFecha2 = Thread.CurrentThread.CurrentCulture.DateTimeFormat; Console.WriteLine("Formato de fecha 1: {0}", formatoFecha1.ShortDatePattern); Console.WriteLine(" Formato de fecha 2: {0}", formatoFecha2.ShortDatePattern); formatoFecha1.AbbreviatedMonthNames = new string[] {"Jn", "Fb", "Mr", "Ap", "My", "Jn", "Jy", "Au", "Se", "Oc", "Nv", "De", ""}; string hoy = DateTime.Now.ToString("dd-MMM-yyyy", formatoFecha1); Console.WriteLine("Ammended Date Format: {0}", hoy) ; } [Visual Basic] Private Sub formatoFechas) Dim formatoFecha1 As DateTimeFormatInfo = New CultureInfo("en-US", _ False).DateTimeFormat Dim formatoFecha2 As DateTimeFormatInfo = _ Thread.CurrentThread.CurrentCulture.DateTimeFormat Console.WriteLine(" Formato de fecha 1: {0}", formatoFecha1.ShortDatePattern) Console.WriteLine(" Formato de fecha 2: {0}", formatoFecha2.ShortDatePattern) formatoFecha1.AbbreviatedMonthNames = New String() {"Jn", "Fb", "Mr", "Ap", "My", "Jn",_ "Jy", "Au", "Se", "Oc", "Nv", "De", ""} Dim hoyAs String = DateTime.Now.ToString("dd-MMM-yyyy", formatoFecha1) Console.WriteLine("Ammended Date Format: {0}", hoy) End Sub Ejercicio
  • 12. Operativa básica del Framework .NET Interoperabilidad El framework .NET, mediante el CLR, provee un entorno de ejecución controlada de aplicaciones, sea cual sea el lenguaje en el que hayan sido desarrolladas, dentro de los de la plataforma .NET, a lo que se llama entorno manejadoy los programas que en el corren, código manejado. Todos los componentes desarrollados con otras tecnologías, DLL’s, Component Object Model, llamadas a las API’s de Windows, y todo aquél código que no ofrezca un interfaz .NET, entrará en la categoría de código no manejado. El Framework .NET nos ofrece varias formas de acceder a este código no manejado y poder integrarlo en nuestras soluciones, ya sea como llamadas a objetos externos o integrándolos en los ensamblados anteriormente comentados. De tal forma que su uso será absolutamente transparente al usuario, quedando perfectamente integrado y siendo su gestión totalmente controlada, como la del resto de nuestros ensamblados, gozando de todas las ventajas y privilegios que nos ofrece el entorno .NET.
  • 13. Operativa básica del Framework .NET El accceso o llamadas al código no manejado se pueden realizar mediante Platform Invoke o COM Interop. En ambos casos Interop Marshaler será la herramienta encargada del paso de datos entre código manejado y no manejado, mediante el uso de los stacks manejado y no manejado. Los ensamblados para Interop se pueden crear mediante Visual Studio o la herramienta de línea de comandos tlbimp. 57-06 57-06 tlbimp MyTypeLib.tlb /out:InteropAssembly.dll /keyfile:Keys.snk
  • 14. Operativa básica del Framework .NET Hilos o Hebras Toda ejecución que lancemos en el sistema lo hará bajo un hilo (Thread) principal, del que podrán partir otros hilos de ejecución, pudiendo sincronizarse las ejecuciones de los diversos hilos, para coordinar los procesos, estando todas las clases relacionadas en el espacio de nombres System.Threading. Estos hilos nos permiten el lanzamiento de ejecuciones asíncronas que evitan el bloqueo de la interfaz de usuario mientras el sistema está ocupado en otros accesos. Los servicios Windows son procesos, sin interfaz de usuario, que corren en un contexto de seguridad diferente del que tenga el usuario activo, habitualmente lanzados de forma autónoma y automática en el arranque del sistema, tras haber sido debidamente instalados, debiendo usar el espacio de nombres System.ServiceProcess, en su creación. Tanto los hilos como los servicios corren en unas unidades de aislamiento dentro de los procesos de .NET llamados Dominios de Aplicación, los cuales permiten las ejecuciones en paralelo, aisladas unas de otras, permitiendo, incluso, la ejecución concurrente de versiones distintas de los mismos procesos sin interferir unos con otros.
  • 15. Operativa básica del Framework .NET Para dotar de cierto paralelismo a nuestras aplicaciones, no es necesario dividirlas en procesos completamente independientes. Dentro de un proceso, podemos tener varias hebras ejecutándose concurrentemente. Con las hebras se gana algo de eficiencia, al resultar más eficientes tanto los cambios de contexto como la comunicación entre hebras. No obstante, al compartir el mismo espacio de memoria, deberemos ser cuidadosos al acceder a recursos compartidos, para lo que tendremos que utilizar los mecanismos de sincronización que veremos más adelante. En la plataforma .NET, las clases incluidas en el espacio de nombres System.Threading, junto con la palabra reservada lock en C# / SyncLock en VB, nos proporcionan toda la infraestructura necesaria para crear aplicaciones multihebra. De hecho, todas las aplicaciones .NET son en realidad aplicaciones multihebra. El recolector de basura no es más que una hebra que se ejecuta concurrentemente con la hebra principal de la aplicación y va liberando la memoria que ya no se usa.
  • 16. Operativa básica del Framework .NET Threads de Windows: Son unidades de ejecución que permiten enfocar el desarrollo orientado a tareas. Mejoran el rendimiento y la respuesta de las aplicaciones ligadas en operaciones de entrada y salida, aunque reducen el rendimiento de las aplicaciones con alto consumo de CPU. Los componentes COM se integran con estos hilos. Threads de .NET: Son hilos lógicos, normalmente basados en hilos de Windows. Todo el framework .NET ha sido desarrollado para tener en cuenta la programación basada en hilos. Los hilos de .NET integran perfectamente los objetos COM. Disponemos de la clase estática ThreadPool que nos permite utilizar hilos genéricos de trabajo, sin necesidad de definición en nuestro proceso, sólo ejecutando QueueUserWorkitem con un delegado WaitCallback. Sean del tipo que sean, una vez lanzado un hilo, no se puede parar la ejecución del proceso.
  • 17. Operativa básica del Framework .NET [Visual C#] void CrearHilo() { Thread t = new Thread(new ParameterizedThreadStart(ProcesoLanzado)); // El hilo .NET ha sido creado, pero el método no ha sido llamado. t.Start(1000); // Ahora se lanza la ejecución en el nuevo hilo. } void ProcesoLanzado(object param) { int contador = (int)param; for (int x = 0; x < contador ; ++x) { . . . . } } [Visual Basic] Sub CrearHilo() Dim t As New Thread(New ParameterizedThreadStart(AddressOf ProcesoLanzado)) ' El hilo .NET ha sido creado, pero el método no ha sido llamado. t.Start(1000) ' Ahora se lanza la ejecución en el nuevo hilo. End Sub Sub ProcesoLanzado (ByVal param As Object) Dim contador As Integer = CInt(param) For x = 0 To contador . . . . Next End Sub
  • 18. Operativa básica del Framework .NET Métodos de la clase Thread COM Security Localization Thread State Thread Local Storage Domains and Contexts Thread Control CriticalRegions Thread Affinity GetApartmentState SetApartmentState CurrentPrincipal ExecutionContext Priority CurrentCulture ThreadState AllocateDataSlot GetData SetData CurrentContext GetDomain Abort CurrentThread Join Interrupt BeginCriticalRegion EndCriticalRegion EndThreadAffinity BeginThreadAffinity SetProcessorAffinity ThreadState: Unstarted, Running, WaitSleepJoin, Stopped, and Aborted.
  • 19. Operativa básica del Framework .NET Objetos de sincronización de hilos BackgroundWorker Un hilo puede apuntar a uno o más hilos que están esperando. EventWaitHandle Solo un hilo es propietario del objeto protegido por el mutex. Mutex Más de un hilo es propietario del objeto protegido por unsemaphore. Semaphore Provee un bloqueo para proteger código. Usado por lock(C#) / SyncLock(VB). Monitor Solo un hilo puede escribir en los datos protegidos, el resto solo puede leer los datos. ReaderWriterLock
  • 20. Operativa básica del Framework .NET Un servicio Windows es un proceso sin interfaz de usuario que, habitualmente, suele ejecutarse con un entorno de seguridad que no corresponde al del usuario del equipo y que puede ser lanzado automáticamente en el arranque del equipo. También es posible indicar que, en caso de parada inesperada, el servicio re-arranque automáticamente. La instalación y desinstalación de los servicios se realiza mediante el Software Configuration Manager, con lo que quedará inscrito en el registro del sistema. Esta herramienta es también la utilizada para arrancar, pausar o para los servicios, pasando mensajes numéricos de 32 bits al servicio. Un servicio puede depender de otros para su ejecución. Un proceso puede contener más de un servicio. En el caso de requerir parámetros o valores de alguna aplicación, los servicios deberán dar soporte a la comunicación inter-procesos.
  • 21. Operativa básica del Framework .NET Para generar un nuevo servicio deberemos heredar de la clase Sysyem.ServiceBase.ServiceBase y utilizar su método estático Run para registrar la función ServiceMain y los handlers asociados al servicio. La inicialización del servicio deberá situarse en el método OnStart, en lugar de en el constructor. Para poder acceder a los servicios registrados en el sistema deberemos utilizar la clase ServiceController, junto con el SCM, para poder pasarle comandos o mensajes IPC al servicio. Aunque todo esto está bastante simplificado si desarrollamos nuestro servicio desde Visual Studio 2008, ya que disponemos de una plantilla de proyecto específica para generar servicios y sólo tendremos que ir implementando la funcionalidad que requiera nuestro servicio mediante el uso de los controles adecuados. Habremos de generar un Installer, con el atributo RunInstaller a True, y una instancia de ServiceInstaller para cada servicio del proceso, el cual deberá tener una instancia de ServiceProcessInstaller.