Manual_de_Generador_NET_9

download Manual_de_Generador_NET_9

of 34

Transcript of Manual_de_Generador_NET_9

Manual del Generador .NET GeneXus 9.0

Page 1 of 34

Manual del Generador .NET GeneXus 9.0Enero 2007

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0IntroduccinObjetos Ambientes

Page 2 of 34

RequerimientosRequerimiento software Plataforma .NET GeneXus Manejador de base de datos Servidor Web Requerimientos de hardware

Modelo WebConfiguracin de un modelo Propiedades especficas General section .Net Specific Section ADO .NET Specific Section Client Server specific Section Opciones de ejecucin Generacin de objetos Compilacin Avanzados Generacin de trace Archivo de configuracin Puesta en produccin Instalacin en el servidor Requerimientos Instalacin en el Cliente

Modelo GUIConfiguracin de un modelo Propiedades especficas General .NET Specific Section ADO.NET Specific Section Transaction configuration Section Client Server Opciones de ejecucin Generacin de objetos Compilacin Avanzados Generacin de trace Archivos especficos Puesta en produccin Instalacin en el servidor Instalacin en el Cliente

Modelo GUI Aplicaciones DistribudasConfiguracin de un modelo Arquitectura Propiedades Especficas Model Properties Procedure Properties Transaction Properties Work Panel Properties Generacin de objetos Servidores de aplicaciones IIS como servidor de aplicaciones Servidor de aplicaciones GeneXus Ventajas y desventajas Avanzados Generacin de trace Pool de conexiones Archivos de configuracin Puesta en produccin Requerimientos

GeneralidadesAcceso a la base de datos Cache de sentencias Tipos de datos Generacin de programas de reorganizacin Transactional Integrity Transacciones de ms de un nivel (GUI) Smart Static Panels (Web) Llamadas a Stored Procedures Comando Submit Submits queued components (COM+) Requerimientos Generacin Configuracin, ejecucin Consideraciones Publication assistant (GUI) Descripcin Requerimientos Comando Csharp Permisos .NET Permisos para ejecucin de assemby remoto Autorizacion por Web Panel

ApndiceTips Como incluir una dll COM ? Como generar cdigo de maquina a partir de cdigo IL ? Glosario .Net remoting .NET Channel Services ADO.NET ASP .NET Configuration Section Assembly

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0Code Access Security COM+ Common Type System - CTS GeneXus .NET Generator Global Assembly Cache (GAC) Log4net Managed Code Managed Data ODBC Session state Strong Name WMI (Windows Management Instrumentation) FAQ: Errores comunes Problemas en ejecucin Problema en compilacin Problemas en reorganizacin

Page 3 of 34

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0

Page 4 of 34

IntroduccinEl generador .NET, permite el diseo de Aplicaciones Web y GUI, a travs de la plataforma .NET, asi como aplicaciones GUI distribuidas (3 capas) El generador aprovecha todas las cualidades de .NET, brindando las ventajas que este tiene (reutilizacin de classes, seguridad, deployment, etc) Una aplicacin GUI (Graphical User Interface) tiene interfaz grfica Windows, compuesta bsicamente por los objetos Transacciones, Work Panels, procedimientos y reportes. Una aplicacin WEB, por su parte, tiene interfaz html y se ejecuta dentro de un browser. Este tipo de aplicaciones se desarrollan bsicamente con los objetos WEB de GeneXus: web panels, procedimientos, web services y reportes con salida PDF. Adems, al generar en un ambiente web, se generarn 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 aplicacin GUI, de una aplicacin WEB, es la interfaz: las aplicaciones GUI tienen interfaz grfica 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 aplicacin 100% resuelta en el servidor). El nico requerimiento para ejecutar una aplicacin WEB, es un browser. Las aplicaciones GUI pueden generarse en 2 capas o distribuidas (utilizando el protocolo .NET Remoting para la comunicacin entre el cliente y el servidor de aplicaciones).

ObjetosLos programas generados son fuentes de cdigo C# (.cs) , y compilados a assemblies (dlls o Exe) en cdigo comn (IL Intermediate Language) las cuales en tiempo de ejecucin son interpretados por la mquina virtual de .NET.

AmbientesLas aplicaciones se comunican con la base de datos a travs de ADO.NET u ODBC, siendo el primero el mtodo nativo de acceso (y el recomendado). Los posibles DBMS a utilizar con el generador .NET, son todos los DBMS soportados por GeneXus: DB2 UDB for iSeries, DB2 Universal Database, Informix,MySQL, Oracle, PostgreSQL y SQL Server. En el caso de optar por ADO.NET tener en cuenta que no es soportado por todos los DBMS (ver ms en Requerimientos). El generador tambin nos brinda la posibilidad de realizar Mantenimiento de la base de datos, es decir crearla y reorganizarla.

RequerimientosRequerimiento softwarePLATAFORMA .NETPara el desarrollo de aplicaciones es necesario instalar: Release del Framework Redistributable 1.1 y J# Version 1.1 Redistributable Package o Release del Framework Redistributable 2.0 y J# Version 2.0 Redistributable Package Para ver los requerimientos y descargarlos de forma gratuita dirigirse a: .NET .NET Framework http://msdn.microsoft.com/netframework J# distribution http://msdn.microsoft.com/vjsharp/downloads/howtoget.asp package El Visual J# es requerimiento para las aplicacin GUI y para los reportes PDF de las aplicaciones Web.

GENEXUSDevelopment environment GeneXus 9.0 Generador .NET 9.0

MANEJADOR DE BASE DE DATOSSQL Server ADO.NET utiliza el Data Provider de Microsoft para SQL Server (el cual se instala con el framework). No se requiere el cliente SQL Server Oracle Se debe tener el Cliente de Oracle versin 8.1.7.5 o superior, de esta forma se instala el Data Provider correspondiente. El valor Server Name de las Dbms option hace referencia al Service Name definido en la instancia del Oracle. La implementacin utiliza el Data provider de Microsoft para Oracle (System.Data.OracleClient), el cual requiere el cliente. DB2 UDB for iSeries Se necesita la V5R3 del iSeries Client Access con un service level igual o superior a SI20055. La menor versin testeada del server es la V5 R1 Se puede obtener desde:http://www-03.ibm.com/servers/eserver/iseries/access/casp.html Al crear un modelo se debe copiar la dll IBM.Data.DB2.iSeries.dll al directorio gxnet/bin si la aplicacin es web o gxnetwin/bin win. DB2 Universal Database Se necesita tener instalada la versin 8.1.3 o superior. La dll es IBM.Data.DB2.dll, se debe copiar a los directorios gxnet/bin si la aplicacin es web o gxnetwin/bin win. MySQL MySQL soporta diferentes motores, GeneXus utiliza el InnoDB (http://dev.mysql.com/doc/mysql/en/InnoDB.html). La menor versin soportada del server es 3.23.58. El driver cliente para .Net se puede obtener desde: http://sourceforge.net/projects/mysqldrivercs. Luego de instalado se debe tener los archivos: mysql.dll Biblioteca .Net de acceso a MySQL MySQLDriverCS.dll se debe copiar bajo el directorio gxnet/bin si la aplicacin es web o gxnetwin/bin win Informix El acceso ADO.NET, es soportado a partir del Upgrade 2 del generador El Data Provider (que viene con el IBM Informix Client SDK V2.90.TC4) se puede obtener desde: http://www14.software.ibm.com/webapp/download/preconfig.jsp?id=2005-08-15+14%3A41%

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.03A25.229714R&S_TACT=104CBW71&S_CMP=&s=

Page 5 of 34

Luego de instalado, para crear un modelo se debe copiar la dll IBM.Data.Informix.dll al directorio gxnet/bin si la aplicacin es web o gxnetwin/bin win. Dicha dll se encuentra en el directorio: \IBM\Informix\Client-SDK\bin Las posibles keys del connection string que se pueden setear en las DBMS Properties Additional connection string Attributes estn en: http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.netpr.doc/netprmst76.htm Se debe configurar en las DBMS options del modelo Server Name = El Host name del servidor Informix server instance = El nombre de la instancia del server Previo al upgrade 2 es necesario acceder con ODBC, la versin del DBMS puede ser 7.0 o Informix Foundation 2000. En el cliente debe estar instalado el cliente con la versin correspondiente. Se recomiendan los drivers de Intersolv o Informix. PostgreSQL El acceso ADO.NET, es soportado a partir del Upgrade 2 del generador El data provider es distribuido por el generador y consiste en dos dlls: -Npgsql.dll y -Mono.Security.dll, es open source (LGPL) y se pueden obtener, junto con la documentacin desde: http://pgfoundry.org/projects/npgsql (Npgsql 1.0RC1: Npgsql1.0RC1-bin-ms1.1.zip) Npgsql is a .Net data provider for Postgresql. It allows any program developed for .Net framework to access database server. It is implemented in 100% C# code. Works with Postgresql 7.x and 8.x. Y no requiere instalar ningun cliente. Las posibles keys del connection string que se pueden setear en las DBMS Properties Additional connection string Attributes estan en: http://npgsql.projects.postgresql.org/docs/manual/UserManual.htm

SERVIDOR WEBEn el caso de implementar una aplicacin Web deber contar con el servidor web Internet Information Server 5.0 o superior (Por ms informacin ver requerimientos de ASP.NET del .net framework 1.1 o 2.0). IMPORTANTE: El mismo debe ser instalado antes del .NET Framework. Si no fuera as ocurrira el error 404 (resource cannot be found), ver solucin aqu. Los requerimientos en el servidor de produccin son similares, por mas detalles ver las secciones de puesta en produccin

Requerimientos de hardwarePara utilizar las aplicaciones .NET generadas, es necesario tener un mnimo de 128MB de RAM. El procesador en principio no es tan crtico como la memoria RAM, pero se recomienda utilizar al menos un Pentium de 133 para compilar/ejecutar las aplicaciones. Se sugiere ver la pgina de Microsoft para obtener los requerimientos del .NET Framework y J# distribution package.

Modelo WebConfiguracin de un modelo1. Crear un modelo de prototipo o produccin con el generador .NET Language = .NET User Interface = Web

2. Configurar la Model Property Access Method en ADO.NET|ODBC 3. Configurar las Dbms Options del modelo: Access technology to set: ADO.NET|ODBC Database name: Server name: [,] Use trusted connection: No User id: User password: 4. Configurar las propiedades de ejecucin : Compilador (csc.exe, se encuentra bajo directorio de instalacin del framework) Nombre del directorio virtual (services por defecto) 5. Ejecutar la creacin de la base de datos. 6. Generar programas 7. Compilar y Ejecutar Al compilar Webxxx se genera el assembly Hwebxxx.dll (cdigo IL) bajo el directorio bin y se agrega una entrada en el web.config o no (dependiendo de la propiedad HttpHandlerFactory ) La salida de la compilacin se envia al archivo Runout.log. En ejecucin se invoca al Hwebxxx.aspx Notas: n En el caso de configurar trusted connection (paso 3) es necesario configurar permisos de ASP.NET n En el caso de utilizar acceso ODBC es necesario configurar en las DBMS Options la Access technology to set: ODBC (Paso 3 ) y la Model Property Access Method en ODBC tambin. Si se desea conectarse a travez de un data source ODBC, el mismo debe ser de sistema. n Luego de compilar, GeneXus crear un directorio virtual con el nombre especificado en el IIS local apuntando al \\web. n En caso de ejecutar desde un directorio de la red interna, para los pasos 5 y 7, tener en consideracin la configuracin de: Permisos .NET

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0y Permisos del servidor de Web para ejecutar una aplicacin.

Page 6 of 34

Propiedades especficas del Generador .NETPara ingresar a estas propiedades debe ir a: File/Edit Model/ Botn Properties.

GENERAL SECTIONGenerate developer menu makefile Indica si se generarn los archivos necesarios para compilar el developer menu. El valor en NO es til para evitar el armado del makefile del developer menu, este es muy costoso ya que debe generar todos los response file (*.rsp) cada vez que se compila un objeto. Valor predeterminado: Yes

.NET SPECIFIC SECTION.Net Application Namespace Determina el namespace de la aplicacin. Los programas generados por GeneXus y compilados con C# se encuentran disponibles bajo el namespace indicado por esta propiedad. Es til para usuarios avanzados que quieran algn tipo de deployment en el GAC (Global Assembly Cache). Valor predeterminado = GeneXus.Programs Generate strong named assemblies Determina que los objetos main y/o dlls (assemblies) generados tengan un nombre nico o no. Esto permite acceder a un conjunto de ventajas importantes que provee el .Net Framework, como deployment en el GAC o configuracin de seguridad para el assembly Valores Yes: El programa generado tiene un Strong Name. No: El programa generado no tiene un Strong Name. Valor predeterminado: NO Para generar el Key que identifica al objeto, el generador al momento de compilar busca un key.snk en el directorio dataxxx, si no hay: genera uno. (se requiere el SDK en el ambiente de desarrollo para ejecutar el sn.exe y generar el archivo con la Key). Adems se debe configurar en la variable de ambiente path el camino a sn.exe para que la encuentre el compilador ( "C:\PROGRAM FILES\MICROSOFT.NET\SDK\V1.1\bin" ), de lo contrario da el error "Before compile error: The system cannot find the file specified" Los programas estndar provistos por el generador tienen strong names independiente del valor de la propiedad. Assemblie versin number Determina el numero de versin a asignar a los assemblies que tienen strong name. La propiedad solo aplica cuando Generate strong named Assemblies esta en Yes Valor predeterminado: 1.0.0.0 Esta informacin de versin se almacena en generacin en el archivo GxAssemblyInfo.cs Compiler Flag La informacin de esta propiedad se incluir en el .rsp que se usa para compilar los assemblies. Es til por ejemplo para generar informacin de debug (incluyendo el string /debug) o para incluir una dll dentro del namespace (/r:xxx.dll ). Config HttpHandlers Section La informacin de esta propiedad determina cmo se mapean los assemblies en ejecucin. Valores HttpHandler for each object: Una entrada en el web.config por cada assembly. Aqu se mapea el request del aspx con el assembly GeneXus.Programs.object (bin\object.dll) HttpHandlerFactory: Hay una sola entrada para todos los objetos en el web.config, en donde se indica un objeto al que pedirle el mapeo ASHX: No hay mapeos en el web.config, se genera un archivo ashx por cada objeto que realiza el mapeo con el assembly GeneXus.Programs.object El valor HttpHandler for each object es ms rpida en ejecucin pero mas lento en la carga inicial. Adems permite tener objetos (*.aspx) no generados con GeneXus, con HttpHandlerFactory esto no es as. HttpHandlerFactory es mas rpido para prototipar pero mas lento en cada llamada porque el mapeo se resuelve en cada requerimiento. Esta opcin puede enviar mensajes de error poco descriptivos, lo que dificulta la prototipacin. El valor ASHX, es similar a Handler Factory, crea un archivo fsico con el nombre del objeto y extensin ashx, el cual es invocado en ejecucin. Valor predeterminado = HttpHandler for each object Access Method Determina qu tipo de acceso se va a utilizar para acceder a la base de datos. El mtodo de acceso especificado ser utilizado para acceder a cada uno de los data stores. Valores ODBC: Acceso va ODBC ADO.NET: Acceso va ADO.NET Valor predeterminado = Depende del Dbms asociado al data store Default.

ADO .NET SPECIFIC SECTION

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0Propiedad Enable Caching Esta propiedad permite definir si se habilita el cache de sentencias. Valores Yes: Hablita el caching No: Deshabilita el caching Valor predeterminado = No Caching Section Las siguientes tres propiedades aplican cuando la propiedad Enabled Caching esta en Yes Propiedad Hardly Ever TTL (mins)

Page 7 of 34

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 = 600 Propiedad Time to Time TTL (mins) Cuando se lee una tabla que tiene en la Propiedad Change frequency el valor Time to Time, se mantiene en el cache durante el tiempo en minutos definido en esta propiedad. Valor predeterminado = 60 La diferencia entre la propiedad Time to Time y la propiedad Hardly Ever, es permitir definir distintos puntos de persistencia en las tablas del modelo. Propiedad Change frequency Si bien el cache se realiza a nivel de sentencia, es a nivel de tabla que se configura, permitiendo seleccionar el tiempo en que los datos van a persistir en memoria antes de ir a buscarlos nuevamente a la base de datos. Para poder configurar este tiempo se utiliza esta propiedad, que se configura a nivel de tablas, en modo de diseo. Valores Almost Never: Se mantienen los datos en cache indefinidamente Pretty Often: No se realiza cache Hardly Ever: Valor que se define a nivel de modelo prototipo/produccin Time to Time: Valor que se define a nivel de modelo prototipo/produccin Valor predeterminado = Pretty Often Log Level Esta propiedad permite configurar el nivel de trace de acceso a la base de datos con conexin ADO.NET. Valores 0. Off 1. Fatal 2. Error 3. Warn 4. Info 5. Debug 6. All Valor predeterminado: Off Esta propiedad escribe el tag del archivo web.config y client.exe.config (para modelos Web y Gui respectivamente). En el caso de modelos web tambien se escribe el tag

CLIENT SERVER SPECIFIC SECTIONPropiedad Maximum Cached cursors per connection Uno de los costos ms importantes en las operaciones ODBC/ ADO.NET es el de preparar las sentencias SQL. La preparacin incluye la compilacin y validacin de la sintaxis de dicha sentencia por parte del servidor. Los programas generados en .NET realizan un manejo inteligente de los cursores abiertos, de modo que no haya que volver a preparar cursores que ya fueron preparados. Para eso se mantiene un pool de cursores preparados, cuyo tamao por defecto es de 100 cursores. Si se desea cambiar este nmero, se puede cambiar el valor de esta propiedad. Valor predeterminado: 100

Opciones de ejecucinPara ingresar a estas propiedades debe ir a: File/Edit Model/ Botn Execution.

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0

Page 8 of 34

Compiler path Determina el path del compilador (csc.exe), este lo provee el framework SDK y se encuentra bajo el directorio de instalacin del mismo en \csc.exe, siendo el < NET frameworkpath> = WINNT\microsoft.net\vx.x.xxxx Virtual directory Determina la URL base de ejecucin, esta contiene el directorio virtual a ser creado (si no existe) por GeneXus en el Internet Information Service (IIS) local. El momento de la creacin es luego de la compilacin y reorganizacin.

Generacin de objetosEl proceso de generacin de un objeto consta de dos etapas:

GENERACINLuego de especificar un objeto al generarlo el generador crea por cada objeto: un archivo con el cdigo fuente en lenguaje c# (.cs), Si es un web panel o un objeto main, se crea archivo con el mismo nombre del objeto y con extensin '.rsp'. Este archivo contiene la informacin necesaria para compilarlo (fuentes que se incluyen, referencias, etc). Si es main adems se crea un archivo bld.cs que ejecuta el armado del objeto y los relacionados (llamados desde este). Dentro de los relacionados no son incluidos los otros objetos que son main ya que se arman compilndolos especficamente. Si referencia SDTs, collections o Business Components, se crea un type_.cs con la definicin del tipo estructurado referenciado. Tambien se crea el archivo gxcommon.rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos comunes a todos los assemblies (SDTs, collections).

COMPILACINEl cdigo se compila (desde el dialogo F5 del generador) y el log con el resultado de la compilacin se despliega en la pantalla y se graba en el archivo RunOut.log Como resultado de la compilacin se genera una dll con el cdigo comn de .NET (IL), este es supervisado, en tiempo de ejecucin, por un intrprete (CLR) que permite ejecutarlo convirtindolo a cdigo de maquina. El archivo Web.config o el cabezal del objeto (dependiendo de la property config httphandler section) contienen la informacin de configuracin de la aplicacin web, en este se asocia cada dll con una pgina virtual con extensin ASPX. No existe un archivo fsico aspx. nicamente con el valor Ashx de dicha property se genera un archivo fsico por cada objeto. El archivo Web.config se genera a partir del GXCFG.Web, el cual tiene una entrada para cada objeto y es el UpdateConfigWeb quien ingresa la informacin al Web.Config luego de la compilacin. El archivo web.config define un conjunto de tags no propietarios dentro de la seccin system.web. Al igual que el resto de los generadores, el generador .NET se apoya en un conjunto de programas estndar. Estos programas tienen StrongName, lo que significa que son identificables, con un nombre nico en el universo .NET. Los programas generados tambin tiene la posibilidad de configurar strong name (no as los assemblies de la reorganizacin). Esto es til para hacer deployment automtico en el Global Assembly Cache (GAC)

AvanzadosGENERACIN DE TRACEPara habilitar la generacin de trace (archivo de log) de la aplicacin, se deben configurar la propiedad Log level del modelo. Esta agrega dos configuraciones en el archivo web.config luego de la compilacin 1. Habilita la configuracin del trace con el tag threshold 2.Habilita el archivo de log Con el paso 1 si el es diferente de OFF se generan los mensajes de log, pero se envan al trace de ASP.NET y no es posible acceder al archivo de log, para esto se configura el paso 2 Por defecto los modelos Web tiene como root appender el ASPNetTraceAppender, eso significa que no genera un archivo como log, si no que manda los mensajes de log al trace de ASP.NET.

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0

Page 9 of 34

Luego de generado el log de las aplicaciones Web, para poder visualizarlo se puede acceder a la URL: http://servername/dirvirtual/Trace.axd Cuando se ejecuta una aplicacin Web remota, se debe incluir la opcin localOnly ="false" si se desea visualizar el trace desde la mquina de los clientes. Sino, solo se podr visualizar el trace desde el propio servidor web. Para visualizar el trace desde los clientes, se debe incluir la entrada: Notas: La generacin de archivos de log puede degradar la performance de la aplicacin por lo cual se recomienda en produccin tener apagada la misma. - Si se tiene el log no se genera (no se generan mensajes desde la gxclasses.dll), y no se toma en cuenta ninguna otra configuracin (por ejemplo trace o root). Desde aplicaciones web es posible generar trace a archivo. Por ms informacin acerca del log4net se puede acceder a la URL: http://log4net.sourceforge.net/

ARCHIVO DE CONFIGURACINCuando estamos trabajando con aplicaciones .NET, tenemos archivos de configuracin donde se definen determinados propiedades de las aplicaciones, como por ejemplo la informacin para la conexin a la base de datos o la configuracin de un archivo de log.

web.configSe crea cuando se genera aplicaciones web y es utilizado cuando corremos las aplicaciones bajo Internet Information Server. Contiene la configuracin sobre la ubicacin del servidor de aplicaciones, la conexin a la base de datos y la generacin del log, entre otros. Se encuentra en el directorio del modelo dataxxx y su estructura es algo similar a: . = WINNT\microsoft.net\vx.x.xxxx

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0Generacin de objetosEl proceso de generacin de un objeto consta de dos etapas:

Page 13 of 34

GENERACINLuego de especificar un objeto al generarlo el generador crea por cada objeto: un archivo .cs con el cdigo fuente en lenguaje C#. un archivo .rsp con las referencias que permiten armar el assembly que incluye el objeto. Dependiendo de la propiedad del modelo Build Assemblies, el assembly se compone de todos los elementos del folder que contiene al objeto (en caso de estar configurado By Folder), o de todo el arbol de calls si es un objeto main (en caso de estar configurado By Main). Si es main se genera un archivo call_.cs con el codigo necesario para instanciar el objeto dentro del assembly correspondiente, y un archivo bld.cs que se encarga de compilarlo a un exe. Se crea el archivo gxcommon.rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos comunes a todos los assemblies (SDTs, collections). En el caso de estar configurado el armado de assemblies con la opcin By Flder, se crea un gxobjects.rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos que se encuentran en el flder principal.

COMPILACINEl cdigo se compila (desde el dialogo F5 del generador) y el log con el resultado de la compilacin se despliega en la pantalla y se graba en el archivo RunOut.log Se genera, dependiendo de la propiedad Assemblies structure: con el valor By folder una dll (assembly) por cada Objeto folder definido en el modelo y un objeto gxobjects.dll para el folder root, con el valor By Main se genera una dll (assembly) por cada Objeto Main Adems se genera un exe por cada objeto main que invoca a dicho assembly. El cdigo es generado en un lenguaje comn de .NET (IL), el cual supervisado, en tiempo de ejecucin, por un intrprete (CLR) que permite ejecutarlo convirtiendolo a cdigo de maquina

AvanzadosGENERACIN DE TRACEPara habilitar la generacin de trace (archivo de log) de la aplicacin, se debe agregar una entrada en el archivo client.exe.config:. donde Value puede tener alguno de los siguientes valores: ALL DEBUG INFO WARN OFF La eleccin de cada valor depende del nivel de detalle que se desee visualizar en el archivo de log. El archivo client.exe.config se encuentra en el directorio del modelo (DataXXX). El valor por defecto de la salida (root appender) es RollingFile, esto significa que se generar un archivo. El archivo generado ser por defecto client.log y se generar en el directorio DataXXX\bin. Si se desea ejecutar la aplicacin por fuera de GeneXus, por ejemplo ejecutando el exe del objeto directamente desde el directorio DataXXX\bin, se debe configurar el client.exe.config de ese directorio. Es posible configurar un conjuno de propiedades del appender Rolling File como la cantidad de archivo particionados de log (maxSizeRollBackups) y el tamao de cada archivo (maximumFileSize). Por ejemplo:

ARCHIVOS ESPECFICOSArchivo Client.exe.config Este archivo contiene bsicamente la informacin para la conexin a la base de datos, la informacin de propiedades del modelo y la generacin del log. Se encuentra en el directorio del modelo dataxxx y en dataxxx\bin. Cuando la aplicacin corre desde GeneXus, se utiliza este archivo de configuracin; si se corre directamente desde el exe de la aplicacin del directorio dataxxx\bin, entonces se utiliza la que est en este directorio, es decir que toma el archivo que se encuentre en el mismo directorio de la aplicacin. Tiene una estructura:

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0 .

Page 14 of 34

Archivos GXResources.dll y Messages..dll El GXResources.dll guarda imgenes. El messages..dll contiene la informacin de textos por lenguaje stos se generan en momento de compilacin.

Puesta en produccinINSTALACIN EN EL SERVIDORLa plataforma .Net no utiliza el registry y permite configurar las versiones dlls a utilizar, por lo que instalar en el servidor es simplemente hacer un xcopy del directorio bin. El generador provee una herramienta, Publication Assistant, para hacer el Deploy automtico de la aplicacin. Requerimientos Los requerimientos son similares al ambiente de desarrollo. Servidor GUI Visual J# .Net Framework Servidor de Base de Datos

INSTALACIN EN EL CLIENTETener en cuenta permisos .Net para aplicacin en Red Conectividad a la base de datos

Modelo GUI Aplicaciones DistribuidasEs posible generar aplicaciones distribuidas, que se ejecuten en diferentes capas, utilizando el protocolo de comunicacin .Net remoting entre ellas, optimizando as los recursos y ampliando la escalabilidad.

Configuracin de un modeloSe crear una aplicacin distribuida donde: Ejecutando en el cliente tendremos un Work Panel main (Wkp01) que invoca a un procedimiento (Prc01) para dar de alta registros en una tabla, pasndole como parmetros todos los datos para realizar el insert en la tabla. Ejecutando en el servidor de aplicaciones tendremos el procedimiento que realiza el insert sobre la tabla. Nota: Se simular el cliente y el servidor de aplicaciones en la mquina de desarrollo. Se ejecutar la aplicacin tres capas utilizando IIS. 8. Crear un modelo de prototipo o produccin con el generador .NET Language: .NET User interface: Win 9. Setear las Dbms Options del modelo:

Access technology to set: ADO.NET Database name: Server name: localhost Use trusted connection: No User id: user User password: password

10. Configurar las propiedades de ejecucin : Compilador = csc.exe (bajo directorio de instalacin del framework) 11. Ejecutar la creacin de tablas de la base de datos (se supone que existe la base de datos creada en el SQL Server): Build / Create Database 12. Configurar propiedades del modelo En la seccin General/.NET specific/ADO.NET specific configurar: Protocol: Using .Net remoting Application Server host: http://localhost/3tierNET (3tierNET es el y que apunte a \DATAXXX\srv ) Multi tier location: appserver

nombre del directorio virtual que debe ser creado en el IIS

13. Configurar los programas que se ejecutaran en el servidor Setear en las las propiedades del procedimiento: Main program = True Location = appserver (debe ser el mismo valor que la propiedad del modelo Multi tier location) 14. Generar programas 15. Compilar y Ejecutar Generar los programas: Build / Build All Ejecutar el dilogo de ejecucin (F5). Compilar el Work Panel y el procedmiento definido como main Crear el directorio virtual 3tierNET, que apunte a \Dataxxx\srv ) Ejecutar el Work Panel (F5). Para ejecutar el Workpanel fuera de GeneXus basta con dar clic en el archivo ejecutable que se crea

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0en el directorio del modelos dataxxx/bin. ) Tener en cuenta que todo lo que se genere en el directorio: \DATAXXX\bin es todo lo que corresponde con lo que se ejecuta en el cliente \DATAXXX\srv es todo lo que corresponde con lo que se ejecuta en el servidor

Page 15 of 34

ArquitecturaUn sistema distribuido se basa en el concepto de distribuir lgicamente la ejecucin de una aplicacin, que tambin puede estar distribuida fsicamente o puede estar corriendo en una misma computadora. La idea principal de un sistema distribuido, es la divisin lgica de la aplicacin en varias capas, de forma de repartir las responsabilidades de realizar tareas especficas en cada una de ellas. En nuestro caso las aplicaciones distribuidas van a estar basadas en una arquitectura de 3 capas, es decir, que cada una de las capas se va a especializar en realizar determinadas tareas. En la primer capa se encuentran los componentes de la aplicacin que implementan la interfaz de la misma con el cliente (Capa de Presentacin), en la segunda se hayan los componentes que se ocupan de ejecutar la lgica del negocio de la aplicacin, es decir todo lo que es comportamiento del sistema (Servidor de Aplicaciones) y en la tercer capa estn los componentes encargados de realizar toda la manipulacin y persistencia de los datos (Servidor de Base de Datos). A diferencia de las aplicaciones Cliente/Servidor tradicionales (2 capas), donde la ejecucin de todo el cdigo de la aplicacin (lgica del negocio) se realiza en el cliente, en una aplicacin 3 capas, se distribuye el cdigo; ejecutando parte en el cliente y parte en el servidor de aplicaciones. De esta forma logramos ganar en escalabilidad, seguridad y performance como veremos ms adelante. Cabe aclarar que en una arquitectura como esta, el servidor de aplicaciones puede a su vez comunicarse con otros servidores de aplicaciones, distribuyendo de esta forma la responsabilidad de los servicios que son provistos al cliente. Del mismo modo, el servidor de la base de datos no tiene porque ser uno solo, sino que se puede contar con varios. Es este tipo de arquitectura, los clientes se comunican con el servidor de aplicaciones mediante un protocolo de comunicacin especfico segn el lenguaje de la aplicacin y el servidor utilizado; a su vez, el servidor de aplicaciones se comunica con la base de datos mediante un protocolo de comunicacin o driver especfico segn el DBMS utilizado.

La forma de comunicacin entre los componentes, del cliente y el servidor de aplicaciones, se realiza con .Net remoting, esto implica que para el transporte de la informacin se crean mensajes que viajan bajo HTTP o TCP (.Net Channel Services). La forma de comunicacin con el servidor de base de datos desde el servidor de aplicaciones es a traves de ADO.NET Solo es posible generar aplicaciones tres capas utilizando ADO.NET como mtodo de conexin a la base de datos, no es posible generar una aplicacin en tres capas utilizando ODBC Adems, las aplicaciones en tres capas solo pueden ser generadas con Interfaz Win, no es posible generar aplicaciones tres capas con Interfaz Web.

Propiedades EspecficasMODEL PROPERTIES

Protocol Esta propiedad permite definir si la aplicacin se va a generar en 2 capas o en 3 capas, si se opta por est ltimo, se debe seleccionar con qu protocolo de comunicacin entre el cliente y servidor de aplicaciones se va a trabajar. Valores Using.Net remoting - Se genera la aplicacin en tres capas No - El modelo se generar en dos capas. Valor predeterminado: No Application Server Host Permite especificar la referencia al host donde est corriendo el servidor de aplicaciones. Valores

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0

Page 16 of 34

http://servername/virtualDir por ejemplo: para utilizar IIS como servidor de aplicacin tcp://servername:puerto por ejemplo: para utilizar Consola o Servicio de Windows como servidor de aplicacin Valor predeterminado: No tiene En el caso de modificar el Channel ref ="tcp se debe especificar el application Server host bajo el mismo protocolo. Multi tier location Indica el nombre lgico (el Location) del servidor de aplicaciones que ejecutar el cdigo remoto de la aplicacin. El cdigo remoto consiste en los accesos a la base de datos y segn la configuracin de propiedades de los objetos, se ejecutar la lgica de los mismos (o parte de ellos) en el cliente o en el servidor. En particular para ejecutar la lgica de los procedimientos y o reportes en el servidor, se deber configurar la propiedad Location con el valor que se especifique en esta propiedad del modelo. Valores Se puede especificar cualquier nombre lgico para el Location Valor predeterminado: Appserver

PROCEDURE PROPERTIES

Location Esta propiedad nos permite definir a nivel de procedimientos y reportes main, si el objeto es generado para ser ejecutado ntegramente en el servidor de aplicaciones, es decir, que no slo los accesos a la base de datos, sino tambin que toda su lgica y la de los objetos llamados por l sean ejecutados en forma remota. Si a un objeto no se le define Location, se asume que se ejecuta en el Location del llamador, por lo tanto no es necesario definir el Location a cada uno de los procedimientos y reportes del rbol de llamadas del primero, ya que al haber definido el main y location del primero, todos toman dicho valor. Por lo tanto, dado que un objeto puede ser llamado por diferentes objetos, dicho objeto a veces puede ser ejecutado todo en el servidor de aplicaciones (es decir, remoto) y otras veces algo en el cliente y el acceso a la base de datos en el servidor de aplicaciones, dependiendo del Location de quien lo llame. En el rbol de llamadas no deben existir objetos con interfaz, por ejemplo, una llamada (call) a un work panel o a una transaccin en un procedimiento definido como remoto o llamado por otro remoto. Prestar especial atencin a esto, ya que en caso de existir, dar error o bien se visualizar en el servidor de aplicaciones (que es donde est ejecutando el objeto) y no en el cliente. Valores El valor es un nombre lgico. Si coincide con el valor de la preferencia del modelo Multi tier location, entonces el objeto correspondiente corre ntegramente en el servidor de aplicaciones, de lo contrario corre en el cliente.

TRANSACTION PROPERTIES

Optimize for multi tier location Esta propiedad permite definir si las reglas de la transaccin se ejecutan en el cliente y no en el servidor de aplicaciones. En una aplicacin en 3 capas por defecto todas las reglas de las transacciones se ejecutan en el servidor de aplicaciones. Pero las transacciones pueden tener determinada regla que genere algn tipo de interfaz de usuario, por ejemplo una llamada a un work panel, a un reporte o a otra transaccin. En ese caso la transaccin no puede ser ejecutada en el servidor de aplicaciones y esta propiedad permite que se ejecute en el cliente Valores No: Todas las reglas son ejecutadas en el cliente, inclusive el cdigo de acceso a la base de datos. Yes: Todas las reglas de la transaccin son ejecutadas en el servidor de aplicaciones. Valor predeterminado = Yes Nota: igualmente no es recomendable cambiar esta propiedad para aplicaciones en 3 capas, pues afecta la performance y la idea es que slo

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0

Page 17 of 34

desde el servidor de aplicaciones se puede acceder a la base de datos. Para solucionar el tema de tener una regla que invoque a algn objeto con interfaz de usuario, se recomienda encontrar la manera de eliminar esa regla, por ejemplo pasarla a los eventos o utilizar la regla msg o error.

WORK PANEL PROPERTIES

Execute load events in application server Configurando esta propiedad en los work panels, se puede determinar si adems de los accesos a la base de datos, se ejecutar toda la lgica del evento Load en el servidor de aplicaciones automticamente. Al trabajar en una aplicacin distribuida, para lograr una buena performance, como regla general hay que tratar de ejecutar la mayor cantidad de cdigo en el servidor de aplicaciones, bsicamente ejecutar todo menos la interfaz. Es por ello que se cuenta con esta propiedad para delegar toda la ejecucin de la lgica del evento Load del work panel al servidor de aplicaciones. Valores No: La lgica ejecuta en el cliente y slo los accesos a la base de datos ejecutan en el servidor de aplicaciones. Yes: Ejecuta todo lo programado en el evento Load del work panel en el servidor de aplicaciones, tanto la lgica como los accesos a la base de datos. Valor predeterminado = No Consideraciones Si esta propiedad tiene el valor Yes, se debe tener en cuenta ciertos puntos en la programacin del evento Load. Dado que esta propiedad indica que el evento Load se va a ejecutar en el servidor de aplicaciones, no se puede programar en l nada que tenga que ver con interfaz, como ser: Llamadas a un mtodo de un control del form del work panel Cambio de propiedades del form del work panel Llamadas a otros programas con interfaz, como por ejemplo un call a otro work panel o transaccin

Generacin de objetosAl generar el modelo se crean los objetos necesarios segn el tipo de objeto \DATAXXX\bin es todo lo que corresponde con lo que se ejecuta en el cliente \DATAXXX\srv es todo lo que corresponde con lo que se ejecuta en el servidor Todos los componentes generados son componentes .Net (Assemblies), que siguen el estndar de Factory Design Pattern. En el servidor de aplicaciones se publica un nico objeto Factory, que es compartido por todos los clientes (Singleton). Este permite al cliente, a travs de dos mtodos getProcedure y getDatastore, acceder al objeto remoto y activarlo (Client Activated ObjectsCAO). El servidor de aplicaciones se encarga de mantenerlos vivos mientras exista interaccin frecuente entre el objeto y el cliente. Al acceder dos clientes al mismo objeto se crea en el servidor de aplicaciones una nueva instancia del objeto. No hay un criterio de re-uso como el pool de objetos de COM+, o sea, un objeto se usa por un cliente hasta que no lo necesita ms.

Servidores de aplicacionesLos servidores de aplicaciones se encargan de ejecutar el cdigo definido como remoto en una aplicacin distribuida, en el caso del generador .NET, tenemos dos opciones, podemos utilizar Internet Information Server o el servidor de aplicaciones que nos ofrece GeneXus. Esto es determinado a travs de la propiedad Application server Host

IIS COMO SERVIDOR DE APLICACIONESPara poder ejecutar la aplicacin utilizando IIS (Internet Information Server) como servidor de aplicaciones, se debe crear un directorio virtual en el IIS apuntando al directorio del modelo dataxxx\srv. A continuacin describimos las caractersticas de utilizar IIS: El servidor de aplicaciones es levantado automticamente en la primera solicitud. El servidor de aplicaciones se reinicia cada vez que se modifica el archivo web.config, este es el archivo de configuracin donde se encuentra toda la informacin sobre el servidor de la aplicacin, sobre la conexin a la base de datos, entre otros. Este archivo se localiza en el directorio del modelo dataxxx\srv. Si los procesos demoran ms de 90 segundos (timeout predeterminado), caen dando error de timeout. Para que no ocurra esto, se deber configurara el Http Execution timeout en el archivo web.config, configurando un valor mayor.

SERVIDOR DE APLICACIONES GENEXUSSi optamos por utilizar el servidor de aplicaciones GeneXus, entonces tenemos dos formas de levantarlo: Por consola Ejecutando el archivo GxDotNetAppServer.exe que se encuentra en el directorio del modelo dataxxx\srv\bin. La salida de los mensajes se da en la consola y en el archivo client.log Como servicio Windows Para configurarlo como servicio Windows es preciso instalarlo la primera vez con la siguiente sentencia:

http://www.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.0/manualn... 11/12/2008

Manual del Generador .NET GeneXus 9.0installutil GxDotNetAppServerWinSrv.exe Este ejecutable se encuentra en el directorio del modelo dataxxx\srv\bin Una vez instalado, debe levantarse manualmente, y luego puede configurarse como cualquier servicio Windows. La salida de los mensajes de error se da por el event viewer y por el client.log En ambos casos se debe detener el servicio al recompilar los objetos.

Page 18 of 34

El servidor de aplicaciones GeneXus, lee su configuracin del archivo server.exe.config, en este archivo se encuentra desde la informacin sobre el host de la aplicacin hasta los datos de conexin a la base de datos. Este archivo est en el directorio del modelo dataxxx\bin.

VENTAJAS Y DESVENTAJASUtilizar uno u otro servidor de aplicaciones tiene sus ventajas y desventajas, y en esta seccin mostraremos cuales son. Ejecutar una aplicacin bajo IIS seguramente sea la opcin ms cmoda cuando se trabaja en prototipo, ya que es la ms sencilla. Adems se "hereda" la seguridad del propio IIS. En este caso la actualizacin de las versiones de las dll se puede hacer sin bajar el servicio. La desventaja se presenta en la performance, puede ser un poco ms lento que utilizar el servidor de aplicaciones de GeneXus. La mejor performance con .NET Remoting se da con comunicacin TCP y formato binario, la ms baja con HTTP y formato SOAP. Tenindolo bajo IIS se tiene comunicacin HTTP con formato binario o con formato SOAP, el primero sera "intermedio" en performance. El formato predeterminado es binario, pero puede ser configurado en los archivo.config: server.exe.config o web.config Otro punto a tener en cuenta es que si el si el servicio se cae por alguna razn en caso como Consola o Servicio de Windows, hay que levantarlo manualmente, lo que no es necesario con IIS, ya que con IIS el servidor de aplicaciones se levanta automticamente en el prximo pedido.

AvanzadosGENERACIN DE TRACEPor defecto, en los modelos tres capas se genera un log en el cliente (client.log) y un log en el servidor de aplicaciones (server.log).

POOL DE CONEXIONESUna de las ventajas de implementar una aplicacin en 3 capas, es la posibilidad de tener ms centralizado y controlado el manejo de las conexiones a la base de datos, ya que el acceso a la misma no se hace desde el cliente, como en una aplicacin en 2 capas, sino que en este tipo de aplicacin el acceso es realizado por el servidor de aplicaciones. Para ello podemos utilizar un pool de conexiones a la base de datos. Un pool de conexiones es un conjunto limitado de conexiones a una base, que es manejado de forma tal, que dichas conexiones pueden ser reutilizadas por los diferentes usuarios. Este pool es administrado por un servidor de aplicaciones que va asignando las conexiones a medida que los clientes van solicitando consultas o actualizaciones de datos. En aplicaciones .NET con acceso a SQL Server u Oracle, utilizando ADO.NET como protocolo de acceso a los datos, el manejo del pool lo hace el propio framework utilizando el "Connection Pooling" de ADO.NET. Es posible modificar los valores de las propiedades del pool de conexiones seteados por defecto. Para esto es necesario configurara la propiedad Additional connection string attributes de las DBMS dentro de Properties/Access technology settings/Connecction information. Las propiedades disponibles en el pool de conexiones que provee el ADO.NET son: Connection Lifetime Connection Reset Enlist Max Pool Size Min Pool Size Pooling

Por ejemplo podemos configurar la propiedad Additional connection string attributes con: Enlist=true;Max Pool Size=40 Las propiedades del pool de conexiones siempre van separadas por punto y coma. Si una conexin alcanza un determinado tiempo no configurable sin actividad (30000 milisegundos), sta es devuelta al pool de conexiones. Por ms detalles sobre esta funcionalidad y sobre cmo configurar las propiedades puede acceder a las siguientes pginas: SqlServer y Oracle

ARCHIVOS DE CONFIGURACINWeb.config Es el archivo de configuracin donde se encuentra toda la informacin sobre el servidor de la aplicaciones cuando se corre bajo Internet Information Service (IIS). Se crea bajo el directorio Dataxxx\srv\ Tiene una estructura similar a:

Page 19 of 34

Formato de mensajes

El formatter ref puede ser "SOAP" si el channel ref es http. server.exe.config Es el archivo de configuracin donde se encuentra toda la informacin sobre el servidor de la aplicaciones cuando se utiliza el servidor de aplicaciones GeneXus. Se crea bajo el directorio Dataxxx\srv\bin Tiene una estructura similar a:

Formato de mensajes

El channel ref puede ser "tcp" El formatter ref puede ser "SOAP" si el channel ref es http. Client.exe.config Este archivo, como se detalla en el modelo dos capas, tiene informacin de las propiedades del modelo y log. En aplicaciones distribuidas no tiene informacin de la conexin a la base de datos pero se agrega la informacin de canales, del objeto singleton (Factory) y formatos e informacin de propiedades relevantes como la ubicacin del servidor de aplicaciones y el keep alive. La estructura es similar a: