Este documento recopila información relacionada con la plataforma .NET; si bien la primera
parte del documento hace un recorrido muy rápido por las generalidades de esta plataforma, en
la segunda se entra en profundidad para examinar la parte específica, que es la relacionada con
los dispositivos móviles.
El documento ha sido conformado con información proveniente de varias fuentes todas ellas
obtenidas en la Internet. Al comienzo de cada fragmento se especifica la dirección de donde fue
obtenido. Los textos que aparecen en color verde, no están en el texto original; han sido
agregados para dar claridad al texto
ARQUITECTURA .NET
PRIMERA PARTE
.NET FRAMEWORK
Arquitectura básica de la plataforma .Net. Descripción del Framework
y sus principales componentes: Lenguajes, biblioteca de clases y CLR.
Por Francisco Recio y David Provencio
http://www.desarrolloweb.com/manuales/48/
La nueva tecnología de Microsoft ofrece soluciones a los problemas de programación actuales,
como son la administración de código o la programación para Internet. Para aprovechar al
máximo las características de .Net es necesario entender la arquitectura básica en la que está
implementada esta tecnología y así beneficiarse de todas las características que ofrece esta
nueva plataforma.
El Framework de .Net es una infraestructura sobre la que se reúne todo un conjunto de
lenguajes y servicios que simplifican enormemente el desarrollo de aplicaciones. Mediante esta
herramienta se ofrece un entorno de ejecución altamente distribuido, que permite crear
aplicaciones robustas y escalables. Los principales componentes de este entorno son:
Lenguajes de compilación
Biblioteca de clases de .Net
CLR (Common Language Runtime)
Actualmente, el Framework de .Net es una plataforma no incluida en los diferentes sistemas
operativos distribuidos por Microsoft, por lo que es necesaria su instalación previa a la ejecución
de programas creados mediante .Net. El Framework se puede descargar gratuitamente desde la
web oficial de Microsoft.
.Net Framework soporta múltiples lenguajes de programación y aunque cada lenguaje tiene sus
características propias, es posible desarrollar cualquier tipo de aplicación con cualquiera de estos
lenguajes. Existen más de 30 lenguajes adaptados a .Net, desde los más conocidos como C# (C
Sharp), Visual Basic o C++ hasta otros lenguajes menos conocidos como Perl o Cobol.
Common Language Runtime (CLR)
El CLR es el verdadero núcleo del Framework de .Net, ya que es el entorno de ejecución en el
que se cargan las aplicaciones desarrolladas en los distintos lenguajes, ampliando el conjunto de
servicios que ofrece el sistema operativo estándar Win32.
La herramienta de desarrollo compila el código fuente de cualquiera de los lenguajes soportados
por .Net en un mismo código, denominado código intermedio (MSIL, Microsoft Intermediate
Lenguaje). Para generar dicho código el compilador se basa en el Common Language
Specification (CLS) que determina las reglas necesarias para crear código MSIL compatible con
el CLR.
De esta forma, indistintamente de la herramienta de desarrollo utilizada y del lenguaje elegido,
el código generado es siempre el mismo, ya que el MSIL es el único lenguaje que entiende
directamente el CLR. Este código es transparente al desarrollo de la aplicación ya que lo genera
automáticamente el compilador.
Sin embargo, el código generado en MSIL no es código máquina y por tanto no puede ejecutarse
directamente. Se necesita un segundo paso en el que una herramienta denominada compilador
JIT (Just-In-Time) genera el código máquina real que se ejecuta en la plataforma que tenga la
computadora.
De esta forma se consigue con .Net cierta independencia de la plataforma, ya que cada
plataforma puede tener su compilador JIT y crear su propio código máquina a partir del código
MSIL.
La compilación JIT la realiza el CLR a medida que se invocan los métodos en el programa y, el
código ejecutable obtenido, se almacena en la memoria caché de la computadora, siendo
recompilado sólo cuando se produce algún cambio en el código fuente.
Biblioteca de clases de .Net
Cuando se está programando una aplicación muchas veces se necesitan realizar acciones como
manipulación de archivos, acceso a datos, conocer el estado del sistema, implementar
seguridad, etc. El Framework organiza toda la funcionalidad del sistema operativo en un espacio
de nombres jerárquico de forma que a la hora de programar resulta bastante sencillo encontrar
lo que se necesita.
Para ello, el Framework posee un sistema de tipos universal, denominado Common Type System
(CTS). Este sistema permite que el programador pueda interactuar los tipos que se incluyen en
el propio Framework (biblioteca de clases de .Net) con los creados por él mismo (clases). De
esta forma se aprovechan las ventajas propias de la programación orientada a objetos, como la
herencia de clases predefinidas para crear nuevas clases, o el polimorfismo de clases para
modificar o ampliar funcionalidades de clases ya existentes.
La biblioteca de clases de .Net Framework incluye, entre otros, tres componentes clave:
ASP.NET para construir aplicaciones y servicios Web.
Windows Forms para desarrollar interfaces de usuario.
ADO.NET para conectar las aplicaciones a bases de datos.
La forma de organizar la biblioteca de clases de .Net dentro del código es a través de los
espacios de nombres (namespaces), donde cada clase está organizada en espacios de nombres
según su funcionalidad. Por ejemplo, para manejar ficheros se utiliza el espacio de nombres
System.IO y si lo que se quiere es obtener información de una fuente de datos se utilizará el
espacio de nombres System.Data.
La principal ventaja de los espacios de nombres de .Net es que de esta forma se tiene toda la
bliblioteca de clases de .Net centralizada bajo el mismo espacio de nombres (System). Además,
desde cualquier lenguaje se usa la misma sintaxis de invocación, ya que a todos los lenguajes se
aplica la misma biblioteca de clases.
Ensamblados
Uno de los mayores problemas de las aplicaciones actuales es que en muchos casos tienen que
tratar con diferentes archivos binarios (DLL´s), elementos de registro, conectividad abierta a
bases de datos (ODBC), etc.
Para solucionarlo el Framework de .Net maneja un nuevo concepto denominado ensamblado. Los
ensamblados son ficheros con forma de EXE o DLL que contienen toda la funcionalidad de la
aplicación de forma encapsulada. Por tanto la solución al problema puede ser tan fácil como
copiar todos los ensamblados en el directorio de la aplicación.
Con los ensamblados ya no es necesario registrar los componentes de la aplicación. Esto se debe
a que los ensamblados almacenan dentro de sí mismos toda la información necesaria en lo que
se denomina el manifiesto del ensamblado. El manifiesto recoge todos los métodos y
propiedades en forma de meta-datos junto con otra información descriptiva, como permisos,
dependencias, etc.
Para gestionar el uso que hacen la aplicaciones de los ensamblados .Net utiliza la llamada caché
global de ensamblados (GAC, Global Assembly Cache). Así, .Net Framework puede albergar en el
GAC los ensamblados que puedan ser usados por varias aplicaciones e incluso distintas versiones
de un mismo ensamblado, algo que no era posible con el anterior modelo COM.
Algunas de las ventajas e inconvenientes de la plataforma .Net.
A continuación se resumen las ventajas más importantes que proporciona .Net Framework:
Código administrado: El CLR realiza un control automático del código para que éste
sea seguro, es decir, controla los recursos del sistema para que la aplicación se ejecute
correctamente.
Interoperabilidad multilenguaje: El código puede ser escrito en cualquier lenguaje
compatible con .Net ya que siempre se compila en código intermedio (MSIL).
Compilación just-in-time: El compilador JIT incluido en el Framework compila el
código intermedio (MSIL) generando el código máquina propio de la plataforma. Se
aumenta así el rendimiento de la aplicación al ser específico para cada plataforma.
Garbage collector: El CLR proporciona un sistema automático de administración de
memoria denominado recolector de basura (garbage collector). El CLR detecta cuándo el
programa deja de utilizar la memoria y la libera automáticamente. De esta forma el
programador no tiene por qué liberar la memoria de forma explícita aunque también sea
posible hacerlo manualmente (mediante el método disponse() liberamos el objeto para
que el recolector de basura lo elimine de memoria).
Seguridad de acceso al código: Se puede especificar que una pieza de código tenga
permisos de lectura de archivos pero no de escritura. Es posible aplicar distintos niveles
de seguridad al código, de forma que se puede ejecutar código procedente del Web sin
tener que preocuparse si esto va a estropear el sistema.
Despliegue: Por medio de los ensamblados resulta mucho más fácil el desarrollo de
aplicaciones distribuidas y el mantenimiento de las mismas. El Framework realiza esta
tarea de forma automática mejorando el rendimiento y asegurando el funcionamiento
correcto de todas las aplicaciones.
¿Todo son ventajas?
Procesos como la recolección de basura de .Net o la administración de código introducen factores
de sobrecarga que repercuten en la demanda de más requisitos del sistema.
El código administrado proporciona una mayor velocidad de desarrollo y mayor seguridad de que
el código sea bueno. En contrapartida el consumo de recursos durante la ejecución es mucho
mayor, aunque con los procesadores actuales esto cada vez es menos inconveniente.
El nivel de administración del código dependerá en gran medida del lenguaje que utilicemos para
programar. Por ejemplo, mientras que Visual Basic .Net es un lenguaje totalmente administrado,
C Sharp permite la administración de código de forma manual, siendo por defecto también un
lenguaje administrado. Mientras que C++ es un lenguaje no administrado en el que se tiene un
control mucho mayor del uso de la memoria que hace la aplicación
SEGUNDA PARTE
.NET COMPACT FRAMEWORK
http://es.wikipedia.org/wiki/.NET_Compact_Framework
Microsoft. NET Compact Framework (.NET CF) es una versión del .NET Framework que está
diseñado para funcionar en Windows CE basado en móviles/dispositivos embebidos tales como
PDAs, teléfonos móviles, los controladores de fábrica, set-top boxes, etc. .NET Compact
Framework utiliza algunas de las mismas bibliotecas de clases que utiliza.NET Framework como
también algunas bibliotecas diseñadas específicamente para dispositivos móviles, como Windows
CE InputPanel. Sin embargo, las bibliotecas no son copias exactas de .NET Framework. Las de
.NET Compact Framework escalan hacia abajo para ocupar menos espacio.
Es posible desarrollar aplicaciones que utilizan .NET Compact Framework en Visual Studio.NET
2003, en Visual Studio 2005, en Visual Studio 2008, en C# o Visual Basic.NET y en Lexico. Una
aplicación desarrollada con Basic4ppc también eventualmente se compila para el .NET CF. Las
aplicaciones resultantes están diseñadas para ejecutarse en un compilador especial JIT, en
dispositivos móviles de alto rendimiento.
.NET Compact Framework se puede ejecutar en equipos de escritorio con el pleno .NET
Framework, pero su interfaz de usuario no se puede actualizar para parecerse a la de una
aplicación desarrollada para PC de escritorio. Microsoft .NET Compact Framework 3.5
Redistributable contiene Common Language Runtime y las bibliotecas de clases creadas para
.NET Compact Framework. Además de la versión 3.5 de apoyo, también admite las aplicaciones
creadas para la versión 1.0 y 2.0. .NET Compact Framework 3.5 ofrece nuevas características
como Windows Communication Foundation (consulte la página http://msdn.microsoft.com/es-
es/library/ms731082(v=vs.90).aspx para mayor información), LINQ (consulte la página
http://msdn.microsoft.com/es-es/library/bb397897.aspx para mayor información), SoundPlayer
(consulte la página http://msdn.microsoft.com/es-es/library/ms171679(v=vs.80).aspx para
mayor información), nuevas herramientas de soporte en tiempo de ejecución, y muchas otras
características.
El desarrollo de interfaces de usuario (UI) se basa en Windows Forms que también está
disponible en la versión para escritorio del .NET Framework. Las UI se pueden crear fácilmente
con Visual Studio colocando los controles sobre el formulario. Características como enlace a
datos, también están disponibles en .NET CF. Una gran desventaja del desarrollo de UI es que
las aplicaciones modernas con soporte para ‘touch screen’ no son fáciles de implementar debido
principalmente al concepto de orientación a aplicaciones de escritorio, aunque ya están
disponibles algunas librerías para personalizar controles.
Una versión del. NET Compact Framework también está disponible para la consola Xbox 360. Si
bien las características del tiempo de ejecución igual a la normal .NET CF, sólo un subconjunto de
la biblioteca de clases está disponible. Esta versión es utilizada por XNA Framework para ejecutar
los juegos gestionados en la consola. Hay otras limitaciones tales como que el número de hilos
está limitado a 256. A diferencia de otras versiones de .NET CF, la versión de Xbox 360 permite
establecer la afinidad del procesador a los hilos creados. Los hilos están programados entre cuatro
procesos simultáneos en ejecución en el procesador de varios núcleos del sistema.
http://msdn.microsoft.com/es-es/library/f44bbwa1(v=VS.90).aspx para (Visual Studio 2008)
Arquitectura de .NET Compact Framework
.NET Compact Framework hereda la arquitectura .NET Framework completa de Common Language
Runtime para ejecutar código administrado. Proporciona interoperabilidad con el sistema operativo
Windows CE de un dispositivo para tener acceso a funciones nativas e integrar los componentes nativos
favoritos en una aplicación.
Puede ejecutar aplicaciones nativas y administradas de manera simultánea. El host del dominio de
aplicación, que también es una aplicación nativa, inicia una instancia del Common Language Runtime
para ejecutar el código administrado.
Arquitectura
En la ilustración siguiente se resume la arquitectura de la plataforma .NET Compact Framework.
Windows CE
.NET Compact Framework utiliza el sistema operativo Windows CE para la funcionalidad central y para
diversas características específicas de dispositivos. Varios tipos y ensamblados, como los de los
formularios Windows Forms, gráficos, dibujos y servicios Web, se han recompilado para que se ejecuten
eficazmente en los dispositivos, en lugar de copiarse de .NET Framework completo.
.NET Compact Framework ofrece la siguiente interoperabilidad con Windows CE:
Compatibilidad con seguridad nativa.
Integración completa con programas de instalación nativos.
Interoperabilidad con código nativo (lenguaje de máquina) mediante la interoperabilidad COM
(en la dirección http://msdn.microsoft.com/es-es/library/6bw51z5z(v=vs.80).aspx se explica
ampliamente este concepto) y la invocación de plataformas.
Common Language Runtime
También el Common Language Runtime (CLR) de .NET Compact Framework se ha vuelto a generar para
permitir que los recursos restringidos se ejecuten en memoria limitada y lograr un uso eficaz de la
energía.
Entre Windows CE y el Common Language Runtime existe una capa de adaptación de plataforma, que no
aparece en la ilustración, para asignar las interfaces de servicios y dispositivos necesarias para CLR y
Framework a los servicios e interfaces de Windows CE.
Framework
.NET Compact Framework es un subconjunto de .NET Framework pero también contiene características
diseñadas en exclusiva. Ofrece prestaciones y facilidad de uso para acercar a los desarrolladores de
aplicaciones nativas para dispositivos a .NET Framework, y para acercar a quienes desarrollan aplicaciones
de escritorio a los dispositivos.
Visual Studio
Desarrollar aplicaciones para dispositivos inteligentes con Microsoft Visual Studio 2005 es tan sencillo
como desarrollar aplicaciones para escritorio. El desarrollo de dispositivos inteligentes en Visual Studio
incluye un conjunto de emuladores y tipos de proyecto que cubren el desarrollo para Pocket PC,
Smartphone y Windows CE incrustado.
.NET Compact Framework admite alrededor del 28 por ciento de los espacios de nombres y clases del
entorno .NET Framework completo y representa aproximadamente el 8 por ciento de su tamaño. Para
mantener reducido el tamaño, sólo se admiten los miembros y clases más importantes.
Para obtener información sobre cómo utilizar la biblioteca de clases con el fin de determinar la
compatibilidad y las versiones de .NET Compact Framework, vea Cómo: Utilizar la biblioteca de clases de
.NET Compact Framework.
.NET Compact Framework no admite las siguientes tecnologías:
Funcionalidad de servidor
ASP.NET
Entorno remoto
Emisión de la reflexión
Desarrollo en C++
Desarrollo en J# y JSL
.NET Compact Framework no admite la seguridad de acceso a código en las versiones 1.0 y 2.0, pero se
planea incluirla en futuras versiones.
Los siguientes espacios de nombres y clases están disponibles sólo en .NET Compact Framework.
Espacio de nombres o tipo Para obtener más información
Microsoft.WindowsMobile.DirectX Programación de Direct3D Mobile
Microsoft.WindowsMobile.DirectX.Direct3D Programación de Direct3D Mobile
Microsoft.WindowsCE.Forms Cómo: Utilizar la clase MessageWindow
Cómo: Utilizar un control DocumentList
Cómo: Utilizar el componente HardwareButton
Cómo: Utilizar el componente InputPanel
Cómo: Establecer los modos de entrada de Pocket PC
Cómo: Enviar una notificación
Cómo: Establecer los modos de entrada de Smartphone
IrDAEndPoint
IrDACharacterSet
IrDAClient
IrDADeviceInfo
IrDAHints
IrDAListener
Conexiones de infrarrojos
Cómo: Realizar una transferencia de archivos por infrarrojos
System.Data.SqlServerCe Lo nuevo en SQL Server Compact Edition
Visual Studio y .NET Compact Framework
Microsoft .NET Compact Framework está plenamente integrado en Visual Studio, siempre que la opción
de instalación Programación de Smart Device esté seleccionada para el desarrollo en Visual Basic y Visual
C#. Esta opción está seleccionada de forma predeterminada. En la actualidad, .NET Compact Framework
no admite el desarrollo en C++. Vea Desarrollo de dispositivos inteligentes en los temas de Ayuda para
obtener más información sobre cómo desarrollar aplicaciones de dispositivos inteligentes en Visual
Studio.
Desarrollo e implementación de Visual Studio
Visual Studio proporciona el tipo de proyecto de Smart Device que permite desarrollar aplicaciones para
Pocket PC, Smartphone y otras plataformas basadas en Windows Embedded CE. Si no dispone de un
dispositivo inteligente, puede crear y probar las aplicaciones para este tipo de dispositivos mediante la
tecnología de emulación sin dejar el entorno de desarrollo integrado (IDE) de Visual Studio.
Para desarrollar aplicaciones en Visual Studio destinadas a dispositivos basados en Windows Mobile
instalando sus SDK. Instálelos en un equipo con Visual Studio. Cuando cree un nuevo proyecto, podrá
elegir el tipo de proyecto que corresponde a su versión del SDK de Windows Mobile.
Nota:
En algunas plataformas, como Windows Mobile 5.0 para Pocket PC, ya está presente la compatibilidad de
la plataforma en los proyectos del dispositivo y no es necesario instalar el SDK.
Dispositivos y plataformas admitidos por .NET Compact Framework
.NET Compact Framework está disponible como componente del sistema operativo en todos los
dispositivos inteligentes de Microsoft, incluidos los dispositivos Pocket PC, Pocket PC Phone Edition y
Smartphone, así como otros dispositivos que se ejecutan bajo Windows CE.
Lista de compatibilidades
La tabla siguiente muestra las plataformas y los dispositivos admitidos por .NET Compact Framework.
Versión de .NET
Compact
Framework
Dispositivo Plataforma
1.0 Pocket PC Pocket PC 2000
Pocket PC 2002
Windows Mobile 2003 para Pocket
PC
Windows Mobile 2003 para Pocket
PC SE
Windows Mobile 5,0 para Pocket
PC
1.0 Smartphone Windows Mobile 2003 para
Smartphone
Windows Mobile 5,0 para
Smartphone
1.0 Otros dispositivos para Windows
Embedded CE
Windows CE 4,1
Windows CE 4,2
Windows CE 5.0
2.0 Pocket PC Windows Mobile 2003 para Pocket
PC
Windows Mobile 2003 para Pocket
PC SE
Windows Mobile 5,0 para Pocket
PC
Windows Mobile 6 Professional
2.0 Smartphone Software Windows Mobile 5.0 para
Smartphone
Windows Mobile 6 Standard
2.0 Otros dispositivos para Windows
Embedded CE
Windows CE 4.2
Windows CE 5.0
Windows Embedded CE 6.0
3.5 Pocket PC Windows Mobile 2003 para Pocket
PC
Windows Mobile 2003 para Pocket
PC SE
Software Windows Mobile 5.0 para
Pocket PC
Windows Mobile 6 Professional
3.5 Smartphone Software Windows Mobile 5.0 para
Smartphone
Windows Mobile 6 Standard
3.5 Otros dispositivos para Windows
Embedded CE
Windows Embedded CE 6.0
Nota:
Para Smartphone, .NET Compact Framework versión 2.0 requiere que se ejecute Windows
Mobile versión 5.0 en el dispositivo. Para obtener información acerca de cómo se instalan
los SDK de Windows Mobile 5.0 para Pocket PC y Smartphone en Visual Studio, vea Visual
Studio y .NET Compact Framework.
Si .NET Compact Framework 2.0 aún no está presente en ROM, se puede instalar en RAM o en el almacén
persistente de los dispositivos Pocket PC 2003, Windows CE 5.0 y Windows Mobile 5.0 para Pocket PC y
Smartphones. .NET Compact Framework 3.5 no está actualmente disponible en ROM, pero se puede
instalar en RAM en los dispositivos compatibles mostrados en la tabla anterior.
Dominios de aplicación de .NET Compact Framework
Todas las aplicaciones de .NET Compact Framework se ejecutan dentro de una construcción en tiempo
de ejecución llamada dominio de aplicación, que es similar a un proceso del sistema operativo. .NET
Compact Framework asegura que todos los recursos administrados que utiliza una aplicación durante su
ejecución se liberan o se devuelven al sistema operativo del host cuando la aplicación finaliza.
Los dominios de aplicación ofrecen muchas de las ventajas de los procesos, como aislamiento de errores,
mayor solidez y seguridad, sin necesidad de asistencia del sistema operativo del host subyacente. El host
de un dominio de aplicación inicia una instancia del Common Language Runtime y, en sí mismo, es un
código nativo del sistema operativo. El Common Language Runtime puede vincularse de forma estática o
dinámica al host del dominio de aplicación.
.NET Compact Framework no impone restricciones al comportamiento del host del dominio de
aplicación. Dicho host puede ser una extensión sencilla de un shell interactivo ya existente que se utilice
para iniciar y detener la ejecución de programas. En los sistemas de aplicaciones dinámicas como
Windows, el host del dominio de aplicación puede ser una extensión del cargador de la aplicación, para
que las aplicaciones de .NET Compact Framework puedan iniciarse y detenerse mediante el mismo
mecanismo que una aplicación nativa.
Tamaño de almacenamiento de .NET Compact Framework
Para la versión 2.0 de .NET Compact Framework, el tamaño de almacenamiento es el siguiente:
5,5 MB (ROM), sin comprimir, en Windows Mobile 5.0. (La compresión del almacenamiento
persistente ha dejado de realizarse a partir de Windows Mobile 5.0.)
Para la versión 1.0 de .NET Compact Framework, el tamaño de almacenamiento es el siguiente:
1,55 MB (ROM), comprimidos, en Pocket PC 2000/2002
1,35MB (ROM), comprimidos, en Windows Mobile 2003 para Pocket PC y Windows Mobile 2003
para Smartphone.
Requisitos de ejecución de RAM
,5 MB+ (depende de la aplicación)
Tamaños de la aplicación típicos:
5 - 100 KB
Instalación de archivos CAB
Durante la instalación de .NET Compact Framework 2.0 SP 1, se pide que se realice la instalación en el
dispositivo o en una tarjeta de almacenamiento, si está presente. Si se opta por la instalación en la tarjeta
de almacenamiento, la caché de ensamblados global se coloca en una tarjeta de almacenamiento y los
archivos de Common Language Runtime (CLR) se colocan en el directorio \Windows. La caché de
ensamblados global requiere aproximadamente 4,5 MB de espacio y CLR requiere 1,0 MB.
El rendimiento de .NET Compact Framework varía para la instalación de los archivos CAB en función de la
implementación de memoria en el hardware y software. Para algunos dispositivos, se obtiene un mejor
rendimiento al instalar la caché de ensamblados global en una tarjeta de almacenamiento.
.NET MICRO FRAMEWORK
El.NET Micro Framework es .NET para dispositivos pequeños y de recursos limitados. Ofrece un entorno
de ejecución y desarrollos innovadores que trae la productividad de las herramientas informáticas
modernas para esta clase de dispositivos completos.
Para los actuales desarrolladores .NET, esto significa que ahora pueden crear aplicaciones que se ejecutan
en una gama de dispositivos específicos como control remoto para PC y servidores y aplicaciones en la
nube, todos con el mismo modelo de programación y herramientas.
Para los desarrolladores de Embedded actuales, esto significa que ahora pueden aprovechar la
productividad que se han logrado en el escritorio y reducir su tiempo de salida al mercado.
El.NET Micro Framework es una experiencia totalmente integrada de Visual Studio trae un sistema de
desarrollo productivo y confiable para el mundo incrustado.
Con.NET Framework Micro, usted puede:
Desarrollar fácilmente aplicaciones complejas, poderosas e interactivas
Conectar los dispositivos de forma segura sobre protocolos con cables o inalámbricos
Desarrollar soluciones confiables y más rápidas a menor costo
Desarrollar soluciones completas mediante .NET, incluyendo la nube, dispositivos y servidores
Para obtener una información más completa vaya a la dirección http://msdn.microsoft.com/en-us/netframework/bb278106
A continuación se listan algunos consejos para tener en cuenta al momento de hacer desarrollo en la
plataforma .NET para móviles
Cómo Mejorar el rendimiento
Las prácticas de programación siguientes pueden ahorrar memoria y aumentar el rendimiento de las
aplicaciones para dispositivos.
Para ahorrar memoria con formularios Windows Forms y gráficos
Utilice los métodos BeginUpdate y EndUpdate en los controles que los proporcionen, como
ComboBox, ListBox, ListView, ToolStripComboBox y TreeView.
Utilice los métodos SuspendLayout y ResumeLayout al cambiar la posición de los controles.
Cargue formularios adicionales en segundo plano y rellene los controles con datos antes de
utilizar el método Show.
Limite el código de control de eventos para realizar sólo las tareas básicas. De esta forma pueden
proseguir los procesos pendientes.
Utilice un mapa de bits fuera de la pantalla. Para obtener un ejemplo, vea Cómo: Dibujar
imágenes fuera de la pantalla.
Reemplace los métodos OnKeyDown, OnKeyPress y OnKeyUp en los controles en vez de agregar
los controladores de eventos clave.
Para ahorrar memoria con datos y cadenas
Utilice las variables de tipo entero (Int32 o Int64) en bucles for en vez de las variables de objeto.
Evite el uso del método ToString de una enumeración por el impacto que tiene en el rendimiento
al buscar por tablas de metadatos.
Evite los errores OutOfMemoryException. El Common Language Runtime puede producir esta
excepción si no hay suficiente memoria que pueda asignarse para fines internos o para nuevas
instancias de objetos. Para evitar esta excepción, evite programar métodos extensos que
consuman 64 o más kilobytes de memoria.
Quite System.SR.dll, que contiene las cadenas de mensajes de error para los cuadros de diálogo
de excepciones. Puede implementar la aplicación sin este archivo para ahorrar memoria. .NET
Compact Framework carga dinámicamente las cadenas de error contenidas en System.SR.dll, si
este archivo está presente.
Si el archivo .dll no está presente en el dispositivo, todas las excepciones contienen el mensaje
"No se puede cargar el ensamblado de recurso". No obstante, durante el desarrollo siempre es útil
agregar una referencia a System.SR.dll en el proyecto de Microsoft Visual Studio 2005, para poder
ver mensajes de excepción con significado.
Las cadenas son inmutables; por tanto, se crea un nuevo objeto String cada vez que modifique la
cadena. Considere usar StringBuilder al construir una cadena que se modificará a menudo.
Utilice el método ParseExact para DateTime si conoce el formato exacto utilizado para la
serialización DateTime. De lo contrario, el analizador DateTime intentará aplicar secuencialmente
varios formatos específicos de la referencia cultural.
Limite el número de objetos SqlCeCommand abiertos y elimínelos al finalizar.
Para ahorrar memoria al interoperar con código nativo
En operaciones de invocación de plataforma, utilice tipos que puedan representarse en bits o
bytes que tienen una representación común en memorias tanto administradas como no
administradas, por ejemplo Int32 o IntPtr. Los tipos de valores representables como bits o bytes
mayores que 32 bits se pasan más rápidamente por referencia que por valor. Para obtener más
información sobre tipos representables como bits o bytes, vea Tipos que pueden representarse
como bits o bytes en .NET Compact Framework.
Utilice los atributos InAttribute y OutAttribute para los argumentos de la firma de función con el
fin de reducir el cálculo innecesario de referencias.
Utilice los métodos de la clase Marshal para realizar conversiones manualmente entre IntPtr y
objetos administrados, como PtrToStructure, PtrToStringBSTR, GetObjectForNativeVariant y
GetObjectForIUnknown.
Utilice los métodos Prelink y PrelinkAll para provocar la compilación JIT del código auxiliar que
admita llamadas nativas a administradas.
Si espera que el objeto COM nativo devuelva S_FALSE como caso habitual u otros valores que no
sean S_OK HRESULT, establezca el campo PreserveSig en true y haga que la firma administrada
coincida con la nativa. De esta forma, se evita la sobrecarga de un bloque try/catch necesario
cuando el motor en tiempo de ejecución traduce los valores HRESULT a excepciones en las
llamadas COM.
Trabaje todo lo que pueda en una llamada de invocación de plataforma en vez de usar varias
llamadas.
Para ahorrar memoria en las colecciones
Utilice los indizadores si la colección está basada en una matriz.
Siempre que sea posible, especifique el tamaño de la colección, puesto que si se cambia el
tamaño dinámicamente, se puede incrementar muchísimo el espacio libre de
almacenamiento.
Utilice colecciones genéricas para evitar sobrecargas de conversiones boxing y unboxing de
los tipos de valores. Si define su propia colección optimizada, obtendrá el máximo
rendimiento.
Para ahorrar memoria en XML
Utilice XmlTextReader y XmlTextWriter en lugar de XmlDocument, que utiliza más memoria.
Especifique la configuración de XmlReaderSettings y XmlWriterSettings para mejorar el
rendimiento. Los valores de las propiedades IgnoreWhitespace y IgnoreComments, si se
pueden aplicar, pueden mejorar significativamente el rendimiento.
Utilice las codificaciones de caracteres de UTF-8, ASCII y UTF-16, que son más rápidas que las
de las páginas de códigos ANSI y Windows.
Evite utilizar un esquema para analizar, ya que se requiere trabajo de validación adicional.
Asigne las columnas como atributos y utilice un DataSet con tipo al rellenar código fuente
XML desde un formulario DataSet.
Evite lo siguiente al rellenar el formulario DataSet:
Interferencia de esquema.
Tablas anidadas.
Varias columnas DateTime. Para obtener un rendimiento mejor, utilice el valor de la
propiedad Ticks en su lugar.
Las instrucciones siguientes mejoran el rendimiento al utilizar deserialización XML:
Mantenga los nombres de los elementos y atributos lo más cortos posible ya que se
debe validar cada carácter.
XML basado en datos de atributo es más rápido que XML basado en datos de
elemento.
Utilice el método System.Xml.XmlNodeReader.Skip cuando se pueda aplicar.
Considere la serialización binaria cuando el rendimiento sea algo básico.
Utilice una instancia de XmlSerializer por tipo de serialización XML para reducir el período de
tiempo transcurrido buscando metadatos.
Puesto que serializar grandes cantidades de XML puede consumir toda la memoria,
considere la creación de un mecanismo de serialización binaria personalizado en su lugar,
mediante BinaryReader y BinaryWriter.
Para ahorrar memoria al utilizar un servicio Web
Utilice un DiffGram al leer y escribir un DataSet. Para obtener más información, vea
DiffGrams.
Guarde un DataSet remoto y su esquema en el dispositivo como XML.
Efectúe una llamada simple al método del servicio Web mientras aparece la pantalla de inicio
porque la primera llamada es más lenta que las posteriores.
Tenga cuidado al controlar los errores de red y datos.
En algunos casos, se puede obtener un rendimiento mejor si se serializa manualmente
DataSet como cadena XML antes de realizar una llamada a un servicio Web.
Para ahorrar memoria en programación avanzada
Procese las operaciones grandes de forma asincrónica.
Evite llamadas virtuales. Las llamadas virtuales del motor en tiempo de ejecución de .NET
Compact Framework son aproximadamente un 30 por ciento más lentas que las llamadas
estáticas o a instancias. .NET Compact Framework no utiliza vtables a causa de los recursos
limitados; por tanto, se debe llamar a los métodos recorriendo la jerarquía de clases e
interfaces, pero esta operación es cara. .NET Compact Framework mantiene una caché de
llamadas virtuales resueltas; por consiguiente, no se necesita reinterpretación en la mayoría
de las llamadas de casos.
Utilice campos en lugar de propiedades siempre que sea posible.
Reemplace los métodos GetHashCode y Equals al definir un tipo de valor. Si no se
reemplazan, el motor en tiempo de ejecución utiliza las versiones generalizadas de estos
métodos en la clase base ValueType.
Tenga cuidado con la reflexión. El uso de la reflexión con clases sin instancias, con fines de
investigación, puede repercutir en el rendimiento de los objetos con instancias de la
aplicación.
Asegúrese de que los recursos administrados tienen los nombres de tipo completos y son
correctos en el archivo RESX. Deben tener la versión y los campos PublicKeyToken correctos.
El esfuerzo por encontrar al suplente más adecuado para un tipo especificado
incorrectamente se refleja en el rendimiento.
Tenga en cuenta que, en algunos casos, si se leen los datos de la aplicación del archivo
directamente, puede ser suficiente y más eficaz que utilizar ResourceManager.
ResourceManager puede comprobar varias ubicaciones del sistema de archivos para
encontrar un ensamblado satélite que coincida mejor antes de ubicar el binario de recursos.
Utilice las herramientas adecuadas para el trabajo.
Vea también otras sugerencias siguiendo el vínculo Temas Cómo... de .NET Compact Framework
El vínculo a continuación le permitirá obtener temas acerca de códigos de ejemplo y
procedimientos para desarrollar aplicaciones en esta plataforma.
http://www.desarrolloweb.com/articulos/1681.php
Uno de los componentes de la plataforma .NET CF que utilizaremos en nuestro
proyecto de formación son los Smart Clients (Clientes Inteligentes): Son dispositivos muy
variados. Lo que los hace 'Smart' o inteligentes es su capacidad para hacer uso de servicios
Web.
Sus características son:
Permiten acceder a la información en el formato apropiado, en cualquier momento y
lugar.
Hacen uso de Servicios Web.
Optimizan de distintas maneras la forma en que la información es presentada y
organizada. Por ejemplo: Pueden convertir texto en sonido en un celular o reconocer la
escritura en un TabletPC.
Proveen de una interface sencilla y natural para que el usuario acceda a la información.
Pueden utilizar la identidad del usuario, su perfil y datos para adaptar la información que
es presentada.
Pueden reconocer la presencia de otros dispositivos e intercambiar información.
Pueden adaptarse a las características de la red donde están. Por ejemplo la velocidad
de transmisión.
Tienen capacidad de procesamiento propio, y distribuyen el procesamiento en la red
haciendo uso de los servicios Web.
Ejemplo de éstos son:
PocketPC (PC de bolsillo)
SmartPhone (Teléfono Inteligente)
HandHelds
TabletPC
XBox (Consola de juegos de Microsoft)
En un computador móvil (PocketPC, PDA, Smartphone) ocurre:
1. Sobre el hardware está el software y en éste lo central es el Sistema Operativo del cual solo un
caso es Windows CE.
2. Sobre Windows está la plataforma .NET compacta (CF o Compact Framework .NET) o Windows
Mobile.
3. Sobre el Sistema operativo o sobre la plataforma están los programas más generales.
Top Related