Title: Consejos para la integracin y desarrollo de aplicaciones
1Consejos para la integración y desarrollo de
aplicaciones
- Francisco Porras Álvarez
- Comparex España
- Citrix System Integrator
2Agenda
- Nociones de Arquitectura en entornos TS
- Buenas prácticas para el desarrollo de
- aplicaciones
- Notas genéricas para instalar aplicaciones
- Integración de aplicaciones
- Otras Cosas
3Nociones de Arquitectura en entornos TS
- El entorno Terminal Services se caracteriza por
ser un entorno multiusuario varios usuarios
pueden concurrentemente abrir una misma
aplicación - Algunos componentes fundamentales de win2000/2003
han sido modificados para Terminal Services, por
ejemplo - Administrador de objetos (Object Manager))
- Ha sido modificado para permitir la
virtualización de objetos. De esta forma se evita
que aplicaciones y programas del sistema de
distintas sesiones no colisionen. Cada objeto
creado dentro de una sesión está asociado a un
identificador único que se llama SessionID. - Objetos globales o específicos de sesión
- Sólo son visibles para una aplicación los objetos
globales y los objetos cuyo sessionID coindica
con el session ID de la aplicación. - Administrador de memoria virtual (VMM)
- Mapea direcciones virtuales dentro del espacio de
memoria del proceso a páginas físicas en la
memoria del servidor. - En NT el espacio está dividido en 2GB para el
usuario (direcciones específicas de proceso) y
2GB para el núcleo (direcciones específicas de
sistema). - Para el espacio del usuario el VMM provee una
vista individualizada de la memoria física
asegurando que cada thread dentro de un proceso
puede acceder a su propia memoria, pero no a la
memoria de otros procesos.
4Nociones de Arquitectura en entornos TS - 2
- Session Space
- Al contrario, el espacio de direcciones para el
kernel es común para todos los procesos dentro
del sistema, de esta forma se crea un metodo
consistente para acceder a los servicos del
kernel. - El hecho de que todos los procesos compartan un
espacio de direcciones para el kernel
provocaría serias limitaciones de recursos con
múltiples sesiones interactivas en el mismo
servidor - Con Terminal services éstas limitaciones se han
superado creando un rango especial de direcciones
en el kernel que llamamos SessionSpace que va
a ser mapeado por cada sesión. Cada proceso está
asociado con un SessionSpace mediante un
identificativo de sesión (SessionID). - SessionID
- Cuando un nuevo usuario se conecta a un terminal
server, se genera un nuevo SessionID, y todos los
procesos creados para esa conexión heredan ese
SessionID creado y el SessionSpace asociado. - Otros grupos de procesos con diferente SessionID
apuntan a un espacio distinto y separado
5Nociones de Arquitectura en entornos TS - 3
- Servicio termsrv
- El Servicio termsrv de Windows 2000/2003 tiene
la responsabilidad de controlar los procesos en
un entorno de Terminal Server. Su primera
obligación es la gestión de sesiones, inicio y
finalización de sesiones de los usuarios y
notificación de eventos. - Termsrv es independiente del protocolo y
actualmente soporta tanto RDP como ICA - Es necesario activarlo en Windows 2000/2003
- Debido a ésta arquitectura especial y a la
necesidad de ejecutar multiples sesiones
concurrentes de usuarios diferentes se puede
plantear la necesidad de llevar a cabo acciones
especiales de cara al desarrollo e integración de
aplicaciones en éste entorno
6Agenda
- Nociones de Arquitectura en entornos TS
- Buenas prácticas para el desarrollo de
- aplicaciones
- Notas genéricas para instalar aplicaciones
- Integración de aplicaciones
- Otras Cosas
7Buenas prácticas para el desarrollo de
aplicaciones
- Archivos
- No compilar letras de unidades como rutas fijas
- NO C\TMP, C\TEMP, etc, referirse siempre a
variables en cualquier caso SystemRoot,temp, - Las DLLs generalmente solo pueden ser instaladas
por administradores - Todos los usuarios deben tener permisos de
lectura / ejecución sobre las DLLs - Almacenar información específica del usuario en
su home directory (nunca en local) - Almacenar información específica de la aplicación
fuera de las unidades locales preferiblemente en
la red de datos - No asumir la persistencia de los archivos
temporales
8Buenas prácticas para el desarrollo de
aplicaciones
- Impresión
- No asumir que existe una impresora por defecto
- Tener en mente la limitación del ancho de banda a
la hora de imprimir
9Buenas prácticas para el desarrollo de
aplicaciones
- Identificadores únicos
- Nunca usar atributos específicos de máquina como
identificadores únicos en su aplicación ej.
Dirección IP, nombre de máquina
(GetComputerNameEx()), etc, - Usar la dirección Ip del puesto cliente
(clientaddress), session ID (Citrix Server SDK) o
la variable de entorno WINSTATIONNAME
10Buenas prácticas para el desarrollo de
aplicaciones
- Registro de Windows
- Escribir configuraciones específicas de usuario
en HKeyCurrentUser no en HKeyLocalMachine
11Buenas prácticas para el desarrollo de
aplicaciones
- Aplicaciones cliente servidor
- El mecanismo de comunicación entre los
componentes de la parte cliente y servidor debe
ser tal que múltiples clientes conectando desde
la misma máquina son identificados únicamente. - DCOM
- Solo anonymous modo de activación soportado en
TSE - Totalmente soportado en Windows 2000
12Buenas prácticas para el desarrollo de
aplicaciones
- Seguridad
- No incorporar operaciones tipo archivar,
ejecutar dentro de una aplicación para no
comprometer la seguridad del entorno.
13Buenas prácticas para el desarrollo de
aplicaciones
- Graficos
- Evitar animaciones innecesarias
- Evitar pantallas de bienvenida
- Los graficos de aplicaciones DOS no están
soportados por ICA - No redibujar más de lo que sea necesario en la
pantalla. - Usar colores sólidos para una mejor compresión
- Evitar parpadeos de cursor
- Los gráficos vectoriales tienen un mejor
rendimiento sobre ICA que los mapas de bits - Usar raster operator para pintar gráficos en la
pantalla
14Buenas prácticas para el desarrollo de
aplicaciones
- Instalación
- Los Modos de instalación de aplicaciones de
Metaframe causan efectos en las entradas del
registro y en ficheros INI - Cuidado con no sobreescribir TSE DLLs con NT
Server o NT Workstation DLLs
15Buenas prácticas para el desarrollo de
aplicaciones
- Memoria
- Esto es un entorno compartido. No asuma que toda
la memoria disponible en la máuina podría o
debería ser usada por su aplicación.
16Buenas prácticas para el desarrollo de
aplicaciones
- Periféricos
- Testear audio, serial, etc. sobre ICA
17Buenas prácticas para el desarrollo de
aplicaciones
- General
- No asumir que la shell de windows se va a estar
ejecutando ej published application - Los efectos negativos de los memory leaks se
ven multiplicados en un entorno multiusuario - Evitar prácticas de acaparación de CPU como
bucles tipo busy wait y en general polling
excesivo - Usar las APIs de Windows APIs siempre que sea
posible (e.g. GetWindowsDirectory()). Ya que
muchas Windows NT APIs incorporan mejoras Citrix
MultiWin enhancements para soportar de manera
desatendida un entorno muti-usuario.
18Buenas prácticas para el desarrollo de
aplicaciones
- Citrix SDK
- Solo se ejecuta en servidores WinFrame /
MetaFrame (WFAPI.DLL) - Existe para extender la funcionalidad de la
aplicación - Enumeracion
- Servidores
- Sesiones
- Procesos
- Información de sesión
- Dispositivo cliente
- Mensajería
- Eventos de sistema
- Apagado del servidor
- Soporta Microsoft C, Microsoft Visual C, Visual
Basic y en general cualquier herramienta capaz de
llamar una rutina en una DLL
19Buenas prácticas para el desarrollo de
aplicaciones
- REFERENCIAS
- Ver en Microsoft
- TSAppDev.doc - Optimizing Applications for
Windows 2000 Terminal Services and Windows NT
Server 4.0, Terminal Server Edition - W2kTSApCmpt.doc - Terminal Services Application
Compatibility Notes - w2kspec-desktop.doc - Application Specification
for Microsoft Windows 2000 for desktop
applications - http//www.microsoft.com/windows2000/technol
ogies/terminal/default.asp - Ver en Citrix
- CTX846521
- Comprehensive Application Tuning Document
- Aplicaciones DOS, 16 bit, 32 bit
- CTX101709
- How to Troubleshoot Application Integration
Issues - Preguntas para troubleshooting de aplicaciones
que fallan en TS
20Agenda
- Nociones de Arquitectura en entornos TS
- Buenas prácticas para el desarrollo de
- aplicaciones
- Notas genéricas para instalar aplicaciones
- Integración de aplicaciones
- Otras Cosas
21Notas genéricas para instalar aplicaciones
- La instalación de aplicaciones es diferente en
Windows 2000 con Terminal Services habilitado - Usuarios deben ser capaces de ejecutar las
aplicaciones simultáneamente y salvar sus
preferencias cada uno de manera individual - Cada usuario va a tener su propio Home Dir
- Si el administrador no ha especificado el home
directory al usuario, el home directory de
usuario directorio de perfil de usuario
\Wtsrv\Profiles\Username - Terminal Services hace réplica de los ficheros
.ini y las entradas del registry por cada usuario - Para que cada usuario guarde las configuraciones
de app individuales, debe tener una copia de las
entradas de registro y ficheros .ini apropiados.
22Notas genéricas para instalar aplicaciones
- Los inis del directorio de sistema
(systemroot) serán copiados a cada home dir de
cada usuario - Las entradas del registry se copian desde
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\
CurrentVersion\Terminal Server\Install\ Software
a HKEY_CURRENT_USER\Software
23Notas genéricas para instalar aplicaciones
- Para que Terminal Server sepa hacer esto, hay que
instalar las aplicaciones desde el panel de
control o con el comando change user /install - No permitir la instalación de múltiples versiones
de aplicaciones con DLLs compartidas - Muchas versiones de aplicaciones comparten DLLs,
sólo se puede ejecutar una versión de una
aplicación a un mismo tiempo. Ej. IE 3.x y IE 4.x
comparten varias DLLs ? No funcionarán si las
dos versiones se instalan en el mismo servidor. - Ver application compatibility scripts (ACS)
- Aplicaciones antiguas pueden necesitar ACS para
solucionar problemas en la instalación en TS
24Notas genéricas para instalar aplicaciones
- Soportar la customización vía el uso de
perfiles del usuario, no vale especificar durante
la instalación, porque cada usuario puede querer
distintas funciones usar GPOs después - Especificar características disponibles para cada
usuario con Windows 2000/2003 Group policy MMC
snap-in - Windows NT server system policy editor
- Consideración con el HW periférico
- Ej Escaner USB no soportado (de momento)
25Notas genéricas para instalar aplicaciones
- APLICACIONES DOS Y WIN16
- En principio no las quieres
- Aplicaciones DOS y Win16 consumen más memoria que
aplicaciones win32, WOW, VDM - Aplicaciones DOS pueden hacer polling de teclado,
ratón, etc. - Se pueden modificar tiempos de polling
- Ficheros de configuración común
- Normalmente apps monousuario. Fich .ini común
para todos, problemas. - http//www.tamedos.com/ for Tame
26Agenda
- Nociones de Arquitectura en entornos TS
- Buenas prácticas para el desarrollo de
- aplicaciones
- Notas genéricas para instalar aplicaciones
- Integración de aplicaciones
- Otras Cosas
27Integración de Aplicaciones
No sólo instalar, sino también mantener apps
- Gestión de cambios
- Doc/Desatendida/Imagenes/Probar
- Soporte del entorno multiusuario
- Lo de antes
- Seguridad, ficheros y reg
- No vale ser administrador
- Scripts de compatibilidad (ACS)
- systemrootApplication compatability scripts
- Varias fuentes, pero Todd W Mathers, Windows
NT/2000 Thin Client Solutions es muy bueno - Program Compatability Flags
- Issues
28Integración de Aplicaciones
- Application Compatibility Scripts Para
aplicaciones con problemas - systemrootApplication compatibility scripts
- Afecta
- Config de sistema
- ej rootdrive definicion
- User_Start_Menu locacion
- Correr scripts justo después de instalar
aplicación - usar change user /install
- Correr scripts durante el logon de usuario
29Integración de Aplicaciones
- Application Compatibility Scripts
- Para aplicaciones con problemas
- Microsoft incluye
- Usrlogon.cmd estándar system32
- Usrlogn1.cmd system32
- Usrlogn2.cmd system32
- Setpaths.cmd ACS
- RootDrv.cmd ACS
- RootDrv2.cmd ACS
- ChkRoot.cmd ACS
- End.cmd ACS
- Y unos 20-tantos ACSs para ciertas apps
- También ver http//www.xs4all.nl/soundtcr/
- Q279792, HOW TO Enable Application
Compatibility-Mode Technology in Windows 2000 SP2
and SP3
30Integración de Aplicaciones
- 3 utilidades de apoyo
- ACINIUPD.exe actualiza ficheros .ini
- ACREGL.exe Busca clave y valor en registro
output - ACSR.exe Busca y reemplaza contenido de ficheros
- Acs.doc Using and Developing Applications
Compatibility Scripts with Windows NT Server
4.0, Terminal Server Edition - Y scripting tools como
- kixtart y WSH
31Integración de Aplicaciones
- Program Compatibility Flags
- Para
- INIs de Aplicación
- Entradas del registro
- Ej. Application
- Para reducir uso de CPU (BadApp)HKEY_LOCAL_MACHINE
\SOFTWARE\Microsoft\ Windows NT\CurrentVersion\Ter
minal Server\ compatibility\Applications\app_name - También Appcompat.exe en CD win2000 y
- Ver Q279792
32Integración de Aplicaciones
- Proceso de instalación
- Hacer customización de aplicaciones antes,
funciones, MST, etc. (Funcionalidad) - Instalar Change user /install
- Reinicializar o Change user /execute
33Integración de Aplicaciones
- Resolución de problemas comunes
- Algunas apps necesitan acceder al reg o un
fichero, y no tienen accesousar RegMon y FileMon - Si necesita acceder al registro y no tiene
permiso, comprobarlo (monitorizar ej regmon,
filemon). http//www.sysinternals.com/ - Sólo corre una instancia
- 1/ limitación de seguridad en el reg o fichero
- 2/ .exe o DLL en uso por la primera instancia
..probar registrando el .exe o dll como system
Global - Sólo corre para el administrador pero no para el
usuario normal .. Regmon y filemon - Comprobar mode install, permisos de usuario
34Integración de Aplicaciones
- Apps esperan un path fijado en código, probar
Subst en script de logon por usuario - REM make sure C is not mapped
- Net use /d c
- Subst c /d
- REM now point it at the application drive
- Subst c y\
- DrWatsonpor defecto desabilitarlo con drwtsn32
- Mucho tiempo escribiendo en disco duro. Puede
interesar para analizar una app
35Agenda
- Nociones de Arquitectura en entornos TS
- Buenas prácticas para el desarrollo de
- aplicaciones
- Notas genéricas para instalar aplicaciones
- Integración de aplicaciones
- Otras Cosas
36Otra cosas
- RickD apptuning section on tweak citrix
(Application Tuning Discussions) - http//www.tweakcitrix.com/Sections/AppTun.htm
- Página principal de Terminal Server TSE 4.0
- http//www.microsoft.com/ntserver/ProductInfo/term
inal/default.asp - Página principal de windows 2000 terminal
services - http//www.microsoft.com/windows2000/technologies/
terminal/default.asp
37Otra cosas
- SEGURIDAD
- Securing Windows 2000 Terminal Services, White
Paperby David Mackey - http//www.microsoft.com/technet/treeview/default.
asp?url/technet/prodtechnol/win2kts/maintain/opti
mize/secw2kts.asp - Application Security tool (available with the
Windows 2000 Server Resource Kit) white paper
firewall de aplicaciones muy trivial - http//www.microsoft.com/windows2000/techinfo/resk
it/tools/hotfixes/appsec-o.asp. - Appsense Appmanager firewall de aplicaciones
avanzado - http//www.appsense.com
38Otra cosas
- ESCALABILIDAD
- TScale
- http//www.rtosoft.com/
- Appsense Performance Manager y Optimizer
- http//www.appsense.com
- GESTION Y ADMINISTRACION
- Softgrid
- http//www.softricity.com/
39Otra cosas
- Auto-End Tasks
- Si una aplicación no sale bien al cerrarla o en
un shutdown de servidor, el sistema operativo
puede terminar la aplicación usando Auto-End
Tasks. - Auto-End Tasks terminan cualquier tarea que no
responde al aviso de shutdown dentro del período
de timeout por defecto - HKEY_USERS\.DEFAULT\Control Panel\Desktop
Value AutoEndTasks (REG_SZ) 1 - Value WaitToKillAppTimeout (REG_SZ) x, where x
is the interval in milliseconds (default is
20000) - Ver Q123058 (cerrar timed-out apps) y Q191805
(prolonga período de timeout)
40Testing Apps - Compatibilidad
- Desde http//www.microsoft.com/windowsserver2003/p
artners/isvs/cfwfaq.mspx - Q.Where can I find tools for testing applications
running on Windows Server 2003? - A.There are three main tools AppVerifier,
Compatibility Administrator, and Compatibility
Analyzer. - AppVerifier Ayuda a identificar problemas
potenciales de seguridad, estabilidad,
compatibilidad de aplicaciones, monitorizando el
uso de una aplicación del S. O (file system,
registry, memory, and APIs) - Compatibility Administrator Determina la
combinación correcta de los fixes de
compatibilidad requeridos para soportar una app
en Windows 2000, XP o 2003, y aplica los fixes a
través de una compatibility database - Compatibility Analyzer Inventario de todas las
apps ejecutándose en la red y analiza esa lista
de apps para comprobar compatibilidad con el
sistema operativo
41Testing Apps - Stress Test
- PRUEBAS DE CARGA
- Citrix, Desde el CDN CSTK
- Mercury Interactive
- www.mercuryinteractive.com/
- Scapa
- http//www.scapatech.com/home.html
42Preguntas?