manual de generador net 9

Upload: visua

Post on 30-Oct-2015

323 views

Category:

Documents


3 download

TRANSCRIPT

  • Manual del Generador .NET

    GeneXus 9.0

    Enero 2007

    Page 1 of 34Manual del Generador .NET GeneXus 9.0

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

  • Introduccin Objetos Ambientes

    Requerimientos Requerimiento software

    Plataforma .NET GeneXus Manejador de base de datos Servidor Web

    Requerimientos de hardware

    Modelo Web Configuracin 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 GUI Configuracin 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 Distribudas Configuracin 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

    Generalidades Acceso 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

    Apndice Tips

    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

    Page 2 of 34Manual del Generador .NET GeneXus 9.0

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

  • Code 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 34Manual del Generador .NET GeneXus 9.0

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

  • Introduccin

    El 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).

    Objetos

    Los 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.

    Ambientes

    Las 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.

    Requerimientos

    Requerimiento software

    PLATAFORMA .NET

    Para 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:

    El Visual J# es requerimiento para las aplicacin GUI y para los reportes PDF de las aplicaciones Web.

    GENEXUS

    - Development environment GeneXus 9.0 - Generador .NET 9.0

    MANEJADOR DE BASE DE DATOS

    SQL 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%

    .NET

    .NET Framework http://msdn.microsoft.com/netframework J# distribution package

    http://msdn.microsoft.com/vjsharp/downloads/howtoget.asp

    Page 4 of 34Manual del Generador .NET GeneXus 9.0

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

  • 3A25.229714R&S_TACT=104CBW71&S_CMP=&s= 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 WEB

    En 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 hardware

    Para 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 Web

    Configuracin de un modelo

    1. 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

    Page 5 of 34Manual del Generador .NET GeneXus 9.0

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

  • y Permisos del servidor de Web para ejecutar una aplicacin.

    Propiedades especficas del Generador .NET

    Para ingresar a estas propiedades debe ir a: File/Edit Model/ Botn Properties.

    GENERAL SECTION

    Generate 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

    Page 6 of 34Manual del Generador .NET GeneXus 9.0

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

  • Propiedad 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)

    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 SECTION

    Propiedad 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 ejecucin

    Para ingresar a estas propiedades debe ir a: File/Edit Model/ Botn Execution.

    Page 7 of 34Manual del Generador .NET GeneXus 9.0

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

  • 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 objetos

    El proceso de generacin de un objeto consta de dos etapas:

    GENERACIN

    Luego 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).

    COMPILACIN

    El 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)

    Avanzados

    GENERACIN DE TRACE

    Para 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.

    Page 8 of 34Manual del Generador .NET GeneXus 9.0

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

  • 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 CONFIGURACIN

    Cuando 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.config

    Se 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:

    .

  • SessionState

    Para implementar el manejo de sesiones (Tipo de dato Websession) el generador utiliza el HttpSessionState provisto por el framework. Existen tres modos de almacenar la session state: 1 - Inproc que usa el aspnet_wp.exe. 2 - Stateserver para cuando se tiene ms de un servidor 3 - Sqlserver que en lugar de utilizar la memoria del servidor web para almacenar informacin grabada en las sesiones, utiliza tablas de SQL Server. Inproc es el mecanismo default que implementa el generador. Cuando se recicla el aspnet se pierden las variables de session. StateServer Se puede almacenar la websession dentro del espacio de memoria de un proceso llamado aspnet_state.exe. Esto es til en prototipacin para mantener la websession ya que luego de reciclar el aspnet_wp o compilar los objetos y subirlos nuevamente se pierde la Websession. Para implementarla hay que primero levantar el servicio ASP.NET State Service (aspnet_state.exe) en el equipo que vaya a ser el que mantenga la sesin. Luego, en el web.config, hay que agregar la siguiente lnea:

    ....

    .... El atributo stateConnectionString contiene la IP y el puerto del equipo utilizado para mantener la sesin. El puerto default es 42424. Sqlserver, para esto se debera: 1 - cambiar el web.config con el string de conexin Siendo la cantidad de segundos que se desea esperar, por ejemplo 3600. Por mas informacin de la seccin HttpRuntime http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfhttpruntimesection.asp

    Generacin trace a archivo Rolling file

    Es posible configurar un modelo Web para que tambin genere un archivo de texto, agregando las siguientes entradas en el archivo web.config: 1.

    Se deben utilizar las barras / para indicar el directorio de la aplicacin. 2. Incluir la entrada Entrada dentro del Tag root, por ejemplo: Es importante diferenciar los appenders que estn como root, que son los appender que va a tomar en cuenta log4net cuando vaya a imprimir los mensajes de log. En este caso, por tener configurado los valores "RollingFile" y ASPNetTraceAppender", generar el archivo client.log en el directorio web/log debajo del directorio del modelo y tambin se podr acceder al trace a travs de la URL: http://servername/dirvirtual/Trace.axd

    Page 10 of 34Manual del Generador .NET GeneXus 9.0

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

  • En caso de tener solo un appender: No se generar el archivo client.log, solamente se podr acceder al trace a travs de la URL: http://servername/dirvirtual/Trace.axd Si en el archivo web.config de una aplicacin Web se configura: y en el Tag root: no se tomarn en cuenta las configuraciones: porque estas configuraciones son vlidas nicamente para el appender:

    Puesta en produccin

    INSTALACIN EN EL SERVIDOR

    En una aplicacin web es necesario copiar al servidor: - El directorio bin del modelo (donde se encuentran las dlls de cada objeto) - Los java script ( *.js) - Las imgenes, htmls, *.css y cualquier contenido esttico deseado - El archivo Web.config - Si se usan tipos de datos de Office, es necesario registrar la gxoffice2.dll

    REQUERIMIENTOS

    Los requerimientos son similares al ambiente de desarrollo. Servidor Web

    - Internet Information Server 5.0 o superior - .Net Framework Redistributable 1.1 o 2.0 (recomendable: Realizar la instalacin del mismo a partir del Windows component update

    provisto por el setup de Visual Studio .NET) - Cliente de Base de datos (no requerido en sql server)

    Servidor de Base de Datos

    INSTALACIN EN EL CLIENTE

    Cliente Web: Solamente alcanza con un browser. Para el caso de Internet Explorer la mnima versin soportada es I.E. 6.0.

    Modelo GUI

    Configuracin de un modelo

    1. Crear un modelo de prototipo o produccin con el generador .NET Language = .NET User Interface = Win

    2. Configurar la propiedad del modelo Access Method en ADO.NET|ODBC 3. Configurar las Dbms Options del modelo:

    Access technology to set: ADO.NET|ODBC Database name: Server name: ,[]

    4. Configurar las propiedades de ejecucin:

    Compilador: csc.exe (bajo directorio de instalacin del framework)

    5. Ejecutar la creacin de la base de datos. Build / Create (se asume que existe la base de datos)

    6. Generar programas Build / Build All

    7. Compilar y Ejecutar Ejecutar el dilogo de ejecucin (F5). Compilar los objetos main o el Developer Menu

    Ejecutar el objeto

    Al compilar por ejemplo un Work Panel Main Wkp01 se genera bajo el directorio bin - el objeto Uwkp01.exe y - el assembly uWkp01.dll o Fld01.dll, siendo Fld01 el nombre del flder GeneXus donde se encuentra el objeto. Esto depende de la

    propiedad del modelo Assemblies structure La salida de la compilacin se enva al archivo Runout.log.

    En caso de ejecutar desde una red tener consideraciones en la configuracin de Permisos .NET para los pasos 5 y 7

    Propiedades especficas

    Page 11 of 34Manual del Generador .NET GeneXus 9.0

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

  • GENERAL

    Generate developer Menu makefile

    .NET SPECIFIC SECTION

    Application Namespace

    StrongName

    Version Number

    Compiler Flag

    Access Method

    ADO.NET SPECIFIC SECTION

    Assemblies Structure

    Esta propiedad determina el mecanismo de armado de los assemblies en un modelo .Net Win con acceso a la base de datos ADO.NET Valores By folder: se crea un assembly por cada objeto folder del modelo By Main: se crea un assembly por cada objeto main del modelo By folder es la forma en que se generan los assemblies (las dlls), esto implica que al mover un objeto de folder, se deben regenerar y compilar todos los objetos involucrados. By Main - crea una dll por el objeto y otra por el stub. Este mtodo de armado de assemblies es ms natural y similar al comportamiento de los otros generadores Gui. Valor predeterminado: By Folder

    Enabled Caching

    Caching Section

    Log level

    TRANSACTION CONFIGURATION SECTION

    Add/Update/Confirm/Delete Button Bitmaps

    Permite cambiar el bitmap asociado al botn Confirm en vez del caption correspondiente a cada caso. Valores Los bitmaps predeterminados son:

    CLIENT SERVER

    Maximum cached cursor

    Opciones de ejecucin

    Para configurar la ejecucin de una aplicacin GUI .NET, alcanza con definir el camino del compilador (csc.exe), este lo provee el framework SDK y se encuentra bajo el directorio de instalacin del mismo en: \Framework\v1.1.4322 \csc.exe Para ingresar a esta propiedad debe ir a: File/Edit Model/ Botn Execution.

    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

    Agregar (gxconfirm_add.gif)

    Confirmar (gxconfirm_cnf.gif)

    Borrar (gxconfirm_dlt.gif)

    Modificar (gxconfirm_upd.gif)

    Page 12 of 34Manual del Generador .NET GeneXus 9.0

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

  • Generacin de objetos

    El proceso de generacin de un objeto consta de dos etapas:

    GENERACIN

    Luego 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.

    COMPILACIN

    El 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

    Avanzados

    GENERACIN DE TRACE

    Para 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:

    < a pp e n de r n a m e = "R o l l i n g F i l e A pp e nd e r " >

    ARCHIVOS ESPECFICOS

    Archivo 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:

    Page 13 of 34Manual del Generador .NET GeneXus 9.0

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

  • .

    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 produccin

    INSTALACIN EN EL SERVIDOR

    La 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 CLIENTE

    - Tener en cuenta permisos .Net para aplicacin en Red - Conectividad a la base de datos

    Modelo GUI Aplicaciones Distribuidas

    Es 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 modelo

    Se 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 nombre del directorio virtual que debe ser creado en el IIS y que apunte a \DATAXXX\srv ) Multi tier location: appserver

    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

    Page 14 of 34Manual del Generador .NET GeneXus 9.0

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

  • en 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

    Arquitectura

    Un 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 Especficas

    MODEL 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

    Page 15 of 34Manual del Generador .NET GeneXus 9.0

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

  • 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

    Page 16 of 34Manual del Generador .NET GeneXus 9.0

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

  • 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 objetos

    Al 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 aplicaciones

    Los 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 APLICACIONES

    Para 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 GENEXUS

    Si 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:

    Page 17 of 34Manual del Generador .NET GeneXus 9.0

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

  • installutil 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. 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 DESVENTAJAS

    Utilizar 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.

    Avanzados

    GENERACIN DE TRACE

    Por 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 CONEXIONES

    Una 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 CONFIGURACIN

    Web.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:

  • .

    Manejo de Proxy

    En el caso de que exista un Proxy entre el cliente y servidor de aplicaciones, debemos realizar algunos cambios. Dichos cambios deben ser implementados en el archivo de configuracin del cliente client.exe.config, en el cual hay que configurar que se va a utilizar el Proxy que fue establecido en las Internet Options de Windows. Tenemos dos posibles situaciones, como se muestra a continuacin:

    Cliente y servidor de aplicaciones en la misma LAN:

    Page 19 of 34Manual del Generador .NET GeneXus 9.0

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

  • De esta forma no se va acceder por el Proxy.

    Cliente y servidor de aplicaciones en LAN distinta:

    De esta forma se accede por el Proxy configurado en las Internet Options. Las etiquetas nombradas anteriormente son Case Sensitive, es decir se deben escribir respetando las maysculas y minsculas, por ejemplo: proxyName.

    Puesta en produccin

    La plataforma .Net no utiliza el registry y permite configurar las versiones de dlls a utilizar, por lo que instalar la aplicacin es simplemente hacer un xcopy de:

    - directorio bin para el cliente - directorio srv para el servidor de aplicaciones

    El generador provee una herramienta, Publication Assistant, para hacer el Deploy automtico de la parte del cliente.

    REQUERIMIENTOS

    Servidor de aplicaciones

    - .Net Framework Redistributable - Conectividad al servidor de base de datos - IIS o servidor de aplicacin GeneXus

    Cliente

    - Visual J# - .Net Framework Redistributable

    Generalidades

    Acceso a la base de datos

    Hay dos formas de conexin a la base de datos con: ADO.NET y ODBC. El primero es un mtodo nativo del generador y es el recomendado, ya que permite la generacin de aplicaciones Windows de mltiples capas, habilita el caching de sentencias, ofrece herramientas de monitoreo de aplicaciones, mejoras de performance (con respecto al acceso ODBC) e implica utilizar 100% .NET managed code para acceder al DBMS Para los manejadores de base de datos que no esta liberado o no poseen un provider ADO es necesario acceder con ODBC (PostgreSQL, Informix) Para configurar la conexin a la base de datos se debe setear:

    - Propiedad Access Method del modelo (ADO.NET/ODBC) - Valores de conexin desde Access technology to set = ADO/ODBC

    No es posible tener algunos objetos con conexin ADO y otros con ODBC, si un modelo es ADO todos los objetos y todos los datastores usarn este mtodo de conexin Al trabajar con ADO.NET toda la lgica se encuentra en la gxclasses.dll, en cambio en el acceso ODBC se implementa bajo la gxdata.dll, al igual que el resto de los generadores Client Server. En el caso de los DBMSs, cada uno utiliza un Data Provider para acceder a la base de datos, cada DBMS tiene su propio Data Provider para acceso ADO.NET.

    Cache de sentencias

    La conexin ADO.NET a la base de datos 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 aplicacin ya que se reduce el costo de acceso al servidor de base de datos. Es comn, que en la mayora 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 informacin en muchas ocasiones, esto origin que en ADO.NET se implementara un mecanismo de cache en memoria, de rpido acceso, con los resultados de las sentencias ms frecuentes. El cache de sentencias funciona de la siguiente manera:

    l Al realizar una consulta por primera vez sobre una tabla, el resultado queda guardado en memoria. l Cuando se realiza nuevamente la consulta no se realiza comunicacin alguna con el servidor de base de datos, sino que se obtienen los

    datos del cache de memoria, siempre y cuando no haya expirado el tiempo configurado para mantener los datos en dicho cache. l Si el tiempo expir se accede a la base de datos para obtener nuevamente los datos y almacenarlos en el cache.

    Para habilitar el cache de sentencias de ADO.NET y configurar las propiedades correspondientes, debemos ir a la seccin General/.NET specific/ADO.NET specific de las propiedades del modelo.

    Tipos de datos

    La plataforma .Net es muy estricta en el chequeo de tipos, tanto en tiempo de compilacin como en tiempo de ejecucin, el generador se ocupa de hacer los casts y conversiones que puede, pero de todas formas pueden surgir errores causados por mala programacin (el mas comn es el overflow en tipos numricos). Es necesario tener algunas consideraciones en el tipo de datos mail:

    - Esta implementado los tipos de datos para el manejo de correo con modo Internet (SMTPSession, POP3Session) y Outlook - En ambiente web para utilizar modo Outlook es necesario configurar:

    o impersonate del usuario o configurar el directorio virtual del Internet Information Service (IIS) para que utilice un usuario que tenga permisos sobre una

    cuenta de mail en outlook (editando las propiedades\Directory Security\Edit) - No esta implementado el modo Mapi

    Page 20 of 34Manual del Generador .NET GeneXus 9.0

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

  • Implementacin GxOffice2net.dll es la que se usa desde los programas. Interop.GxOffice2lib.dll es el wrapper de la gxoffice2, se necesita siempre. GxOffice2.dll es la implementacin cuando se usa modo Outlook

    Generacin de programas de reorganizacin

    El programa que ejecuta la reorganizacin es el assembly reor.exe que se crea bajo el directorio bin. Este toma las especificaciones de la reorganization.dll y chequea la presencia de el archivo reorgpgm.gen (una flag), esto es necesario cuando se precisan ejecutar reorganizaciones o creaciones de la base de datos en el servidor de produccin. La informacin de conexin a la base de datos se encuentra en el archivo client.exe.config, esto es vlido tanto para modelos GUI como Web. Los archivos necesarios para llevar solamente la creacin/reorganizacin son: GxClasses.dll, log4net.dll, Reor.exe, Reorganization.dll, reorgpgm.gen, messages..dll Es posible ejecutar la reorganizacin sin interfaz con el parmetro nogui. La sintaxis del comando es: reor.exe nogui

    Transactional Integrity

    La propiedad Transactional Integrity no es tomada en cuenta con ADO.NET. Los objetos siempre se generan con integridad transaccional, a excepcin de las reorganizaciones de la base de datos (con Autocommit).

    Transacciones de ms de un nivel (GUI)

    El generador .NET soporta transacciones de ms de un nivel, pero toda transaccin .NET debe tener no ms de un nivel plano, y al menos uno. No se soportan transacciones de un nivel con subfile. Por ejemplo, tampoco se soportan estructuras del tipo: A* B (C* D (E* F) Vale aclarar que lo que no se soporta es la generacin del programa correspondiente a la transaccin para la ejecucin de la misma; pero si, se soportan estas transacciones en lo referente al diseo 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.

    Smart Static Panels (Web)

    No esta implementada esta funcionalidad, por lo tanto no es posible generar archivos HTML con la informacin obtenida de la base de datos.

    Llamadas a Stored Procedures

    Al igual que en el resto de los generadores para llamar a un store procedure sp1, este debe estar definido dentro de la propiedad List of remote programs del modelo. Para invocarlo en el cduigo GeneXus alcanza con programar:

    call('sp1', parm1, parm2) Los parmetros deben estar definidos en el archivo extprog.ini, donde se mapea el nombre de los parmetros definidos en la BD, por ejemplo:

    [storeproc] ProgramName=Sp1 ProgramType=StoredProcedure ParmMode=inout,in ParmType=Number,5,0;Number,5,0; ParmName=parm1,parm2

    En versiones previas cuando se trabajaba con ADO.NET, estaba la restriccin de que las variables se llamen igual que los parmetros del Stored Procedure que se est invocando, y sean todos los parmetros de tipo inout. En el caso detallado anterioirmente, en la Base de datos el Stored Procedure sp1 debe tener dos parmetros de nombre @parm1 y @parm2 (ambos de tipo inout).

    Comando Submit

    El comando submit usa un Thread pool en lugar de crear un thread nuevo siempre. Esto limita la cantidad de threads que se pueden llegar a crear evitando un potencial problema de sobrecarga. Se usa siempre que se haga un submit, y se tienen 25 threads por procesador. En el ASPNET se puede configurar el numero de threads (en el processModel del config) pero en una app win no a menos que se reescriba el host. Si el thread muere por algun motivo deja un error en el event log. De aqu la importancia de generar los submits como queued components:

    Submits como queued components (COM+)

    Funciona de forma que un proc llamado con submit, en lugar de ejecutarse en otro thread, se pone en una cola de un servicio COM+ que se ocupa de instanciarlo y ejecutarlo, si no puede por algun motivo (error de la app/ recursos no disponibles) reintenta 5 veces y si falla lo manda a una cola especial de objetos fallados. Esto es util cuando se quiere garantizar la ejecucin de un proceso y no importa el momento en que se ejecute, adems se ejecuta en un proceso distinto al del llamador.

    REQUERIMIENTOS

    l Message Queuing instalado (viene con Windows pero no se instala por defecto). Para instalarlo se debe acceer a Control Panel/Add-Remove Programs/Add-Remove Windows Component

    GENERACIN

    Esta implementacin es vlida solo para procedimientos. Para que los objetos GeneXus se generen de esta forma, deben cumplir los siguientes requisitos:

    Deben estar definidos como objeto main (Propiedad del objeto Main object = true) El assembly debe estar armado con Strong name (Propiedad del modelo Strong name = true) No puede tener layout

    Si no se cumple alguno de estos requisitos, el objeto se genera sin posibilidades de llamarse como Queued component y el Submit se hace

    Page 21 of 34Manual del Generador .NET GeneXus 9.0

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

  • levantando otro Thread. Junto con el objeto se genera informacin para su configuracin que se incluye en la aplicacin COM+ cuando se registra.

    CONFIGURACIN, EJECUCIN

    Un assembly de este tipo ejecuta en una aplicacin COM+, por lo tanto es necesario configurarlo como tal, para eso es necesario:

    La configuracin de seguridad, la genera el generador automticamente; genera un esquema sin autenticacin (lo mas comn para probar la aplicacin)

    Registracin, se debe registrar el componente COM+ con el comando: regsvcs

    Por ejemplo: regsvcs bin\aprc01.exe. Esto crea la aplicacin COM+ (con el nombre del modelo) y la configura con seguridad y esquema transaccional generado. Regsvcs es una herramienta del .NET Framework que sirve para registrar assemblies como aplicaciones COM+. Adems se debe copiar el client.exe.config al directorio de sistema de Windows (tpicamente Windows\system32).

    CONSIDERACIONES

    Todo lo que es COM, DCOM y COM+ se configura desde el Control Panel/Administrative Tools/ Component Services Configuracin de seguridad

    No es necesario si la aplicacin se registr como se indica en Configuracin, ejecucin. Para probar, lo mas comn, es una instalacin MSMQ workgroup (que no requiere domain controller). En este tipo de instalacin no hay un Active directory store contra el que autenticar los callers y por lo tanto hay que desactivar la autenticacin (sino da Access denied al hacer el call). Para desactivar la autenticacin desde el Component services/Computers/My Computer/COM+ Applications, presionar botn derecho en la aplicacin, properties/security, apagar el checkbox de Enforce access checks for this application y poner Authentication level for calls en None. Esta configuracin la genera el generador y se hace cuando se registra el componente. La configuracin para produccin depende de cada instalacin, en general tiene un domain controller y hay que configurar la seguridad.

    Configurar el soporte transaccional

    Esto no es necesario si la aplicacin se registr como se indica en Configuracin, ejecucin. Dentro de la aplicacin COM+ ir a Components, seleccionar el que corresponde al objeto GeneXus, presionar botn derecho, properties/transactions, poner Transaction support en Not supported. Esta configuracin la genera el generador y se hace cuando se registra el componente.

    Publication assistant (GUI)

    Esta herramienta permite hacer el deploy automtico de una aplicacion .Net Win en 2 o 3 capas via HTTP. La idea es poder realizar instalaciones de aplicaciones o realizar actualizaciones de las mismas en las mquinas cliente de una manera sencilla y centralizada. DESCRIPCIN La herramienta nos permitir dada una aplicacin (2 o 3 capas) la posibilidad que un cliente desde una URL y haciendo un simple click pueda instalar la aplicacin o upgrades de la misma. Para acceder a la herramienta debemos ir a la ventana de Execution: Build -> Run (F5) y dar click en el botn Publish.

    La metodologa es muy simple, luego de haber generado el exe de nuestra aplicacin: 1) Estando en la ventana de Execution seleccionamos el exe correspondiente para el Deployment y damos click en el boton Publish. 2) Luego en el GeneXus .NET Publication Assistant editamos las preferences del Deployment: Application name: nombre que se le dar a la aplicacin, por default es la descripcin del main que se selecciono. Client installation folder: folder donde se instalar la aplicacin en el cliente, por default se agregar al final del folder seleccionado GxPrograms\Application name. Shortcut Icon: icono que tendr el exe, por default ser ModelPath\GXPUB\gxappstart\net.ico que es un icono que se distribuye por default (*). Shortcut for unistall: especificamos si queremos agregar un acceso directo al Unistall de la aplicacin. Publication URL: URL desde la cual se podr realizar el Deployment, por default ser http://server/app donde server es el nombre de la mquina donde se est haciendo el Deployment y app es el nombre del exe. Physical path: directorio donde se encuentra la aplicacin en el server, por default es ModelPath\Publication. Application files: archivos que conforman a la aplicacin, por defualt son cargados del directorio bin del modelo.

    Page 22 of 34Manual del Generador .NET GeneXus 9.0

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

  • (*): el GXPUB se crea por debajo del directorio del modelo al hacer Publish. Al momento de hacer Publish se crea el directorio GXPUB bajo el directorio del modelo en el cual se almacenan todos los archivos necesarios para llevar el control de las nuevas versiones de la aplicacin.

    3) Una vez que se establecieron las preferences del Deployment damos Publish. En este punto: - se crea el directorio GXPUB debajo del directorio del modelo donde se guardan todas las preferences ingresadas y donde se copian todos los archivos necesarios para armar el deployment. - se copian los archivos de la aplicacin que se encuentran en el bin del modelo al Physical path, tambin se copia un appname_manifest.xml el cual ser utilizado para saber si hay nuevas versiones de la aplicacin para instalar. - se crea un directorio virtual con el mismo nombre que la aplicacin apuntando al Physical path. - se arma el aplicativo que se utilizar en el cliente para realizar las instalaciones y actualizaciones de la aplicacin, los fuentes de la misma quedan en \GXPUB\gxappstart. - en caso de no presentarse ningn error en el Output del GeneXus .NET Publication Assistant quedar la URL a la cual acceder para realizar la instalacin, la cual se arma en base a la Publication URL que se especifico antes.

    4) Colocar la URL en un browser de la mquina cliente.

    Page 23 of 34Manual del Generador .NET GeneXus 9.0

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

  • 5) Instalar la aplicacin

    6) La aplicacin est felizmente instalada en el cliente lista para ejecutar. Cada vez que se ejecute la aplicacin en el cliente se comparar el appname_manifest.xml que se tiene en el cliente con el appname_manifest.xml que est en el server de haber diferencias se preguntar si desea bajar la actualizacin:

    Para aplicaciones distribudas (tres capas) es anlogo

    REQUERIMIENTOS

    - Microsoft Windows 2000, Windows XP Professional or Microsoft Windows Server 2003 - .NET Framework 1.1 - Setear seguridad para poder ejecutar http://server/App/Setup/NoTouchDeploymentStub.exe. Observacin: los requerimientos pueden ser vistos en el archivo install.html que es accedido al momento de realizar la instalacin.

    ADVANCED

    La publicacin de una aplicacin, crea por defecto en el folder Publication (o dependiendo del valor ingresado en la opcin Physical Path), un conjunto de archivos similares al bin del modelo. A este se le adicionan: -Object_manifest.xml: existe un archivo xml por cada main que se publique. En este archivo se tiene la informacin del manifestId (este es un autonumerado), y el hashcode de cada archivo, ambos se chequean para verificar si la aplicacin precisa un update o no. -Folder Setup: Aqu se encuentra los archivo para instalar la aplicacin que son:

    - Install.html es una interfase que simplemente llama al NoTouchDeploymentStub.exe -NoTouchDeploymentStub.exe: Tiene embebido las dlls standares de microsoft e informacin del manifiesto que instala en el cliente. -NoTouchDeploymentStub.exe.config: Permite modificar la Url del manifiesto, esto es til cuando no se conoce el nombre del server al momento de hacer la publicacin.

    La estructura de este archivo, que debe ser creado por el usuario es la siguiente:

    Page 24 of 34Manual del Generador .NET GeneXus 9.0

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

  • Esta funcionalidad esta disponible a aprtir del upgrade 2 del generador

    Cuando el cliente instala una aplicacin, esta reside en el folder seteado en la propiedad Client installation folder (por defecto Application Data). Alli se instala: - Folder APP: tiene la instalacin propiamente de la aplicacin (Client.exe.config y dlls) - Updaterconfiguration.config: este archivo es creado la primera vez que se instala la aplicacin y extrae la informacin del NotouchdeploymentStub.exe. Este por ejemplo tiene la informacin de donde se encuentra el manifiesto en el server. - Microsoft.Application.xxx.dll: estos archivos standares del Application block de Microsoft son instalados desde el NotouchDeploymentStub.Exe - GxAppStart.exe: Es el ejecutable que se encarga de disparar el proceso de chequeo de una nueva versin, es llamado por el ejecutable de la aplicacin. El mecanismo de verificacin de un update de la aplicacin es disparado por el gxAppStart.Exe del cliente, el cual es invocado al levantar el exe de la aplicacin. Este compara el ManifiestId, que se encuentra en el Object_manifest.xml del lado del server, y si es distinto activa el update. Si el manifiest Id no cambio, comienza a comparar los hashcode de cada uno de los archivos (que se encuentran en el Object_manifest.xml tambin) si alguno cambio activa el update. La activacin del update consiste en invocar al NoTouchDeploymentStub.Exe el cual transfiere los archivos necesarios al cliente.

    Reportes PDF

    Existen algunos seteos especificos para el caso de reportes PDF que son configurables a traves de un archivo de configuracin PDFReport.INI

    SETEO DE MRGENES

    Editando el archivo PDFReport.INI. es posible setear los mrgenes izquierdo y superior en las propiedades LeftMargin y TopMargin respectivamente. Por ejemplo: LeftMargin=3.5

    TopMargin=2 Los valores default de ambos es 1. El separador de decimales debe ser el punto y no la coma, por ejemplo: LeftMargin=3.5

    FONTS EMBEBIDOS

    Puede darse que en el reporte GX se incluyan determinados fonts que el usuario final no cuente con ellos al ejecutar este reporte. La forma de evitar esto es embeber en los reportes generados los fonts deseados. La forma de incluir esta lista es a travs del archivo PDFReport.INI especificando la font y la ubicacin de la misma en la seccin Embebed Fonts. Por ejemplo en muchos casos es necesario para visualizar los cdigo de barra, para ese caso alcanzara con configurar en el archivo:

    [Embeed Fonts] 3 of 9 Barcode= true [Fonts Location (MS)] 3 of 9 Barcode= C:\WINDOWS\Fonts\3of9.TTF

    El path debe ser el absoluto del servidoro Web y podria variar segn el sistema operativo, por ejemplo C:\WINNT\Fonts\3of9.TTF

    ARCHIVO DE CONFIGURACION PDFREPORT.INI

    Este archivo se encuentra en el directorio donde se ejecuta el reporte, y es automticamente generado al ejecutar un reporte en caso de que no est presente.

    Seccin 'Embeed Fonts':

    Para cada nombre de font se le asocia un booleano que indica si embeber el font o no (para granularidad ms fina de la GeneralProperty). Para embeber un font, debe estar en 'true' la generalProperty y la property de esta seccin. Para setear qu fonts embeber, se puede ejecutar el 'com.genexus.reports.PDFReportConfig' *

    Seccin 'Fonts Location (MS)' y 'Fonts Location (Sun)'

    Se almacenan los mappings 'FontName= ubicacin del .ttf asociado'. Estos mappings son distintos para MS y Sun. Estos mappings son creados automticamente

    Embeed Fonts booleano que indica si embeber los fonts o no (ver Seccion 'Embeed Fonts')

    SearchNewFonts booleano que indica si se deben buscar los fonts si no estn en el INI al embeberlos

    SearchNewFontsOnce booleano que indica buscar por nica vez los fonts si no se encuentran

    Version Indica la versin del PDFReport (formato a.b.c.d) // actualmente genera siempre 1.0.0.0

    FontsLocation Indica la ubicacin de los fonts LeftMargin Indica el margen izquierdo asociado al documento (en centmetros) TopMargin Indica el margen arriba asociado al documento (en centmetros) OutputFileDirectory Si en la output_File del reporte GeneXus no se especifica path se

    toma en cuenta la outputDirectory sino se toma el path que se especifica en GeneXus

    OutputFileDirectory Si en la output_File del reporte GeneXus no se especifica path se toma en cuenta la outputDirectory sino se toma el path que se especifica en GeneXus

    DEBUG Indica que se quiere mostrar DEBUG por la stdout. Muestra informacin como la siguiente:

    GxSetDocName: 'reporte.pdf' setPageLines: 999 setLineHeight: 15 GxAttris: \-> Font: Helvetica (8) BOLD \-> Fore (0, 0, 0) \-> Back (255, 255, 255)

    GxEndDocument!

    Page 25 of 34Manual del Generador .NET GeneXus 9.0

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

  • Seccin 'Fonts Substitutions'

    Se almacenan pares 'Font= Font' que mapean un font en otro. Por ejemplo, se puede poner 'Impact= Courier', para mapear un TrueTypeFont en otro. Tambin se puede mapear un font en un Type1, por ej: 'Impact= Helvetica'. Estos mappings los puede realizar el usuario.

    Incluir cdigo nativo

    COMANDO CSHARP

    Asi como en el resto de los generadores es posible incluir cdigo nativo del lenguaje en los programas generados, para esto existe el comando CSHARP La sintaxis es anteponer la palabra CSHARP en el cdigo

    PROGRAMAS EXTERNOS .NET

    Otra opcion para incluir cdigo nativo .Net de usuario es llamar a una funcion externa, para esto se debe definir un programa csharp (.cs) e invocarla con: call('FuncExt', par1, par2) Esto se traduce a codigo C#: new funcext(ref _Context).execute(ref AV8par1, ref AV9par2) Consideraciones:

    - Se debe tener una clase con el nombre de la funcin - Esta debe tener un constructor que recibe un parmetro de tipo IGxContext (se debe incluir el namespace GeneXus.Application - Se debe tener un mtodo execute que recibe los parmetros por referencia. - Todos los nombres son siempre en minscula.

    Por ms informacin vea el apndice y/o este ejemplo completo en: http://www.gxopen.com/gxopen/servlet/hproject?395

    Permisos .NET

    PERMISOS PARA EJECUCIN DE ASSEMBLY REMOTO

    Para ejecutar la reorganizacin (reor.exe) o el virtualdir.exe o cualquier assembly desde alguna mquina de la intranet no contar con todos los recursos necesarios. El assembly cuenta con diferentes niveles de seguridad segn en el sitio en el cul se encuentre: My Computer: Full Trust ( los programas son totalmente confiables y pueden acceder a todos los recursos necesarios) Local Intranet : Tienen un nivel diferente, ms 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 ms bajo y en general no pueden realizar tareas sin la aprobacin del usuario. Para solucionar este problema: 1) Administrative Tool/Microsoft .NET Framework Configuration/ Esto lo que hace es abrir la consola ".Net Admin Tool" Entre otras cosas hay una entrada para "Runtime Security Policy"

    Luego ir al link Adjust Zone Security Seleccionar la zona Intranet y aumentar el nivel de seguridad a Full Trust

    Page 26 of 34Manual del Generador .NET GeneXus 9.0

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

  • Otra posible solucin es darle permisos en este caso solo al exe de la reorganizacin (reor.exe). Para ello ir al link "Increase Assembly Trust" y aumentar el nivel a full trust solo a ese assembly. Tambin puede configurarse (Framework 2.0) por lnea de comando caspol -m ag All_Code url file:// W:\LibraryPro\ * FullTrust n RemoteKB.LibraryPro

    Esto setea la seguridad a nivel de la maquina (-m) para todos los archivos en W:\LibraryPro con nivel FullTrust y llama a ese grupo RemoteKB.LibraryPro (aca puede ir el nombre que se desee). -ag especifca que se est agregando un grupo (addgroup). caspol m cg LocalIntranet_Zone FullTrust

    Aca se est seteando FullTrust para la Zona LocalIntranet_Zone. -cg indica que se estea cambiando el nivel de seguridad a nivel del grupo LocalIntranet_Zone (chggroup).

    AUTORIZACION POR WEB PANEL

    En caso de que sea necesario asignar diferentes niveles de autorizacin a diferentes objetos web dentro de un mismo directorio virtual debe procederse como se describe a continuacin. Crear un archivo .aspx por cada web panel, web proc, 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. Luego, en el IIS dar botn derecho sobre el directorio virtual / propiedades. En la parte de application settings, ir al botn Configuration. En la hoja App mappings, elegir la extensin aspx e ir al botn Edit. Luego activar el check box que dice "check that file exists.

    Apndice

    Tips

    COMO INCLUIR UNA DLL EXTERNA?

    Se distinguen tres casos: 1- Llamar a una dll o componente .NET

    Por ejemplo se tiene un assembly .NET que suma uno a un nmero, Sum.dll por ejemplo. Para invocarla desde GeneXus se debe: A. crear un SUMGX.cs con la definicin de la funcin. Este debe tener un constructor execute para llamarlo, por ejemplo el cdigo del CS sera: Using classSum; //Namespace del assembly public void SUMGX(int YYYY ... ); public void execute(ref int YYYY ) { /// llamar a la funcin sum del assembly B. Incluir en la preference Compiler Flag la referencia a Sum.dll C. Copiar Sum.dll al directorio bin del modelo D. Desde el cdigo GeneXus programar

    Call('SUMGX', &num) Se puede obener un ejemplo en http://www.gxopen.com/main/hproject.aspx?395

    2 - Llamar a una dll COM

    Para poder invocar una dll Com desde una aplicacion .NET, existe un utilitario, "tlbimp", que genera una dll .NET que funciona como puente sobre la dll com. Por ejemplo tlbimp /out:GXNET.dll GXCOM.dll La dll que genera (GXNET.dll) es una dll .net a partir de la COM (GXCOM.dll) Seria similar al caso anterioir pero en C copiar la dll creada con tlbimp y la dll com.

    Page 27 of 34Manual del Generador .NET GeneXus 9.0

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

  • Hay un ejemplo en http://www.gxopen.com/main/hproject.aspx?8 version 1.4.2)

    3- Llamar a una dll No COM desde .NET Crear un CS con la definicin de la funcin, similar al caso 1 pero usando el comando Dllimport de .NET, sera:

    [DllImport("XXXXX.dll")] public static extern bool funcion(string YYYY ... ); public void execute(ref string YYYY ) { /// llamar a las funciones de la dll No COM

    Notar que tambin debe tener el constructor execute que es el cdigo que traduce el generador en el fuente al hacer un call. Importante En la versin 80 hay un cambio en la generacin interna de los llamados: En la versin 7.5 al hacer call a un procedimiento cualquiera genera new FUNCTION (ref _Context).execute(ref parm1 ...); En la versin 80 al hacer call a un procedimiento cualquiera genera new FUNCTION(context ).execute( ref parm1 ... ); Esto implica que al migrar de versin de GeneXus hay que modificar el constructor (los parmetros del mismo ya no son por referencia) Hay un ejemplo en http://www.gxopen.com/main/hproject.aspx?395

    COMO GENERAR CDIGO DE MAQUINA A PARTIR DE CDIGO IL ?

    Existe un utilitario, "ngen", que compila el codigo intermedio de la plataforma .NET (codigo IL) en cdigo de mquina. Esto podra mejorar la performance de ejecucin, ngen hgxtech.dll - esto compila la dll a codigo de maquina y la instala ngen /show - muestra las dlls instaladas ngen hgxtech /delete - lo desinstala (vuelve a andar con el