Beruflich Dokumente
Kultur Dokumente
NET Compact
Framework
Larry Roof
larryroof.com
Marzo de 2002
Introducción
Características a la carta
Adiciones a IDE
Lenguajes admitidos
Documentación en pantalla
Creación de la interfaz
Adición de código
Comprobación de la aplicación
Comprobación en el emulador
Comprobación en un dispositivo
Depuración de la aplicación
Implementación de la aplicación
Requisitos
Resumen
Información adicional
Introducción
Microsoft ha desarrollado .NET Compact Framework con un claro objetivo: la creación de aplicaciones.
Nos referimos a aplicaciones capaces de mostrar, recopilar, procesar y enviar datos; el tipo de aplicación
que justifica que los usuarios decidan llevar encima un dispositivo. Aunque normalmente estas
aplicaciones tienen una interfaz, no siempre es necesario. Los datos con los que estas aplicaciones
trabajan pueden ser locales, remotos o tal vez una combinación de ambos.
Necesitará Visual Studio .NET 2003 para crear aplicaciones destinadas a .NET Compact Framework.
Puede crear aplicaciones utilizando Visual C# .NET, Visual Basic .NET o ambos.
.NET Compact Framework tiene dos componentes principales: el tiempo de ejecución en lenguaje común
y la biblioteca de clases de .NET Compact Framework.
La biblioteca de clases de .NET Compact Framework es una colección de clases reutilizables que se
pueden utilizar para desarrollar aplicaciones de manera fácil y rápida. Este marco se ha diseñado
pensando en la portabilidad, tanto para plataformas Microsoft como de otros fabricantes. ¿Qué significa
esto? Sencillamente que las técnicas de codificación y las aplicaciones creadas hoy en un Pocket PC se
pueden ejecutar en otras plataformas, como un teléfono móvil o un PDA de otro fabricante, si se ha
creado una versión de .NET Compact Framework para dicha plataforma.
El tiempo de ejecución se ha diseñado para mejorar el rendimiento. Utiliza compilación directa (JIT), que
permite que el código administrado se ejecute en el lenguaje del equipo nativo de la plataforma en el
que se está ejecutando la aplicación. De esta manera es posible crear aplicaciones destinadas a una gran
variedad de plataformas, sin que haya que preocuparse de volver a compilar o generar ejecutables
destinados a cada plataforma concreta.
Aunque la aplicación móvil esté escrita en Visual Basic .NET o C# .NET, al tratarse de código
administrado, seguirá siendo posible incorporar funciones y subrutinas almacenadas externamente en
bibliotecas de vínculos dinámicos (DLL), incluidas las API de Windows CE. .NET Compact Framework
proporciona los tipos de datos y la compatibilidad con las estructuras necesaria para incorporar con
facilidad funciones de las API de Windows CE en su aplicación.
La biblioteca de clases de .NET Compact Framework es una colección de clases reutilizables que se
integra estrechamente con el tiempo de ejecución en lenguaje común. Las aplicaciones aprovechan estas
bibliotecas para obtener ciertas funcionalidades.
Como es de esperar en una biblioteca de clases orientada a objetos, los tipos de .NET Compact
Framework permiten llevar a cabo una serie de tareas de programación habituales, entre las que se
incluye el diseño de interfaces, el uso de XML, el acceso a bases de datos, la administración de
subprocesos y la E/S de archivos.
A continuación, se incluye una lista de funcionalidades habituales disponibles en .NET Compact
Framework.
La implementación de Windows Forms con .NET Compact Framework incluye la posibilidad de utilizar
formularios, la mayoría de los controles de .NET Framework, el alojamiento de controles de otros
fabricantes, mapas de bits y menús. La tabla 1 indica los controles que se incluyen con .NET Compact
Framework.
Control Descripción
ListView proporciona cuatro vistas de los datos: iconos grandes, iconos pequeños, lista y
detalles
Al ser .NET Compact Framework un subconjunto de .NET Framework, los controles incluidos ofrecen un
subconjunto de las funcionalidades de sus equivalentes para equipos de escritorio. Debido a
consideraciones de tamaño y de rendimiento, los controles de .NET Compact Framework no incluyen
algunas propiedades, métodos y eventos de los controles. Con un poco de codificación, usted mismo
puede implementar estas funcionalidades en caso de que sean necesarias, ya que .NET Compact
Framework le permite crear sus propios controles mediante herencia de la clase base del control. A
partir de esta base, puede agregar sus propios métodos, propiedades y eventos para crear exactamente
el control que necesita.
.NET Compact Framework incluye un conjunto de clases que permiten incorporar con facilidad datos (ya
sea de un origen de datos relacional o no), entre los que se incluye el contenido XML, en sus
aplicaciones móviles. Estas clases se definen para los espacios de nombres System.Data y
System.Xml. La implementación de clases de XML y de datos en .NET Compact Framework es un
subconjunto de la que se encuentra en .NET Framework.
Servicios Web
.NET Framework presta una atención especial a los servicios Web. En el espacio de nombres
System.Web de .NET Compact Framework, hay una versión a escala reducida de las posibilidades y
funcionalidades que ofrece el correspondiente espacio de nombres de .NET Framework. La característica
más destacable es que se pueden crear clientes de servicios Web pero no se pueden alojar servicios Web
en .NET Compact Framework.
Estos clientes de servicios Web XML pueden ser sincrónicos o asincrónicos. Se pueden crear fácilmente
clientes de servicios Web XML destinados a .NET Compact Framework. El IDE de Visual Studio .NET hace
automáticamente la mayor parte del trabajo.
.NET Compact Framework proporciona compatibilidad con los elementos básicos de dibujo de GDI
incluidos mapas de bits, pinceles, fuentes, iconos y plumas mediante el espacio de nombres
System.Drawing.
Clases base
.NET Compact Framework proporciona un conjunto robusto de clases base que expone una amplia
variedad de funcionalidades que los desarrolladores pueden aprovechar. Esta infraestructura subyacente
le permite escribir cómodas aplicaciones .NET que incluyen la posibilidad de crear aplicaciones con varios
subprocesos (System.Threading), aprovechar recursos de red (System.Net) y trabajar con archivos
(System.IO).
Algunos dispositivos con Windows CE, por ejemplo, Pocket PC y Pocket PC 2002, incluyen la posibilidad
de comunicarse mediante infrarrojos (IR). Para poder aprovechar esta posibilidad, .NET Compact
Framework incluye clases que le permiten aprovechar la comunicación mediante infrarrojos desde la
aplicación. Estas clases son parte del espacio de nombres System.Net.IrDA. Puede utilizar infrarrojos
para comunicarse con equipos Pocket PC, impresoras y otros dispositivos compatibles con infrarrojos.
.NET Compact Framework no incorpora compatibilidad nativa con Bluetooth. Puede obtener acceso a la
mayoría de implementaciones de Bluetooth en equipos Pocket PC de otros fabricantes mediante las
comunicaciones del puerto serie o mediante una API del proveedor.
Para los desarrolladores de Visual Basic o eMbedded Visual Basic que están comenzando a trabajar con
.NET Compact Framework, esto significa que la mayoría de las funciones del lenguaje Visual Basic con
las que está acostumbrado a trabajar también estarán disponibles en Visual Basic .NET.
Características a la carta
Para ahorrar recursos en el dispositivo de destino, Microsoft ha dividido .NET Compact Framework en
componentes lógicos. Al suministrar los componentes como DLL independientes (o ensamblados, según
se les denomina en .NET Compact Framework) Microsoft le ofrece la oportunidad de decidir y seleccionar
las características que necesita y sólo aquéllas para las que el dispositivo de destino tiene espacio.
Un ejemplo de esto es el ensamblado System.SR, que contiene las cadenas de los mensajes de error. Si
incluye este ensamblado en su aplicación podrá ver descripciones detalladas de todos los errores
detectados, lo cual es ciertamente útil durante una sesión de depuración, pero normalmente no es
necesario una vez que se ha lanzado a producción. Si no se incluye este ensamblado, no se verán
afectados ni el rendimiento ni la funcionalidad de la aplicación, pero no podrá ver mensajes de error
detallados.
Otro ejemplo del enfoque a la carta de .NET Compact Framework son los componentes SQL Server CE,
que se entregan en un conjunto de DLL cuyo tamaño total apenas supera 1 MB. A menos que agregue
explícitamente una referencia a los ensamblados System.Data.SqlServerCe, estas DLL no se incluirán en
la aplicación.
Ha sido necesario realizar importantes recortes en .NET Framework para adaptarlo a las limitaciones de
funcionamiento de Windows CE. En esta sección se abordarán las características más destacables de
.NET Framework que no se han incluido en .NET Compact Framework.
Sobrecargas de métodos
La sobrecarga de un método ofrece manera alternativas de llamar a dicho método. También aumenta el
tamaño de Framework. Por este motivo, .NET Compact Framework ha eliminado las sobrecargas de
prácticamente todos los métodos.
Hay dos consecuencias básicas de esto. Primero, es bastante probable que una determinada sobrecarga
de un método que solía utilizar con una aplicación de escritorio no esté disponible a la hora de
desarrollar aplicaciones basadas en .NET Compact Framework. Segundo, cuando esté leyendo la
documentación, preste mucha atención a si se admite un determinado método en .NET Compact
Framework.
Controles no incluidos
Hay una serie de controles de .NET Framework que no se han incluido en .NET Compact Framework. La
ausencia de la mayoría de estos controles carece de importancia para los desarrolladores de aplicaciones
móviles. Teniendo en cuenta que las aplicaciones móviles apenas imprimen, no es ningún problema
eliminar la familia completa de controles relacionados con la impresión. Por tanto, se han eliminado los
controles CrystalReportViewer, PageSetupDialog, PrintDialog, PrintDocument, PrintPreviewControl y
PrintPreviewDialog. Puede sustituir la mayoría de los cuadros de diálogo que faltan por sus propios
cuadros de diálogo o bien utilizar directamente los cuadros de diálogo del sistema mediante la API de
Windows CE.
También están empezando a aparecer controles de otros fabricantes que sustituyen a los controles que
no se han incluido en .NET Compact Framework. Si desea ver una lista de controles de .NET Compact
Framework de otros fabricantes, consulte las referencias que se incluyen al final de este artículo.
Funcionalidad XML
Aunque se ha incluido buena parte de la funcionalidad de XML de .NET Compact Framework, ha sido
necesario recortarla. El componente clave relacionado con el XML que no se ha incluido es el espacio de
nombres System.Xml.XPath. El espacio de nombres XPath hacía la interpretación del XML mucho más
fácil que los métodos que incorpora .NET Compact Framework. Para compensar esto, puede utilizar una
combinación de las búsquedas recursivas e iterativas con el modelo de objetos de documento (DOM,
Document Object Model).
Hay otro componente clave XML que no se ha incluido en .NET Compact Framework: XSLT (Extensible
Stylesheet Language Transformation). Mediante XSLT, es posible convertir un documento XML en
diferentes formatos.
En relación con el XML, .NET Compact Framework no ofrece actualmente compatibilidad para el
desarrollo de servicios Web XML basados en dispositivos.
.NET Compact Framework ofrece un conjunto robusto de herramientas relacionadas con los datos. La
compatibilidad con la base de datos local la proporciona SQL Server CE. En el servidor, .NET Compact
Framework ofrece compatibilidad con SQL Server.
Tenga en cuenta que hay un fabricante que ofrece un componente de .NET Compact Framework que
permite trabajar con bases de datos de Pocket Access. Para obtener más información, consulte las
referencias que aparecen al final de este artículo.
Serialización binaria
.NET Framework incorpora el espacio de nombres Microsoft.Win32.Registry, que facilita el trabajo con el
registro de Windows desde una aplicación. Obviamente, este espacio de nombres no se ha incluido en
.NET Compact Framework, ya que hace referencia a Win32 y no a Windows CE. Puede tener acceso al
registro de Windows CE llamando a las correspondientes API de Windows.
El proceso de incorporación de objetos COM en una aplicación basada en .NET Compact Framework
consta de dos pasos. Primero, debe escribir un empaquetador DLL no administrado (es decir, en
eMbedded Visual C++) que exponga el objeto COM. Dependiendo de la complejidad del objeto COM,
hacer esto puede ser muy sencillo o extremadamente complicado. Segundo, debe utilizar PInvoke para
tener acceso al empaquetador DLL. Afortunadamente, la comunidad de desarrolladores ya ha
comenzado a trabajar en proporcionar acceso a los componentes COM utilizados con más frecuencia,
varios de los cuales se incluyen en las referencias que aparecen al final del artículo.
Seguridad
.NET Compact Framework no impide el acceso al código no administrado. Cualquier aplicación puede
llamar a una API, ya sea del sistema o no.
Actualmente, no hay ningún tipo de seguridad basada en funciones en .NET Compact Framework. El
objeto principal no entiende de identidad conocida o de función conocida.
La exclusión más notable de las posibilidades de los servicios Web XML de .NET Compact Framework es
la posibilidad de utilizar cookies. Las cookies se utilizan con frecuencia para almacenar el estado en el
servidor entre diferentes llamadas desde un cliente. Aunque el uso de las cookies en los servicios Web
no es tan frecuente como su uso en sitios Web, también se utilizan.
.NET Compact Framework ofrece posibilidades de cifrado limitadas respecto a los servicios Web.
Impresión
.NET Compact Framework no ofrece ninguna función para imprimir. No hay ninguna manera fácil de
interaccionar con impresoras de red ni con impresoras externas mediante infrarrojos.
La solución para tener acceso a las impresoras de red es crear una aplicación basada en el servidor, que
acepte e imprima las tareas enviadas por la aplicación móvil.
Puede enviar una salida mediante el puerto de infrarrojos directamente a impresoras compatibles con
infrarrojos. Puede utilizar el espacio de nombres System.Net.IrDA para tener acceso al puerto de
infrarrojos del dispositivo.
GDI+
Windows CE no es compatible de manera nativa con GDI+, por lo que las funcionalidades relacionadas
con GDI+ se han eliminado de .NET Compact Framework.
Entorno remoto
Visual Studio .NET 2003 ofrece un entorno de desarrollo robusto para la creación de aplicaciones
destinadas a .NET Compact Framework. Junto con Visual Studio .NET se incluyen un conjunto de perfiles
de dispositivos ya creados. Un perfil de dispositivo contiene la información necesaria para crear
aplicaciones destinadas a determinados dispositivos. Con Visual Studio .NET, hay perfiles que le permiten
crear aplicaciones para Pocket PC, Pocket PC 2002 y Windows CE .NET 4.1 y posterior. Estos perfiles le
permiten crear aplicaciones que incluyen Windows Forms y ADO.NET, y ofrecen la posibilidad de
consumir servicios Web.
Los perfiles pueden ser específicos de los dispositivos, como los destinados a Pocket PC, plataformas
menos específicas destinadas a la plataforma Windows CE en general o perfiles genéricos destinados a
cualquier plataforma a la que se haya transferido .NET Compact Framework.
Visual Studio .NET es compatible con los kits de dispositivos (anteriormente conocidos como SDK). Al
igual que las versiones anteriores de las herramientas incrustadas, los kits de dispositivos están
separados de Visual Studio .NET y se pueden instalar y actualizar de manera independiente.
Adiciones a IDE
Además de todas las características que se encuentran de manera nativa en Visual Studio .NET, están las
siguientes características específicas de los dispositivos:
• Controles específicos de los dispositivos: controles específicamente diseñados para utilizarlos con
estos entornos.
emuladores se ejecutan en el equipo del desarrollador, lo que permite realizar pruebas sin utilizar
directamente el dispositivo.
• Distribución automática de aplicaciones: permite realizar pruebas fácilmente en un emulador o un
• Depuración remota: permite aprovechar las herramientas de depuración que ofrece el IDE de Visual
Studio .NET con las aplicaciones del dispositivo. Todas las herramientas de depuración se pueden
utilizar con las aplicaciones basadas en .NET Compact Framework que se ejecuten en un emulador o
en un dispositivo.
Lenguajes admitidos
.NET Compact Framework admite dos lenguajes de desarrollo, C# .NET y Visual Basic .NET. Mientras que
las versiones anteriores de las herramientas de desarrollo de Windows CE favorecían el uso de lenguajes
basados en C (concretamente, eMbedded Visual C++) con .NET Compact Framework apenas importa el
lenguaje que se utilice, ya que todos son igualmente eficaces y funcionales.
Al ser una adición posterior al entorno de desarrollo Visual Studio .NET, .NET Compact Framework no es
compatible con J#.
También debe tener en cuenta que hay otra limitación de lenguaje en .NET Compact Framework que no
existe en .NET Framework. Con .NET Framework puede utilizar componentes en diferentes lenguajes en
un único proyecto. En comparación, los proyectos de .NET Compact Framework están restringidos a un
único lenguaje, ya sea C# .NET o Visual Basic .NET. La solución que permite superar esta limitación de
utilizar un único lenguaje en cada proyecto impuesta por .NET Compact Framework es crear proyectos
adicionales utilizando la plantilla Class. Agregue el código del lenguaje alternativo a la plantilla y, a
continuación, sólo tiene que agregar referencias a estas clases en el proyecto de la aplicación.
Documentación en pantalla
La documentación incluida con Visual Studio .NET proporciona información acerca de .NET Compact
Framework. Encontrará temas específicos de .NET Compact Framework, por ejemplo acerca de la
creación de controles personalizados con .NET Compact Framework, así como la identificación de
elementos de línea de características admitidas en .NET Compact Framework.
La figura 1 muestra un ejemplo de las propiedades DataTable admitidas en .NET Compact Framework.
Cada una de las propiedades admitidas incluye la nota "Supported by the .NET Compact Framework"
(Compatible con .NET Compact Framework). Se trata de una manera práctica de ver las características
que admite un objeto y determinar rápidamente las diferencias existentes entre .NET Framework y .NET
Compact Framework.
Si se hace clic en el botón Nuevo proyecto aparecerá el cuadro de diálogo Nuevo proyecto, como
muestra la figura 3. Desde este cuadro de diálogo, puede seleccionar una plantilla para crear varios tipos
de proyectos, incluidos dos destinados a .NET Compact Framework. Tanto en la carpeta de proyectos de
Visual Basic como en la carpeta de proyectos de Visual C# hay una plantilla Smart Device Application.
3. Aparecerá el cuadro de diálogo Nuevo proyecto, como muestra la figura 3. En la lista Tipos de
proyecto, seleccione la carpeta Proyectos de Visual Basic.
4. Aparecerán las plantillas de proyectos de Visual Basic. Seleccione la plantilla Smart Device
Application.
3. Aparecerá el cuadro de diálogo Nuevo proyecto, como muestra la figura 3. En la lista Tipos de
proyecto, seleccione la carpeta Proyectos de Visual C#.
4. Aparecerán las plantillas de proyectos de Visual C#. Seleccione la plantilla Smart Device
Application.
Al seleccionar la plantilla Smart Device Application se cargará el asistente Smart Device Application
Wizard, como muestra la figura 4. Este asistente le guiará a través del proceso de selección del tipo de
proyecto de la aplicación.
Figura 4. Asistente Smart Device Application Wizard
La interfaz de este asistente consta de dos cuadros de listas. El cuadro de lista superior le permite
seleccionar la plataforma de destino. Contiene dos opciones, Pocket PC o Windows CE. Mientras que
Pocket PC está destinado a una plataforma de dispositivo específica, la plantilla Windows CE se utiliza
para crear una aplicación con fines más generales, que se puede ejecutar en un gran número de
dispositivos que ejecutan dicho sistema operativo.
El cuadro de lista inferior muestra los tipos de proyectos que están disponibles para el dispositivo de
destino (Pocket PC o Windows CE) que ha seleccionado.
Hay cuatro tipos de proyectos destinados a las plataformas Pocket PC y Pocket PC 2002, como muestra
la figura 5. Estos tipos son Windows Application, Class Library, Non-graphical Application y Empty
Project. Se incluye una descripción de cada uno de estos tipos de proyectos en la tabla 2.
Figura 5. Tipos de proyectos de Pocket PC
Estos tipos de proyectos se pueden utilizar para crear aplicaciones destinadas a dispositivos Pocket PC
que ejecuten procesadores SH3, MIPS o ARM y dispositivos Pocket PC 2002 con procesadores ARM o
XScale.
Windows Application Proyecto basado en Windows Forms que incluye controles específicos
de Pocket PC. Se trata de la plantilla utilizada con más frecuencia, ya
que genera aplicaciones basadas en Windows.
Non-graphical Application Se utiliza para crear ejecutables que no tendrán una interfaz de
usuario. Se adapta mejor a las aplicaciones de segundo plano y de
mantenimiento que no requieren la interacción del usuario.
Como se muestra en la figura 6, hay cuatro tipos de proyectos destinados a la plataforma Windows CE.
Estos tipos son Windows Application, Class Library, Console Application y Empty Project. Se incluye una
descripción de cada uno de estos tipos de proyectos en la tabla 3.
Figura 6. Tipos de proyectos de Windows CE
Windows Application Proyecto basado en Windows Forms que incluye controles específicos
de Windows CE .NET. Se trata de la plantilla utilizada con más
frecuencia, ya que genera aplicaciones basadas en Windows.
Al igual que con todos los proyectos de Visual Studio .NET, los proyectos de .NET Compact Framework se
configuran utilizando el cuadro de diálogo Páginas de propiedades del proyecto. Mediante este cuadro de
diálogo, puede configurar los espacios de nombres que desea incluir; el formulario que desea utilizar
como formulario de inicio; el icono que se va a asociar con la aplicación; la forma en que se generará la
aplicación; el lugar donde se generará; la forma de distribución; las configuraciones de optimización y
muchos otros parámetros.
Páginas de propiedades.
Creación de la interfaz
Si ya está familiarizado con Visual Studio .NET, apenas necesitará ayuda para comenzar a crear las
interfaces de usuario de las aplicaciones destinadas a .NET Compact Framework. Para aquéllos que no
conocen el IDE de Visual Studio .NET, los nuevos proyectos basados en la plantilla Windows Application
aparecerán automáticamente en el formulario predeterminado que se muestra en la figura 8.
En este ejemplo, el tipo de proyecto es una aplicación para Windows destinada al Pocket PC. La plantilla
de este tipo de aplicación incluye un formulario cuyo tamaño es el correcto para la plataforma Pocket PC.
Se incluye con el formulario un control de menú, como se muestra debajo del formulario, ya que la
mayoría de las aplicaciones para Pocket PC incluyen menús.
Figura 8. Formulario predeterminado para Pocket PC
.NET Compact Framework incluye un subconjunto de los controles que se pueden utilizar para crear una
aplicación para el escritorio de Windows. Para la mayoría de ellos, verá que estos controles ofrecen un
subconjunto de los controles equivalentes que se encuentran en.NET Framework. La diferencia tiene que
ver con las limitaciones de recursos impuestas por las plataformas de destino.
Nota también hay disponibles una serie de controles de terceros. Consulte la sección
de referencia incluida al final de este documento si desea conocer más detalles.
Una de las características más interesantes de.NET Compact Framework es que permite superar las
limitaciones mediante codificación. Por ejemplo, tomemos el caso de los controles. Todos los controles
suministrados con.NET Compact Framework son limitados en comparación con sus equivalentes
completos de Framework. Tienen menos propiedades, menos métodos y menos eventos. Mediante .NET
Compact Framework, puede modificar la funcionalidad de los controles estándar para adaptarlos a sus
necesidades.
Los controles personalizados se pueden dividir en tres categorías: de usuario, heredados y dibujados por
el propietario. Los controles de usuario son los más sencillos de crear, pero desgraciadamente no son
compatibles con .NET Compact Framework. Los controles heredados comienzan a partir de un control de
.NET Compact Framework. A continuación se agregan, eliminan o modifican las propiedades, los
métodos y los eventos de dicho control base según sea necesario. En lo que se refiere a la complejidad
del control, los controles heredados tienen una posición intermedia entre los controles de usuario y los
controles dibujados por el propietario. Los controles dibujados por el propietario ofrecen la mayor
flexibilidad en lo que se refiere a su interfaz. También son los que requieren un mayor esfuerzo.
Aunque este artículo no explica el proceso de creación de controles personalizados para .NET Compact
Framework, descubrirá que la mayoría de las técnicas y enfoques que se utilizan en .NET Framework
también son válidos en .NET Compact Framework.
Los siguientes vínculos (en inglés) proporcionan más detalles acerca de la creación de controles
personalizados para su utilización con .NET Compact Framework:
Creación de un menú
En todas las aplicaciones para Pocket PC que han tenido éxito hay siempre una barra de menús.
Prácticamente sin ninguna excepción, para crear una aplicación para Pocket PC que sea muy efectiva con
un buen conjunto de funcionalidades es necesario utilizar una barra de menús.
El uso de barras de menús es tan habitual que la plantilla predeterminada de Pocket PC Windows
Application incluye automáticamente una barra de menús en el formulario inicial que crea. Con Visual
Studio .NET y .NET Compact Framework, la creación de menús es fácil y directa. Sólo tiene que crear
una jerarquía de menús mediante una herramienta gráfica que se incluye con el diseñador de
formularios.
Aunque la creación de menús con la herramienta de tiempo de diseño es la manera más sencilla, no es
la única manera posible. También se pueden crear menús mediante código. Aunque es ligeramente más
complicado, hay casos en los que deseará crear los menús directamente mientras se está ejecutando la
aplicación.
Se trata del control MainMenu que implementa físicamente una barra de menús en un formulario. El
diseñador de menús ofrece una interfaz gráfica para configurar un control MainMenu. Puede utilizar el
diseñador de menús para crear los menús y los elementos de menús que formarán la barra de menús
global.
1. En el IDE de Visual Studio .NET, abra el formulario al que desea agregar el menú. Si el formulario no
contiene todavía un control MainMenu, agregue uno en este momento.
2. Haga clic en el icono MainMenu en la bandeja del icono. Se activará la barra de menús en el
formulario.
3. Haga clic en la barra de menús del formulario. Se activará el diseñador de menús. Se resaltará el
espacio correspondiente al primer menú, como muestra la figura 9.
Figura 9. Menú vacío en el diseñador de menús
4. Escriba el nombre del primer menú (el situado más a la izquierda) en el área resaltada. En el
ejemplo que se muestra en la figura 10, se define el menú Nuevo.
5. Ahora puede agregar más menús o bien definir los elementos que aparecerán en el menú Nuevo.
Para agregar más menús, sólo tiene que escribir el nombre del siguiente menú en el cuadro Escriba
aquí situado exactamente a la derecha del primer menú definido. En la figura 10, esto sería
exactamente a la derecha de New. En nuestro ejemplo, agregaremos un menú Edición.
7. Repita estos pasos para crear los menús y sus correspondientes elementos hasta que haya
terminado de definir el menú.
Si está creando un menú, deberá proporcionar una respuesta cuando el usuario Haga Clicko haga clic en
un elemento de menú. Todo elemento de menú tiene un procedimiento de evento Click que se ejecuta
cuando el usuario puntea dicho elemento. El listado 1 muestra un ejemplo de dicho procedimiento.
[Visual Basic]
Private Sub mnuEditCut_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuEditCut.Click
MessageBox.Show("cortar...")
End Sub
[Visual C#]
private void mnuEditCut_Click(object sender, System.EventArgs e)
{
MessageBox.Show("cortar...");
}
Los desarrolladores de aplicaciones para equipos de escritorio deben tener en cuenta que las barras de
herramientas que las barras de herramientas que existen en el entorno Pocket PC son diferentes de las
que se incluyen con una aplicación de escritorio estándar. La diferencia que primero resulta visible es
que las barras de herramientas de Pocket PC aparecen en la parte inferior de la interfaz, en vez de en la
parte superior. Además, siempre están limitadas a un pequeño número de botones, una restricción
impuesta por el mínimo espacio de pantalla real del que dispone un Pocket PC. Ambas características
pueden observarse en la figura 12.
Figura 12. Barra de herramientas de ejemplo
Las barras de herramientas desempeñan dos importantes funciones en una aplicación. En primer lugar,
hacen que la presentación sea más atractiva. En general las aplicaciones para Pocket PC, debido a lo
limitado de su tamaño, tienden a tener un aspecto bastante plano. Las barras de herramientas (y los
botones que contienen) puede darle a la interfaz de la aplicación un cierto "toque".
En segundo lugar, las barras de herramientas simplifican la interacción con el usuario. Las características
y las funciones utilizadas con mayor frecuencia se pueden colocar en una barra de herramientas en vez
de anidarlas en un menú. La ventaja de hacerlo así es que para seleccionar un botón de la barra de
herramientas basta con puntearlo. En comparación, un elemento de menú requiere al menos dos
punteos y posiblemente un tercero si el elemento forma parte de un submenú.
1. Agregar y configurar un control ImageList. El control ImageList proporciona las imágenes que
finalmente se mostrarán en los botones del menú.
2. Agregar y configurar un control ToolBar. El control ToolBar define los botones que formarán la barra
de herramientas física, tal como la verá el usuario final.
3. Escriba un procedimiento de evento para responder a los punteos de los botones. El control ToolBar
utiliza un único procedimiento de evento para responder a los punteos de cualquiera de sus
botones.
Con las barras de herramientas, sólo le preocupa un único evento, el que se dispara cuando el usuario
puntea un botón. Dicho evento es un evento ButtonClick. El procedimiento de evento correspondiente al
evento ButtonClick se comparte entre todos los botones.
El único problema que plantea trabajar con este procedimiento de evento es determinar el botón que se
ha punteado. Se puede llevar a cabo fácilmente haciendo referencia a los argumentos del evento que se
pasan al procedimiento. Mediante una referencia a e.Button.ImageIndex, puede determinar la imagen
que se ha asociado con el botón que se ha punteado. Este índice es el que se asignó originalmente a las
imágenes cuando se almacenaron en el control ImageList. El listado 2 muestra un ejemplo del manejo
de los punteos de los botones.
[Visual Basic]
Private Sub tlbMain_ButtonClick(ByVal sender As System.Object, _
ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) _
Handles tlbMain.ButtonClick
Select Case e.Button.ImageIndex
Case 0
MessageBox.Show("imprimir...")
Case 1
MessageBox.Show("tarea...")
End Select
End Sub
[Visual C#]
private void tlBMain_ButtonClick(object sender,
System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
switch (e.Button.ImageIndex)
{
case 0:
MessageBox.Show("imprimir...");
case 1:
MessageBox.Show("tarea...");
}
}
Adición de código
Ahora que ya ha visto los conceptos básicos de la creación de una interfaz, podemos centrarnos en cómo
agregar código a la aplicación. Al igual que ocurre con numerosas aplicaciones desarrolladas con el IDE
de Visual Studio .NET, el código se agrega a través de la ventana Código.
Si no está familiarizado con Visual Studio .NET, el entorno le resultará enormemente atractivo. La
ventana Código proporciona un gran número de funcionalidades, todo desde completar las instrucciones,
hasta listar de manera automática los miembros, ofrecer información sobre los parámetros y regiones de
código que se pueden contraer, por nombrar sólo algunas de ellas.
La manera más fácil de desplazarse por el código es utilizar los dos cuadros combinados que hay en la
parte superior de la ventana. El cuadro combinado situado en la parte superior izquierda de la ventana
Código permite seleccionar una clase dentro de un módulo. El cuadro combinado situado en la parte
superior derecha de la ventana permite seleccionar un método de dicha clase.
Comprobación de la aplicación
Una vez que se ha terminado la interfaz de usuario y se ha escrito el código, ha llegado el momento de
centrarse en la realización de pruebas con la aplicación. Visual Studio .NET ofrece dos maneras de
realizar pruebas con las aplicaciones destinadas a .NET Compact Framework: mediante un emulador y
en un dispositivo. Ya sea con uno o con otro, Visual Studio .NET administra la distribución tanto de la
aplicación como de todos los componentes que dicha aplicación requiere, incluido .NET Compact
Framework y SQL Server CE.
Todo esto se administra al comprobar una aplicación de .NET Compact Framework desde Visual Studio
.NET 2003. Se realiza una comprobación de la plataforma de destino para confirmar que está instalado
.NET Compact Framework. Si Visual Studio .NET determina que falta .NET Compact Framework, lo
copiará e instalará automáticamente antes de intentar ejecutar la aplicación. Este proceso de instalación
ocurrirá la primera vez que se realicen pruebas en un dispositivo o en el emulador, y si se realiza un
reinicio duro en el dispositivo o en el emulador.
Se utiliza un proceso similar si la aplicación utiliza SQL Server CE. Visual Studio .NET comprobará la
plataforma de destino para confirmar que se han instalado los componentes de SQL Server CE. Si Visual
Studio .NET no los encuentra, copiará e instalará automáticamente los componentes necesarios de SQL
Server CE antes de ejecutar la aplicación.
Una vez que se ha determinado que se dispone de todos los componentes que requiere la aplicación, se
copiará la aplicación en la plataforma de destino, se colocará en el directorio especificado en las
configuraciones del proyecto y, por último, se iniciará.
Comprobación en el emulador
Tenga en cuenta la siguiente advertencia: las pruebas realizadas en el emulador tienen puntos débiles.
La primera y más importante es que el emulador se ejecuta en su PC de escritorio, que tiene muchos
más recursos de procesamiento que el dispositivo de destino, por lo que puede dar una impresión
equivocada acerca del funcionamiento de la aplicación. Además, la entrada en el emulador se realiza
mediante un teclado y un mouse en vez del lápiz que utilizará el usuario final. Si no es consciente de
esta diferencia, es posible que cree una aplicación que sea fácil de utilizar en el emulador pero incómoda
en el dispositivo. Por último, el emulador ofrece una representación "que se parece" al dispositivo, pero
no es exacta. Todos los emuladores presentan ligeras diferencias.
Los emuladores que se incluyen con Visual Studio .NET no funcionarán a menos que el equipo de
desarrollo en el que se está ejecutando disponga de una conexión de red. Si su PC no tiene una conexión
de red, para utilizar el emulador deberá instalar un adaptador de red de bucle invertido de Microsoft.
Este adaptador simula una conexión de red y consigue engañar al emulador para que funcione.
En Windows 2000, para instalar el adaptador de red de bucle invertido de Microsoft es necesario seguir
estos pasos:
2. En la página de bienvenida del Asistente para agregar o quitar hardware, haga clic en Siguiente.
5. En la página Búsqueda de nuevo hardware, haga clic en No, deseo seleccionar el hardware de
una lista y, a continuación, haga clic en Siguiente.
Al igual que con cualquier otro adaptador de red, la instalación de un adaptador de bucle invertido es
sólo la mitad del proceso. También deberá configurar un nuevo adaptador. Siga estos pasos para
configurar el adaptador de bucle invertido:
6. Haga clic en Aceptar para cerrar la ventana Propiedades de Conexión de área local.
7. Haga clic en Cerrar para cerrar la ventana Estado de Conexión de área local.
Las versiones anteriores de los emuladores de Windows CE/Pocket PC ofrecían dos enfoques distintos
para crear el entorno del emulador. La primera generación de emuladores utilizaba un entorno cerrado,
al que no se podía tener acceso desde las herramientas de administración de archivos estándar basadas
en Windows del equipo de desarrollo. Todos los archivos que se necesitasen en el emulador debían
crearse dentro del emulador o bien copiarse al emulador mediante utilidades especializadas incluidas con
eMbedded Visual Tools.
Los emuladores de segunda generación ofrecían un entorno más abierto, al que se tenía acceso
mediante herramientas habituales, como el Explorador de archivos. La estructura del directorio del
emulador existía en un subdirectorio en el equipo de desarrollo. Para copiar archivos en el emulador o
desde él, bastaba con arrastrar y colocar los archivos.
El emulador que se incluye con Visual Studio .NET vuelve a utilizar un entorno de emulador cerrado.
Para complicarlo todo, a diferencia de versiones anteriores de eMbedded Visual Tools, Visual Studio .NET
no incluye una herramienta de administración de archivos del emulador. Esta ausencia requiere la
invención de una solución creativa.
Hay tres maneras habituales de proporcionar archivos en el entorno del emulador. Una manera es crear
los archivos mediante las aplicaciones que se ejecutan en el emulador. No creo que este enfoque
requiera ninguna explicación más. Puede utilizar las técnicas estándar de programación de .NET para
crear archivos de texto, XML o de base de datos.
Los otros dos enfoques, agregar archivos al proyecto o copiar los archivos desde un recurso compartido,
requieren ciertas explicaciones adicionales.
El proceso que hay que seguir para utilizar este método es el siguiente:
3. En el cuadro de diálogo Agregar elemento existente, seleccione el archivo que desea copiar al
emulador.
6. En la ventana Propiedades, compruebe que la propiedad Generar está definida como Contenido.
Los elementos configurados como "Contenido" se copian en el dispositivo de destino como archivos
independientes. Los elementos configurados como "Recurso incrustado" forman parte del ejecutable
de la aplicación.
El segundo método ofrece una mayor flexibilidad y requiere un mínimo esfuerzo adicional. Utiliza la
funcionalidad de recursos compartidos de archivos de red que incorpora el sistema operativo de Pocket
PC, también disponible en el emulador que se incluye con Visual Studio .NET.
Este método se divide en dos partes: configuración de un recurso compartido en el equipo de desarrollo
y, a continuación, acceso a dicho recurso compartido mediante el Explorador de archivos del emulador.
Para configurar un recurso compartido hay que seguir dos pasos. En primer lugar, debe configurar el
equipo para que admita recursos compartidos. En segundo lugar, debe indicar las carpetas que desea
compartir.
Para activar los recursos compartidos en un equipo de desarrollo que ejecute Windows 2000
4. Haga clic en Aceptar para cerrar la ventana Propiedades de Conexión de área local.
Llegados a este punto, ya está configurado su PC de desarrollo para poder compartir archivos. A
continuación, necesitará compartir una carpeta en la que colocará los archivos que desea copiar al
emulador.
2. En el Explorador de archivos, haga clic con el botón secundario en la carpeta que desea compartir y,
a continuación, haga clic en Propiedades.
Una vez que ha configurado el equipo de desarrollo, ya puede comenzar a copiar archivos. En primer
lugar, deberá colocar todos los archivos destinados al emulador en la carpeta compartida. A
continuación, para transferir los archivos al emulador, siga estos pasos:
1. Inicie el emulador.
4. Aparecerá el cuadro de diálogo Abrir. Especifique el nombre del equipo de desarrollo, seguido por el
nombre del recurso compartido que ha creado, con este formato:
\\miequipo\mirecursocompartido
Llegados a este punto, ya puede copiar archivos en el recurso compartido y desde él en el equipo de
desarrollo y en el emulador.
Nota Estos mismos métodos para copiar archivos funcionan igualmente bien al
utilizar un dispositivo, pero se ha detectado un problema. Los dispositivos Pocket PC de
manera predeterminada tienen el nombre de dispositivo "Pocket PC". Debe cambiar
este nombre o no tendrá acceso a los recursos compartidos.
Comprobación en un dispositivo
Distribución a dispositivos
• En la página Dispositivo del cuadro de diálogo Propiedades del proyecto, seleccione Pocket PC
• En la ventana Propiedad, defina la propiedad Deployment Device del proyecto en Pocket PC Device.
Depuración de la aplicación
El entorno de depuración que se incluye con Visual Studio .NET IDE es robusto. Permite hacer una pausa
en la aplicación, examinar su funcionamiento interno, modificar el código, examinar los valores y
desplazarse por la aplicación de manera sistemática.
El núcleo de la funcionalidad de depuración se puede encontrar en el menú Depurar del IDE de Visual
Studio .NET. Desde este menú, puede iniciar y detener una sesión de depuración, establecer puntos de
interrupción y examinar la aplicación mientras está en modo Depurar.
Visual Studio .NET le permite depurar de manera remota las aplicaciones que se ejecutan en un
dispositivo o en un emulador desde la comodidad de su PC de desarrollo. Puede utilizar la ventana
Comando para introducir instrucciones, consultar y establecer variables, ejecutar líneas de código y otras
tareas similares.
Nota Para que el entorno de depuración sea óptimo, utilice Ethernet para conectar el
dispositivo a su PC.
Implementación de la aplicación
La creación de programas de instalación para una aplicación de .NET Compact Framework es similar al
método que se utiliza para otras aplicaciones de Windows. Dichos programas de instalación se
distribuyen mediante archivos contenedores, más conocidos como archivos "CAB", debido a la extensión
.cab. Los archivos CAB tienen dos objetivos: 1) comprimen y almacenan archivos para que sea posible
distribuirlos con facilidad; 2) aseguran que todos los archivos y las configuraciones que requiere una
aplicación se administren correctamente.
Requisitos
Las aplicaciones generadas con Visual Studio .NET requiere que .NET Compact Framework se encuentre
en el dispositivo de destino. Además, si la aplicación utiliza SQL Server CE, deberá instalar también los
componentes SQL Server CE.
La rutina de instalación también deberá tener esto en cuenta. Puede que sea necesario incluir varios
archivos CAB: uno para la aplicación, otro para los CAB de .NET Compact Framework y SQL Server CE.
La manera más fácil de crear un archivo CAB para la aplicación es dejar que Visual Studio .NET haga
automáticamente todo el trabajo. Una de las características que ofrece Visual Studio .NET es un
elemento de menú del IDE para generar archivos CAB.
3. En el menú Generar, haga clic en Build CAB File, como se muestra en la figura 14.
4. Aparecerán brevemente varias ventanas de comandos mientras se genera la aplicación. Una vez
que desaparezcan estas ventanas, se habrá terminado el archivo CAB.
Nota No aparecerá ningún mensaje o confirmación que le informe de que se ha
generado el archivo CAB. Una vez que se cierre la última ventana de comandos,
sencillamente volverá a la interfaz de Visual Studio .NET.
La salida del proceso de generación de CAB se almacena en un directorio situado dentro del directorio de
la aplicación. Encontrará los diferentes archivos CAB en el subdirectorio \bin\release. Puede ver un
ejemplo de esta jerarquía en la figura 15.
Figura 15. Ubicación de los archivos CAB generados mediante Visual Studio .NET
En el ejemplo que mostraba la figura 15, se generaban varios archivos CAB, uno para cada tipo de
procesador de la plataforma de destino. En esta figura, puede ver cuatro archivos CAB, cada uno de ellos
para los tipos de procesador StrongArm, MIPS, SH3 y X86, ya que el dispositivo de distribución era un
Pocket PC y hay cuatro tipos de procesadores compatibles con dicho dispositivo.
Llegados a este punto, podría copiar el archivo CAB apropiado en el dispositivo de destino, abrir el
Explorador de archivos en el dispositivo, puntear en el archivo CAB y se instalaría la aplicación.
Nota No olvide que para que se pueda ejecutar la aplicación necesitará instalar .NET
Compact Framework y, si es necesario, SQL Server CE.
El administrador de aplicaciones se encarga de agregar y quitar aplicaciones de los dispositivos, así como
de eliminar los archivos de la aplicación del equipo en el que se ha iniciado la instalación. Se utiliza un
archivo .INI para indicarle las instrucciones de instalación al administrador de aplicaciones.
Los programas de instalación de escritorio se pueden crear con cualquier aplicación que permita copiar
los archivos CAB en un equipo y, a continuación, iniciar el administrador de aplicaciones. Existen dos
compañías, InstallShield y Wise, que proporcionan paquetes de desarrollo comerciales con esta
funcionalidad.
Spb Software House ofrece un producto gratuito para crear programas de instalación llamado EZSetup.
Aunque esta aplicación no es tan robusta como los productos de InstallShield y Wise, funciona bastante
bien en la mayoría de los programas de instalación.
Resumen
.NET Compact Framework ofrece a los desarrolladores una poderosa herramienta para crear aplicaciones
móviles robustas. Le permite aprovechar las ventajas de los conocimientos de .NET de los que ya
dispone para crear aplicaciones destinadas a los dispositivos Pocket PC y Windows CE .NET.
Información adicional
Artículos
Introducción
Hacerse con el control de C#: una visión general y una introducción de .NET Compact Framework y
Visual C#
Accessing the Enterprise with Ease (en inglés): una introducción al uso de .NET Compact Framework y
SQL Server para crear aplicaciones móvil que tengan acceso a datos de empresas.
Making the Move from C++ to C# (en inglés): ofrece una comparación entre el desarrollo de una
aplicación utilizando eMbedded Visual C++ frente a .NET Compact Framework con Visual C#
Smart Device Extensions, SQLCE and Me (en inglés): una introducción al desarrollo de aplicaciones con
.NET Compact Framework y SQL Server CE
Introducción a Smart Device Extensions: un primer vistazo al trabajo con .NET Compact Framework
Some Very Smart Software (en inglés): una rápida introducción al uso de servicios Web desde una
aplicación de .NET Compact Framework
Creating Custom Controls for the .NET Compact Framework (en inglés)
Design-time Functionality for Custom Controls in Compact Framework and SDE (en inglés)
Creating Custom Controls with the .NET Compact Framework (en inglés)
Grupos de noticias
Sitios Web
Programa de desarrolladores
Mobile Solution Partner Program (en inglés) de Microsoft es una iniciativa mundial diseñada para
ayudarle a desarrollar innovadoras soluciones mediante Microsoft Mobile Software y lanzarlas con éxito
al mercado.
Microsoft Mobile Software tiene todo lo necesario para ofrecer grandes soluciones y servicios capaces de
proporcionar información en cualquier momento, en cualquier lugar y en cualquier dispositivo.
Únase a la revolución móvil de Microsoft y distribuya sus aplicaciones, conecte con nuevos mercados e
imagine nuevas y atractivas maneras de vivir y trabajar.
larryroof.com (en inglés) ofrece cursos y consultoría de diseño y desarrollo de aplicaciones móviles. Los
servicios ofertados incluyen cursos de 5 días acerca de .NET Compact Framework y SQL Server CE,
programas de aprendizaje personalizados y combinaciones de cursos y consultoría para ayudarle a
implementar rápidamente soluciones móviles efectivas.
Sitios de información
gotdotnet.com (en inglés) es el sitio principal de .NET Framework e incluye una sección dedicada a .NET
Compact Framework.
innovativedss.com (en inglés) incluye código de ejemplo y foros de desarrolladores.
devbuzz.com (en inglés) es un sitio de desarrolladores que se centra en eMbedded Visual Basic y .NET
Compact Framework. Incluye artículos, código de ejemplo y foros.
DateTimePicker: aunque este control se incluye en .NET Framework, no se encuentra en .NET Compact
Framework. Disponible desde IntelliProg (en inglés).
HTMLViewer: admite la presentación de contenido HTML. Disponible desde IntelliProg (en inglés).
RichInk: permite al usuario escribir y editar texto, al mismo tiempo que proporciona características de
formato enriquecido para Rich Text Format y Rich Ink. Disponible desde IntelliProg (en inglés).
Pocket Outlook: esta biblioteca permite a las aplicaciones escritas en .NET Compact Framework tener
acceso y manipular con facilidad los datos de Pocket Outlook. Para obtener más información, consulte
inthehand.com (en inglés).
Pocket Access: esta biblioteca permite incorporar los datos almacenados en las bases de datos de Pocket
Access a las aplicaciones de .NET Compact Framework. Para obtener más información, consulte
inthehand.com (en inglés).