Documente Academic
Documente Profesional
Documente Cultură
NET - 2 capas
Versión 8.0
Agosto 2005
www.genexus.com/training
INTRODUCCIÓN
Incluye información acerca de la estructura del curso, cómo navegar a través del
mismo, cómo comunicarse con un instructor y cómo obtener información de
interés para su correcto desarrollo.
Metas y objetivos
En este curso se presentan todos los conceptos teóricos necesarios para la
configuración y puesta a punto de aplicaciones GeneXus .NET. (tanto GUI como
WEB) en 2 capas. El curso incluye conceptos básicos de .NET, manejo del
generador, y una aplicación de ejemplo que muestra paso a paso (con explicaciones
y videos) como ir poniendo en práctica todos los conceptos.
Cada módulo del curso está dividido en capítulos, cada uno de los cuáles tiene una
introducción que establece los temas que serán abordados dentro del mismo. Para
facilitar el aprendizaje, los conceptos teóricos van acompañados de ejemplos
prácticos y de videos demostrativos, que complementan lo explicado, de manera
tal que el alumno pueda obtener una profunda comprensión de los temas
tratados.
Prerrequisitos
Tener aprobado el curso de GeneXus o conocimientos sólidos de GeneXus.
En caso de que el objetivo del alumno sea desarrollar aplicaciones web con el
generador .NET, recomendamos realizar el curso no presencial "Desarrollo de
aplicaciones para Internet con GeneXus".
Requerimientos computacionales
Debe contar con GeneXus versión 8.0 o superior. Recomendamos utilizar los
últimos Upgrades.
Para ver los videos correctamente debe tener una resolución de pantalla no
inferior a 800x600, recomendándose 1024x768 o superior.
Las siguientes tablas dan el significado de los símbolos que aparecerán a lo largo
del curso.
Símbolo Significado
Símbolo Significado
Sugerimos tener GeneXus abierto mientras se está siguiendo el curso, a fin de ver
los elementos que se van mencionando e ir probando en la aplicación de ejemplo.
Algunos links de interés
Con el objetivo de brindar a los desarrolladores una fuente única de información
potenciada con una “ingeniería de búsqueda” que les permita acceder rápida y
fácilmente a la información técnica sobre los diferentes productos que desarrolla
ARTech, se creó GXDL: GeneXus Developer Library, una biblioteca que centraliza
toda esta información técnica.
Los videos que se utilizan en este curso son producidos utilizando un codificador,
TSCC, que permite comprimir los archivos sin degradar la calidad de la imagen.
Este codificador debe estar instalado en toda máquina en la que se vayan a
visualizar los videos.
El archivo TSCC.EXE que incluimos junto con el curso, debe ser ejecutado en su
sistema de manera de instalar el codificador TSCC en su máquina. Esta acción
solo debe realizarse una vez.
La solución es configurar el Media Player para que no escale las imágenes. Hay
varias formas de hacerlo:
1. Configurar Media Player para que utilice “Classic skin”. Presionar el botón
“Skin Chooser” y seleccionar “Classic”.
2. Correr el player en “Compact mode”. En Media Player seleccionar
View/Skin Mode
3. Correr Media Player en modo 6.4
http://www.microsoft.com/windows/windowsmedia/en/download/default.asp
Otra opción es utilizar el TechSmith Camtasia AVI Player, que puede bajarse
libremente de
http://www.techsmith.com/products/studio/player.asp. En este caso no habrán
problemas de escalado.
INTRODUCCIÓN
Este capítulo tiene como objetivo dar una breve introducción a lo que es .NET. y
presentarles algunos conceptos básicos cuando hablamos de la plataforma .NET.
Información general
.NET es una plataforma de desarrollo de software de Microsoft, llamada .NET Framework. Este
es un soporte sobre el cual corren las aplicaciones implementadas en los lenguajes que incluye
la plataforma, ya no corren directamente sobre el sistema operativo, sino que ahora existe una
capa intermedia sobre la cual se ejecutan las aplicaciones.
ASP.NET
Es el componente que permite la ejecución de aplicaciones Web, que corren bajo el
servidor Web Internet Information Server.
.NET Remoting
Es el protocolo que utilizan las aplicaciones .NET para la comunicación entre el cliente
y el servidor de aplicaciones es .NET Remoting.
La CLR utiliza un componente JIT para la compilación, el cual transforma el código intermedio
IL al código de máquina en el sistema donde la aplicación se va a ejecutar. Esta compilación a
lenguaje de máquina lo hace en el momento de ejecución del código.
Aplicaciones GUI
Se trata de aplicaciones .NET que se ejecutan interpretadas. En el cliente se instala la
aplicación GUI en su máquina, y ejecuta el archivo EXE de la aplicación.
Aplicaciones WEB
Cuando se genera una aplicación web (DLL), esta corre en el servidor web (Internet
Information Server ). El cliente ejecuta la aplicación desde un browser.
Internet Information Services de Microsoft forma parte de la mayoría de las
versiones de Windows. Si lo tiene instalado, al navegar a http://localhost verá una
página de gestión o de ayuda de este servidor. Puede iniciarlo o detenerlo yendo
al menú Start y de ahí a Settings / Control Panel / Administrative Tools /
Internet Information Services.
En la ventana que se abrirá navegue por las carpetas que aparecen a la izquierda:
Internet Information Services / <local host> / Web Sites / Default Web
Site y presione el botón de Start
INTRODUCCIÓN
Requerimientos de hardware
Para utilizar las aplicaciones .NET generadas, es necesario tener un mínimo de
128MB de RAM.
Se sugiere ver la página de Microsoft para obtener los requerimientos del .NET
Framework y J# distribution package.
Requerimientos de software
Detallaremos a continuación los requerimientos para desarrollar y ejecutar una
aplicación 2 capas en .NET.
Para ver los requerimientos de software del .NET Framework y del J# distribution
package referirse a los links de los sitios de Microsoft brindados más abajo.
.NET Framework
J# distribution package
DBMS (por ejemplo SQL Server)
Cliente del DBMS utilizado.
J# distribution http://msdn.microsoft.com/vjsharp/downloads/howtoget.asp
package 1.1
En el CD de este curso se incluye una copia del driver .NET Framework 1.1 y una
copia de J# distribution package.
Oracle
Se debe tener el Cliente de Oracle versión 8.1.7 o superior, de esta forma se
instala el Data Provider correspondiente.
El valor “Server Name” de las Dbms option hace referencia al nombre del
Server definido en la instancia del Oracle, no al nombre del equipo.
SQL Server
Si utiliza la versión de DBMS: 6.5, en el cliente debe estar instalado el cliente
de Sql Server 6.5. El driver recomendable es el provisto en la instalación de
esa versión.
Se recomienda utilizar la versión del DBMS 7.0 o 2000 SP1. Esto se debe
principalmente a que Sql Server 6.5 realizaba lockeos por página y no por
registro.
Informix
Versión de DBMS: 7.0 o Informix Foundation 2000. En el cliente debe estar
instalado el cliente con la versión correspondiente. Driver recomendable: Los
drivers se encuentran en el CD de instalación de Informix. (Son de Intersolv o
Informix).
INTRODUCCIÓN
Información general
El generador .NET permite generar tanto aplicaciones GUI como aplicaciones WEB,
así como también permite generar tanto aplicaciones en 2 capas como
aplicaciones distribuidas.
Una aplicación GUI (Graphical User Interface) tiene interfaz gráfica Windows,
compuesta básicamente por los objetos transacciones, work panels,
procedimientos y reportes. Una aplicación WEB, por su parte, tiene interfaz html y
se ejecuta dentro de un browser. Este tipo de aplicaciones se desarrollan
básicamente con los objetos WEB de GeneXus: web panels y web components.
Además, al generar en un ambiente web, se generarán las transacciones con su
form web.
Vale aclarar que las aplicaciones GUI generadas pueden ser ejecutadas tanto en
Intranet como en Internet. Lo que diferencia a una aplicación GUI, de una
aplicación WEB, es la interfaz: las aplicaciones GUI tienen interfaz gráfica Windows
(y el cliente deberá tener instalados los archivos de clase necesarios), mientras que
las aplicaciones WEB tienen interfaz HTML (y no se requerirá bajar archivos de
clase, por tratarse de una aplicación 100% resuelta en el servidor). El único
requerimiento para ejecutar una aplicación WEB, es un browser.
Web Services
En los últimos tiempos ha surgido con mucha fuerza el concepto de web services,
incluso afirmándose que cambiaría la forma de programar las aplicaciones
orientadas a Internet hacia una arquitectura orientada a servicios. Todo esto se ha
visto potenciado luego del anuncio de Microsoft de su nueva estrategia que se basa
en el modelo de web services.
Un web service es una aplicación que puede ser descripta, publicada, localizada e
invocada a través de una red, generalmente Internet. Los web services combinan
los mejores aspectos del desarrollo basado en componentes y la Web.
Al igual que los componentes, los web services son funcionalidades que se
encuentran dentro de una caja negra, que pueden ser reutilizados sin preocuparse
de cómo fueron implementados. A diferencia de la actual tecnología de
componentes, no son accedidos por medio de protocolos específicos del modelo de
objetos como ser RMI, DCOM o IIOP; sino que son accedidos utilizando protocolos
web como ser HTTP y XML.
La interfase de los web services esta definida en términos de los mensajes que el
mismo acepta y retorna, por lo cual los consumidores de los web services pueden
ser implementados en cualquier plataforma y en cualquier lenguaje de
programación, solo tiene que poder crear y consumir los mensajes definidos por la
interfase de los web services.
http://www.artech.com.uy/gxdlsp/pub/iehelp.htm?genexus/internet/technicalpaper
s/web_services.htm
Hoy en día las aplicaciones Web han alcanzado el mismo nivel de sofisticación de
interfaz que cualquier aplicación Win. Debido a las ventajas que presentan
(facilidad en la instalación de la aplicación, solo se requiere un browser en el
cliente; alta escalabilidad), han marcado una tendencia en soluciones de software.
Normalmente, si se crear una nueva aplicación, se recomienda es implementar una
solución Web.
Conexión a la base de datos
El generador .NET permite generar aplicaciones que se conecten con la base de
con ODBC y para algunos de los DBMS podemos utilizar el protocolo ADO.NET.
Informix
Oracle
PostgreSQL
SQL Server.
SQL Server
Oracle
Acceso ODBC
ODBC(Open DataBase Connectivity) es un estándar de acceso a Bases de Datos desarrollado
por Microsoft, su funcionalidad es permitir realizar la conexión de la aplicación con la base de
datos, sin necesidad de conocer el DBMS donde están almacenados los datos. ODBC es una
capa intermedia entre la aplicación y el DBMS, el propósito de esta capa es traducir las
consultas de datos de la aplicación en comandos que el DBMS entienda.
Acceso ADO.NET
ADO.NET es un conjunto de librerías utilizadas para el acceso a datos, las cuales
están contenidas dentro del .NET framework. Los cambios con respecto a la
metodología que se utilizaba anteriormente para el acceso a los datos están
relacionados con la funcionalidad, rendimiento e interoperabilidad con una forma
estándar de representación de datos a través de XML.
Caching
Pool de Conexiones
Transacciones
El comportamiento y las facilidades de las transacciones pueden diferir según el generador
utilizado. A continuación se presentan las características de los objetos de tipo transacción
generados en .NET.
Tipo de Diálogo
Una de las principales características de una aplicación desarrollada con el
generador .NET está en la implementación del diálogo de las transacciones, el cual
llamamos diálogo a pantalla completa “Full Screen”.
Por defecto las aplicaciones .NET no cuentan con la posibilidad de realizar una
validación de los datos ingresados en las transacciones a medida que se navega por
las mismas, sino que la validación se realiza una vez ingresados todos los datos, al
presionar el botón de Confirmar.
Del mismo modo, contamos con una propiedad del modelo que permite optar por
validación del lado del cliente (“Client Side Validation”) adicionalmente a la
validación que se realiza en el servidor.
Del mismo modo, se debe tener en cuenta que si se quiere borrar una línea de la
grilla correspondiente al segundo nivel, primero se debe presionar botón “Supr” o
“Del” del teclado y luego presionar el botón de Actualizar o Confirmar de la
transacción.
Values
Yes: Se realizar las validaciones y cálculos mientras se están ingresando los
datos.
No: No se realiza las validaciones y cálculos mientras se están ingresando los
datos. Todas las validaciones y cálculos se realizan una vez que el usuario
active el evento “Enter”.
Valor predeterminado = No
Consideraciones
Las aplicaciones con interfaz Win para los generadores .NET en el caso que se utilice la
validación a nivel del servidor (Propiedad “Client side validation = No”), tienen un
comportamiento particular, algunos puntos destacables son:
Dado que los generadores .NET cambian la descripción del botón Confirmar, si el usuario
lo cambia manualmente no obtendrá el efecto deseado.
Los tiempos para disparo de reglas son sólo al entrar y al confirmar la transacción. No es
posible disparar reglas entre un atributo y otro con reglas 'after(attribute)'. Si es posible
usar el evento IsValid.
Si en una transacción de dos niveles, con cabezal y líneas, se tiene una regla condicionada
para cargar valores en las líneas, éstas se van a agregar luego de la confirmación de toda la
transacción, no al pasar del cabezal a la grilla.
Si hay dos prompts, no es posible filtrar en el segundo por un atributo de la extendida del
primero.
De esa forma se tendrá una validación a nivel del cliente, adicionalmente a la que se realiza a
nivel del servidor.
Disparo de reglas
La validación a nivel de cliente no evita que se realice la validación a nivel del servidor. Esta
última siempre se realiza para asegurar la integridad de los datos y evitar realizar bloqueos de
registros mientras el usuario final está ingresando datos.
Por esta razón, las reglas de una transacción pueden ejecutarse más de una vez. Es necesario
entonces tener esto en cuenta, si las reglas invocan programas que actualizan la base de datos.
Por lo tanto, para que los diferentes disparos de las reglas no afecten el comportamiento de la
aplicación, se recomienda que las reglas sean idempotentes. Eso significa que no importa
cuántas veces se dispare una regla siempre debe producir el mismo resultado.
De igual forma, si desde las reglas de una transacción, se invoca a un procedimiento que
devuelve un valor, esa regla también será idempotente ya que no importa cuántas veces se
ejecute el procedimiento, siempre devolverá el mismo resultado.
En cambio, si se invoca a un procedimiento desde las reglas de una Transacción, para numerar
automáticamente un atributo, ese procedimiento se ejecutará al pasar por el atributo y
nuevamente al confirmar la Transacción, pero el resultado en ambas ejecuciones será
diferente, ya que la primera vez retornará un valor X, y la próxima vez que se ejecute
devolverá el valor X+1, por lo tanto esta regla no es idempotente.
Propiedad Confirmation
Una propiedad a nivel del modelo y de cada transacción, es trabajar con y sin
confirmación. Si se opta por trabajar “con” confirmación, al momento de confirmar
se disparan las reglas, se efectúan las validaciones de integridad referencial, se
cargan los atributos de la tabla extendida, pero no se graban directamente los
datos. En vez de esto, se le solicita al usuario confirmación para hacerlo. Para
entonces, el botón Add habrá cambiado su caption a Confirm, y en la barra de
estado se solicitará ‘Please confirm the data’.
Manejo de bitmaps
Si se utiliza la propiedad Confirmation, el código .NET generado irá cambiando el
caption del botón ‘Confirmar’. Por ello, si el usuario lo cambia manualmente no
obtendrá el efecto deseado.
Se puede optar por utilizar un bitmap para el botón Confirm en lugar del Caption.
En las propiedades del botón Confirmar, lo único que debe seleccionarse es que se
manejará Bitmap en vez de Caption, sin embargo no se debe indicar un path
específico, sino que el generador .NET utiliza un conjunto de Bitmaps por defecto.
Confirm
Delete
Update
A*
(C*
(E*
F)
Vale aclarar que lo que no se soporta es la generación del programa
correspondiente a la transacción para la ejecución de la misma; pero si, se
soportan estas transacciones en lo referente al diseño de las estructuras de la base
de datos que éstas determinan. Es decir, no se pueden ejecutar transacciones en
.NET con estas estructuras, pero sí son tenidas en cuenta al crear y reorganizar la
base de datos.
El generador .NET permite que las aplicaciones de los usuarios GeneXus continúen
evolucionando tecnológicamente sin necesidad de reescribirlas. Es decir, del mismo
modo en que pudieron ser migradas de un entorno de sólo texto a un entorno
Windows, ahora pueden ser migradas automáticamente para ejecutar en Internet y
ambientes distribuidos.
User interface ofrece 2 valores posibles: Win Form y Web Form. Aquí se debe
seleccionar el tipo de interfaz que se desee utilizar para el ambiente principal. El
valor Web Form permite generar todos los objetos GeneXus salvo work panels,
menu y menu bars.
El valor Win Form, por su parte, permite generar todos los objetos GeneXus,
excepto los web panels y themes.
Cada objeto main se genera en el ambiente asociado a dicho objeto. Y cada objeto
no main, se genera en los ambientes de los mains que lo llamen. A modo de
ejemplo, una transacción con form Win y form Web será generada en ambiente
Web si es llamada por un Web Panel y a su vez en ambiente Win si es llamada por
un Work Panel.
General
Application namespace
Compiler Flag
Access Method
User interface
Use .NET controls
Propósito
Determina el namespace de la aplicación. Los programas generados por
GeneXus y compilados con C# se encuentran disponibles bajo el namespace
indicado por esta preference.
Valores
El nombre del namespace.
Propósito
Determina si los exe y dll generados tienen un “Strong Name”, es decir un
nombre único.
Permite acceder a una serie de ventajas que provee el .NET Framework, como
por ejemplo, Depoyment en el GAC (Global Assembly Cache), configuración de
la seguridad para el assembly (permite configurar la seguridad para correr un
assembly que viene de una zona no segura).
Valores
Yes: El programa generado tiene un “Strong Name.
Valor predeterminado = No
Propósito
Determina el número de versión a ser asignado al “Strong Name assemblies”.
Propósito
La información de esta propiedad se utiliza para la compilación del main. Es
útil por ejemplo para generar información de debug (incluyendo el string
“/debug”) o para incluir una dll dentro del namespace (/r:xxx.dll ).
Propósito
Determina que tipo de acceso se va a realizar a la base de datos.
Valores
ODBC: Acceso vía ODBC
Cache de sentencias
ADO.NET nos brinda la posibilidad de mantener un “cache” de sentencias con sus resultados,
de forma tal de realizar una primera consulta sobre la base de datos y las siguientes sobre una
memoria “cache”, lo cual acarrea un aumento en la performance de la aplicación ya que se
reduce el costo de acceso al servidor de base de datos.
Es común, que en la mayoría de los sistemas, accedamos a datos que no cambian con mucha
frecuencia, con lo cual estamos realizando recorridas sobre la base de datos para obtener la
misma información en muchas ocasiones, esto originó que en ADO.NET se implementara un
mecanismo de “cache” en memoria, de rápido acceso, con los resultados de las sentencias más
frecuentes.
Valores
Valor predeterminado = No
Propiedad Hardley Ever TTL (mins)
Propósito
Cuando se lee una tabla que tiene en la “Propiedad Change frequency” el valor “Hardly
Ever”, se mantiene en el “cache” durante el tiempo en minutos definido en esta
propiedad.
Valor predeterminado = 60
Valores
Propósito
Uno de los costos más importantes en las operaciones ODBC/JDBC es el de
preparar las sentencias SQL. La preparación incluye la compilación y
validación de la sintaxis de dicha sentencia por parte del servidor.
Propósito
Permite especificar una lista de programas almacenados en la base de datos
(procedimientos almacenados). Los nombres de los programas deben estar
separados por espacios.
Nota:
En .NET, cuando el generador encuentra un “call” a un programa incluido en
la lista, hace una llamada vía ODBC, en vez de una llamada normal.
Propósito
Determina la forma de hacer el “rendering” de los controles HTML (para
EditBox, CheckBox, RadioButtons, ListBox y Buttons), en web panels y web
transactions. Por defecto esta en "Yes" lo que indica que el “rendering” se
hace utilizando controles .Net para generar el HTML necesario, este
aprovecha ciertas características del Internet Explorer para representar
mejor los controles. Estando en "No" indica que use el “rendering Standard”
generado por GeneXus en todas sus plataformas, este último garantiza
compatibilidad en el “look and feel” entre las distintas plataformas Web
generadas por GeneXus.
Valores
Yes: Utiliza “rendering” que se hace utilizando controles .Net para
generar el HTML necesario
No: Utiliza el “rendering Standard” generado por GeneXus en todas
sus plataformas
Propósito
Permite cambiar el bitmap asociado al boton “Confirm” en vez del caption
correspondiente a cada caso.
Valores
Los bitmaps por defecto son:
Agregar (gxconfirm_add.gif)
Confirmar (gxconfirm_cnf.gif)
Borrar (gxconfirm_dlt.gif)
Modificar (gxconfirm_upd.gif)
Opciones de ejecución
Para configurar la ejecución de una aplicación GUI .NET, alcanza con definir el
camino del compilador (csc.exe), este lo provee el framework SDK y se encuentra
bajo el directorio de instalación del mismo en:
client.exe.config
Permisos .NET
Permisos para ejecución de objetos remotos
El esquema de seguridad para los Assemblies (dlls y exes) de .NET es un esquema bastante
complejo y seguro a la vez. Para configurar el ambiente de desarrollo es necesario tener
algunas consideraciones.
Para poder trabajar con modelos remotos, es necesario deshabilitar el control de seguridad de
.NET. En otro caso no es posible ejecutar localmente los objetos web que se encuentran en
otra máquina a través de la red, o sea, ejecutar en el servidor web objetos que no están
físicamente en la misma máquina que este. Esta es una restricción de seguridad del framework
.NET.Esto involucra únicamente el ambiente de desarrollo, en la instalación final (donde el
server y las DLLs están en la misma máquina) no es necesario y no se recomienda deshabilitar
la seguridad.
Local Intranet: Tienen un nivel diferente, más bajo que el “Full Trust”, por tanto
no pueden acceder a un conjunto de recursos, como ser el “file system”.
Internet: Tienen el nivel de confiabilidad más bajo y en general no pueden realizar
tareas sin la aprobación del usuario.
1) Moverse al directorio:
2) Ejecutar el comando:
mmc mscorcfg.msc
Entre otras cosas hay una entrada para "Runtime Security Policy".
Crear un archivo .aspx por cada web panel, web procedure, etc., en el directorio
virtual. No interesa el contenido del archivo, lo único que interesa es que el
archivo exista para que el IIS pueda checkear los permisos.
La forma de trabajo que vamos a tener a lo largo del curso es mostrarles primero
cómo realizar cada paso, e inmediatamente después de terminar de definirlo, Ud.
deberá hacer lo mismo por sí solo, siguiendo las instrucciones indicadas.
En primer lugar, debe crearse la Base de Conocimiento (en GeneXus 8.0 o superior)
y consolidar el archivo NETCourse.xpz, que contiene algunas transacciones, work
panels, reportes, procedimientos y web panels.
Comencemos por ponerle un nombre al prototipo (por ejemplo: First .NET Model).
Luego, pasaremos a ingresar los valores solicitados en cada unos de los pasos
para configurar el modelo.
Language: .NET
DBMS: SQLServer
Paso 2 – Model & DBMS Properties (Part 1)
Por ejemplo, no es posible realizar una compilación cuando un objeto llama a otro
y el llamador utiliza un tipo de datos numérico en un parámetro y el llamado lo
recibe en un campo de tipo carácter.
Introducción
En este capítulo presentaremos las opciones de ejecución para un modelo Web,
desarrollado utilizando el generador .NET. También mostraremos paso a paso la
configuración y ejecución de una aplicación Web.
Opciones de ejecución
Para configurar la ejecución de una aplicación WEB en .NET, debemos configurar
dos propiedades, por un lado tenemos que definir el camino del compilador
(csc.exe), este lo provee el framework SDK y se encuentra bajo el directorio de
instalación del mismo en:
Y por otro lado debemos especificar el “directorio virtual”, el cual determina la URL
base de ejecución, esta contiene el directorio virtual a ser creado (si no existe), por
GeneXus en el Internet Information Service (IIS) local. El momento de la creación
es luego de la compilación y reorganización
Para ingresar a estas propiedades debe ir a: “File/Edit Model/ Botón Execution”.
La forma de trabajo que vamos a tener a lo largo del curso es irles mostrando
primero cómo realizar cada paso, e inmediatamente después de terminar de
definirlo, Ud. deberá hacer lo mismo por sí solo, siguiendo las instrucciones
indicadas.
Comencemos por ponerle un nombre al prototipo (por ejemplo: .NET Web Model).
Luego, pasaremos a ingresar los valores solicitados en cada unos de los pasos
para configurar el modelo.
Language: .NET
DBMS: SQLServer
Distribución
Detallaremos a continuación los pasos necesarios para realizar la distribución de
una aplicación .NET 2 capas.
http://msdn.microsoft.com/netframework
En el cliente debe estar instalado además el J# distribution package 1.1, que puede
obtenerse de:
http://msdn.microsoft.com/vjsharp/downloads/howtoget.asp
Para ver los requerimientos de software del .NET Framework y del J# distribution
package referirse a los links de los sitios de Microsoft brindados arriba.
Además debemos tener instalado el cliente del DBMS que se utilice, por más
información ver Requerimientos de software.
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/cpguide/html/cpcondeploymentscenarios.asp
Si se utiliza tipos de datos ExcelDocument, WordDocument o MailMessage, será
necesario registrar la ‘gxoffice2.dll’, de la siguiente forma: regsvr32.exe <Ruta a
gxoffice2.dll>\gxoffice2.dll. Esto es válido tanto para el cliente como para el
servidor de aplicaciones.
Reorganización:
Seguidamente se detallan los pasos necesarios para realizar la reorganización de
la base de datos:
Las imágenes
El archivo Web.config
Es el código que apunta a .NET y que contiene cierta información extra metadata para
describirse a sí mismo. Si bien tanto el “managed code” como el que no lo es, pueden correrse
en una máquina de ejecución, sólo el “managed code” contiene la información que permite
que la máquina de ejecución garantice, por ejemplo, seguridad en la ejecución e
interoperabilidad.
Managed Data
Dependiendo del lenguaje que se esté usando, el apuntar a CLR puede imponer ciertas
restricciones respecto a las funcionalidades disponibles. Por ejemplo, C++ pierde la herencia
múltiple. Tal como ocurre con el “managed code” y el que no lo es, se pueden tener “managed
data” y no, en las aplicaciones .NET (datos a quienes no se eliminan los datos superfluos o
basura pero que en cambio son controlados por el “managed code”).
El CLR usa algo llamado CTS para una seguridad de tipo estrictamente reforzada. Esto asegura
que todas las clases sean compatibles entre sí, describiendo los tipos de un modo común. CTS
define como trabajan los tipos en la máquina de ejecución (sus declaraciones y usos), lo que
habilita a los tipos en un lenguaje a operar con tipos en otro lenguaje, incluyendo el manejo
entre distintos lenguajes por excepción.
Además de asegurar que los tipos sean usados adecuadamente, la máquina de ejecución
también asegura que el código no intente acceder la memoria que no le ha sido asignada (es
decir que es un código con seguridad de tipo).
Assemblies
Todos los Assemblies, contienen un Manifiesto que contiene el nombre, versión y ubicación
del Assembly, además de una lista de los archivos que forman el Assembly, las dependencias
que tiene el Assembly, y las funcionalidades que son exportadas por el Assembly.
Los binarios .NET contendrán entonces un ‘stub’ Win32 – para usar .NET para correr el
programa o para decir algo como: “Este programa requiere .NET para ejecutarse” si no está
disponible.
El primer bloque de datos dentro del envoltorio PE es el mismo IL. El IL luce aproximadamente
como un assembler. Este es el bit que realmente se compila y ejecuta.
El segundo se llama metadata. Describe el contenido del archivo, por ejemplo, qué métodos
proporciona, qué parámetros toma y cuáles retorna. También contiene claves públicas de
componentes externos.
El tercero es el manifiesto. Describe qué otros componentes necesita el ejecutable para poder
asegurar que los componentes externos son los que el ejecutable piensa que son. Al correr el
ejecutable, el CLR usa compilación Just-In-Time. A medida que cada método es invocado en el
ejecutable, se le compila al código nativo; las siguientes llamadas al mismo método no deben
someterse a la misma compilación; de esta forma, la demora solo tiene lugar en una ocasión.
La compilación JIT trae a colación algunos temas. Uno es que requiere recursos, en particular
memoria y tiempo del procesador. Para resolver esto, MS tiene dos compiladores JIT: uno
normal, que optimiza el código compilado bastante bien pero puede consumir mucho tiempo
del procesador y/o memoria, y un "EconoJIT". EconoJIT puede no optimizar tanto los códigos,
pero consume menos memoria y tiempo del procesador al ejecutarse. También permitirá que
su programa de ejecución descarte la forma compilada de un método, liberando así la
memoria, a cambio de tener que compilarlo nuevamente.
Es un área de memoria reservada que utiliza .NET para almacenar los assemblies de las
aplicaciones que corren en una máquina. Para que un assembly sea almacenado en la GAC,
debe tener un "Strong Name".
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/cpguide/html/cpconglobalassemblycache.asp
Strong Name
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconstrong-
namedassemblies.asp