You are on page 1of 34

Manual del Generador .NET GeneXus 9.

0

Page 1 of 34

Manual del Generador .NET GeneXus 9.0
Enero 2007

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

Manual del Generador .NET GeneXus 9.0
Introducción
Objetos Ambientes

Page 2 of 34

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

Modelo Web
Configuración de un modelo Propiedades específicas General section .Net Specific Section ADO .NET Specific Section Client Server specific Section Opciones de ejecución Generación de objetos Compilación Avanzados Generación de trace Archivo de configuración Puesta en producción Instalación en el servidor Requerimientos Instalación en el Cliente

Modelo GUI
Configuración de un modelo Propiedades específicas General .NET Specific Section ADO.NET Specific Section Transaction configuration Section Client Server Opciones de ejecución Generación de objetos Compilación Avanzados Generación de trace Archivos específicos Puesta en producción Instalación en el servidor Instalación en el Cliente

Modelo GUI – Aplicaciones Distribuídas
Configuración de un modelo Arquitectura Propiedades Específicas Model Properties Procedure Properties Transaction Properties Work Panel Properties Generación de objetos Servidores de aplicaciones IIS como servidor de aplicaciones Servidor de aplicaciones GeneXus Ventajas y desventajas Avanzados Generación de trace Pool de conexiones Archivos de configuración Puesta en producción Requerimientos

Generalidades
Acceso a la base de datos Cache de sentencias Tipos de datos Generación de programas de reorganización Transactional Integrity Transacciones de más de un nivel (GUI) Smart Static Panels (Web) Llamadas a Stored Procedures Comando Submit Submits queued components (COM+) Requerimientos Generación Configuración, ejecución Consideraciones Publication assistant (GUI) Descripción Requerimientos Comando Csharp Permisos .NET Permisos para ejecución de assemby remoto Autorizacion por Web Panel

Apéndice
Tips ¿Como incluir una dll COM ? ¿Como generar código de maquina a partir de código 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.0
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 ejecución Problema en compilación Problemas en reorganización

Page 3 of 34

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

1.jsp?id=2005-08-15+14%3A41% http://www. mientras que las aplicaciones WEB tienen interfaz HTML (y no se requerirá bajar archivos de clase. tiene interfaz html y se ejecuta dentro de un browser. el cual requiere el cliente. procedimientos y reportes. Vale aclarar que las aplicaciones GUI generadas pueden ser ejecutadas tanto en Intranet como en Internet.90.Net de acceso a MySQL MySQLDriverCS.com/doc/mysql/en/InnoDB.NET . 11/12/2008 .OracleClient). deployment. y compilados a assemblies (dlls o Exe) en código común (IL Intermediate Language) las cuales en tiempo de ejecución son interpretados por la máquina virtual de . Además.DB2. Requerimientos Requerimiento software PLATAFORMA . es soportado a partir del Upgrade 2 del generador El Data Provider (que viene con el IBM Informix Client SDK V2.NET.Data. PostgreSQL y SQL Server.iSeries.gxtechnical.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. se generarán las transacciones con su form web. brindando las ventajas que este tiene (reutilización de classes.microsoft.NET. web services y reportes con salida PDF.NET Para el desarrollo de aplicaciones es necesario instalar: Release del Framework Redistributable 1. Lo que diferencia a una aplicación GUI.. de esta forma se instala el Data Provider correspondiente.0 Generador . compuesta básicamente por los objetos Transacciones.0 y J# Version 2. Este tipo de aplicaciones se desarrollan básicamente con los objetos WEB de GeneXus: web panels. La dll es IBM. Ambientes Las aplicaciones se comunican con la base de datos a través de ADO. etc) Una aplicación GUI (Graphical User Interface) tiene interfaz gráfica Windows. de una aplicación WEB.1. asi como aplicaciones GUI distribuidas (3 capas) El generador aprovecha todas las cualidades de .ibm.5 o superior. es un browser.Data. El driver cliente para . Una aplicación WEB. MySQL MySQL soporta diferentes motores.ibm. procedimientos.. No se requiere el cliente SQL Server Oracle Se debe tener el Cliente de Oracle versión 8.NET Framework http://msdn. GENEXUS Development environment GeneXus 9.cs) .1 y J# Version 1. por tratarse de una aplicación 100% resuelta en el servidor).asp package El Visual J# es requerimiento para las aplicación GUI y para los reportes PDF de las aplicaciones Web.NET tener en cuenta que no es soportado por todos los DBMS (ver más en Requerimientos).com/webapp/download/preconfig.mysql.NET utiliza el Data Provider de Microsoft para SQL Server (el cual se instala con el framework). permite el diseño de “Aplicaciones Web y GUI”.com/netframework J# distribution http://msdn. Work Panels. por su parte. DB2 UDB for iSeries Se necesita la V5R3 del iSeries Client Access con un service level igual o superior a SI20055.net/projects/mysqldrivercs.dll al directorio gxnet/bin si la aplicación es web o gxnetwin/bin win.dll – se debe copiar bajo el directorio gxnet/bin si la aplicación es web o gxnetwin/bin win Informix El acceso ADO.NET 9. Objetos Los programas generados son fuentes de código C# (.TC4) se puede obtener desde: http://www14.0 Page 4 of 34 Introducción El generador .NET GeneXus 9. es decir crearla y reorganizarla. GeneXus utiliza el InnoDB (http://dev. La menor versión soportada del server es 3. a través de la plataforma .com/vjsharp/downloads/howtoget. DB2 Universal Database. El valor “Server Name” de las Dbms option hace referencia al Service Name definido en la instancia del Oracle.0 MANEJADOR DE BASE DE DATOS SQL Server ADO. son todos los DBMS soportados por GeneXus: DB2 UDB for iSeries.DB2. Los posibles DBMS a utilizar con el generador . Oracle.1 Redistributable Package o Release del Framework Redistributable 2.MySQL.NET.html). DB2 Universal Database Se necesita tener instalada la versión 8.NET.dll – Biblioteca .dll.0/manualn. Las aplicaciones GUI pueden generarse en 2 capas o distribuidas (utilizando el protocolo .com/servers/eserver/iseries/access/casp.software. siendo el primero el método nativo de acceso (y el recomendado).NET u ODBC.NET.Net se puede obtener desde: http://sourceforge. El único requerimiento para ejecutar una aplicación WEB. seguridad.0 Redistributable Package Para ver los requerimientos y descargarlos de forma gratuita dirigirse a: . Luego de instalado se debe tener los archivos: mysql. En el caso de optar por ADO.NET.Manual del Generador .NET Remoting para la comunicación entre el cliente y el servidor de aplicaciones). al generar en un ambiente web. se debe copiar a los directorios gxnet/bin si la aplicación es web o gxnetwin/bin win.html Al crear un modelo se debe copiar la dll IBM. La menor versión testeada del server es la V5 R1 Se puede obtener desde:http://www-03.microsoft. El generador también nos brinda la posibilidad de realizar “Mantenimiento de la base de datos”.Data. es la interfaz: las aplicaciones GUI tienen interfaz gráfica Windows (y el cliente deberá tener instalados los archivos de clase necesarios). La implementación utiliza el Data provider de Microsoft para Oracle (System.58.7.23.3 o superior. Informix.

NET GeneXus 9. Dicha dll se encuentra en el directorio: <Program Files>\IBM\Informix\Client-SDK\bin Las posibles keys del connection string que se pueden setear en las DBMS Properties “Additional connection string Attributes” están en: http://publib.Net framework to access database server. En ejecución se invoca al Hwebxxx.aspx Notas: n En el caso de configurar trusted connection (paso 3) es necesario configurar permisos de ASP.dll (código IL) bajo el directorio bin y se agrega una entrada en el web.com/infocenter/idshelp/v10/index.dll al directorio gxnet/bin si la aplicación es web o gxnetwin/bin win.0 3A25. n Luego de compilar. PostgreSQL El acceso ADO. la versión del DBMS puede ser 7.config o no (dependiendo de la propiedad HttpHandlerFactory ) La salida de la compilación se envia al archivo Runout.NET generadas.0).projects.229714R&S_TACT=104CBW71&S_CMP=&s= Page 5 of 34 Luego de instalado.x. Si se desea conectarse a travez de un data source ODBC.log. es open source (LGPL) y se pueden obtener. Se recomiendan los drivers de Intersolv o Informix. Configurar las propiedades de ejecución : § Compilador (csc. por mas detalles ver las secciones de “puesta en producción” Requerimientos de hardware Para utilizar las aplicaciones .0/manualn. Configurar la Model Property Access Method en ADO. Y no requiere instalar ningun cliente. 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.htm SERVIDOR WEB En el caso de implementar una aplicación Web deberá contar con el servidor web Internet Information Server 5.NET § § Language = . junto con la documentación desde: http://pgfoundry.NET Framework. Crear un modelo de prototipo o producción con el generador .0 o Informix Foundation 2000.0RC1-bin-ms1.NET User Interface = Web 2. 11/12/2008 .netpr. Configurar las Dbms Options del modelo: § Access technology to set: ADO. n En caso de ejecutar desde un directorio de la red interna.gxtechnical.exe.. Los requerimientos en el servidor de producción son similares. se encuentra bajo directorio de instalación del framework) § Nombre del directorio virtual (services por defecto) 5.NET|ODBC 3. IMPORTANTE: El mismo debe ser instalado antes del . Las posibles keys del connection string que se pueden setear en las DBMS Properties “Additional connection string Attributes” estan en: http://npgsql. ver solución aquí.Security.NET http://www. Works with Postgresql 7. It allows any program developed for . It is implemented in 100% C# code.0 o superior (Por más información ver requerimientos de ASP.jsp?topic=/com. Ejecutar la creación de la base de datos. pero se recomienda utilizar al menos un Pentium de 133 para compilar/ejecutar las aplicaciones.NET|ODBC § Database name: <Nombre de la base de datos> § Server name: <nombre de servidor o IP>[.boulder. Compilar y Ejecutar Al compilar Webxxx se genera el assembly Hwebxxx.zip) Npgsql is a .1. tener en consideración la configuración de: Permisos . es necesario tener un mínimo de 128MB de RAM. el mismo debe ser de sistema.Informix.NET del .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. GeneXus creará un directorio virtual con el nombre especificado en el IIS local apuntando al <directorio físico de la KB>\<dataxxx>\web.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.ibm.net framework 1. para crear un modelo se debe copiar la dll IBM.postgresql. El procesador en principio no es tan crítico como la memoria RAM.Net data provider for Postgresql. En el cliente debe estar instalado el cliente con la versión correspondiente.Manual del Generador .Data. Se sugiere ver la página de Microsoft para obtener los requerimientos del .doc/netprmst76.NET.ibm. Si no fuera así ocurrira el error 404 (resource cannot be found). para los pasos 5 y 7. Generar programas 7. Modelo Web Configuración de un modelo 1. 6.NET Framework y J# distribution package.org/docs/manual/UserManual.dll.x and 8.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 también.org/projects/npgsql (Npgsql 1.<Puerto>] § Use trusted connection: No § User id: <usuario> § User password: <password> 4..1 o 2.0RC1: Npgsql1.

dll ).1\bin" ). (se requiere el SDK en el ambiente de desarrollo para ejecutar el sn. el generador al momento de compilar busca un key. Aquí se mapea el request del aspx con el assembly GeneXus. Los programas generados por GeneXus y compilados con C# se encuentran disponibles bajo el namespace indicado por esta propiedad.exe y generar el archivo con la Key).0 y Permisos del servidor de Web para ejecutar una aplicación. GENERAL SECTION Generate developer menu makefile Indica si se generarán los archivos necesarios para compilar el “developer menu”. No: El programa generado no tiene un “Strong Name”. El valor en NO es útil para evitar el armado del “makefile” del “developer menu”.NET SPECIFIC SECTION http://www.Net Application Namespace Determina el namespace de la aplicación.Programs.0.cs Compiler Flag La información de esta propiedad se incluirá en el . Además se debe configurar en la variable de ambiente “path” el camino a sn.NET Para ingresar a estas propiedades debe ir a: “File/Edit Model/ Botón Properties”. Assemblie versión number Determina el numero de versión a asignar a los assemblies que tienen strong name. Config HttpHandlers Section La información de esta propiedad determina cómo se mapean los assemblies en ejecución. ADO .Programs Generate strong named assemblies Determina que los objetos main y/o dlls (assemblies) generados tengan un nombre único o no. es similar a Handler Factory. Valores HttpHandler for each object: Una entrada en el web.NET: Acceso vía ADO. HttpHandlerFactory es mas rápido para prototipar pero mas lento en cada llamada porque el mapeo se resuelve en cada requerimiento. Valor predeterminado: Yes .config por cada assembly. si no hay: genera uno. Además permite tener objetos (*.Programs.dll) HttpHandlerFactory: Hay una sola entrada para todos los objetos en el web. Es útil por ejemplo para generar información de debug (incluyendo el string “/debug”) o para incluir una dll dentro del namespace (/r:xxx..0. 11/12/2008 .NET SPECIFIC SECTION . Es útil para usuarios avanzados que quieran algún tipo de deployment en el GAC (Global Assembly Cache). se genera un archivo ashx por cada objeto que realiza el mapeo con el assembly GeneXus.snk en el directorio dataxxx.object El valor HttpHandler for each object es más rápida en ejecución pero mas lento en la carga inicial. Valor predeterminado = HttpHandler for each object Access Method Determina qué tipo de acceso se va a utilizar para acceder a la base de datos.exe para que la encuentre el compilador ( "C:\PROGRAM FILES\MICROSOFT. Page 6 of 34 Propiedades específicas del Generador . Valor predeterminado: NO Para generar el “Key” que identifica al objeto.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.gxtechnical..Net Framework. con HttpHandlerFactory esto no es así. El valor ASHX.config.0 Esta información de versión se almacena en generación en el archivo GxAssemblyInfo. crea un archivo físico con el nombre del objeto y extensión ashx. de lo contrario da el error "Before compile error: The system cannot find the file specified" Los programas estándar provistos por el generador tienen strong names independiente del valor de la propiedad.NET\SDK\V1.0/manualn. el cual es invocado en ejecución.Manual del Generador .rsp que se usa para compilar los assemblies. Valores ODBC: Acceso vía ODBC ADO. este es muy costoso ya que debe generar todos los response file (*. Esta opción puede enviar mensajes de error poco descriptivos. como deployment en el GAC o configuración de seguridad para el assembly Valores Yes: El programa generado tiene un “Strong Name”. lo que dificulta la prototipación. en donde se indica un objeto al que pedirle el mapeo ASHX: No hay mapeos en el web. El método de acceso especificado será utilizado para acceder a cada uno de los data stores. La propiedad solo aplica cuando Generate strong named Assemblies esta en Yes Valor predeterminado: 1.NET GeneXus 9.rsp) cada vez que se compila un objeto.aspx) no generados con GeneXus.object (bin\object. Valor predeterminado = GeneXus.NET Valor predeterminado = Depende del Dbms asociado al data store Default.config. Esto permite acceder a un conjunto de ventajas importantes que provee el .

.> del archivo web. La preparación incluye la compilación y validación de la sintaxis de dicha sentencia por parte del servidor. http://www.NET es el de preparar las sentencias SQL. 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”. Debug 6. Los programas generados en .exe. Para poder configurar este tiempo se utiliza esta propiedad. Para eso se mantiene un pool de cursores preparados. 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”.config (para modelos Web y Gui respectivamente). que se configura a nivel de tablas. es permitir definir distintos puntos de persistencia en las tablas del modelo. en modo de diseño. permitiendo seleccionar el tiempo en que los datos van a persistir en memoria antes de ir a buscarlos nuevamente a la base de datos. Off 1. All Valor predeterminado: Off Esta propiedad escribe el tag <log4net threshold=. Valor predeterminado: 100 Opciones de ejecución Para ingresar a estas propiedades debe ir a: “File/Edit Model/ Botón Execution”. En el caso de modelos web tambien se escribe el tag <trace enabled=true /> CLIENT SERVER SPECIFIC SECTION Propiedad Maximum Cached cursors per connection Uno de los costos más importantes en las operaciones ODBC/ ADO. Propiedad Change frequency Si bien el “cache” se realiza a nivel de sentencia. cuyo tamaño por defecto es de 100 cursores.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.. Error 3.config y client.Manual del Generador ..NET realizan un manejo inteligente de los cursores abiertos. se mantiene en el “cache” durante el tiempo en minutos definido en esta propiedad. Warn 4. Valor predeterminado = 60 La diferencia entre la propiedad “Time to Time” y la propiedad “Hardly Ever”. Fatal 2. de modo que no haya que volver a preparar cursores que ya fueron preparados. 11/12/2008 . se mantiene en el “cache” durante el tiempo en minutos definido en esta propiedad. 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/producción Time to Time: Valor que se define a nivel de modelo prototipo/producción Valor predeterminado = Pretty Often Log Level Esta propiedad permite configurar el nivel de trace de acceso a la base de datos con conexión ADO.0 Propiedad Enable Caching Esta propiedad permite definir si se habilita el “cache” de sentencias. se puede cambiar el valor de esta propiedad. es a nivel de tabla que se configura.NET..gxtechnical. Info 5.0/manualn. Valores 0.NET GeneXus 9. Si se desea cambiar este número.

Únicamente con el valor Ashx de dicha property se genera un archivo físico por cada objeto. No existe un archivo físico aspx. con un nombre único en el universo .log Como resultado de la compilación se genera una dll con el código común de .NET GeneXus 9.NET (IL). este lo provee el framework SDK y se encuentra bajo el directorio de instalación del mismo en <NET frameworkpath>\csc.NET se apoya en un conjunto de programas estándar. se crea un type_<nombre_del_sdt>.x. Dentro de los relacionados no son incluidos los otros objetos que son main ya que se arman compilándolos específicamente.Web..0/manualn.web. lo que significa que son identificables. se deben configurar la propiedad Log level del modelo. el cual tiene una entrada para cada objeto y es el UpdateConfigWeb quien ingresa la información al Web.rsp'. Al igual que el resto de los generadores. http://www.NET. eso significa que no genera un archivo como log. esta contiene el directorio virtual a ser creado (si no existe) por GeneXus en el Internet Information Service (IIS) local.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.config o el cabezal del objeto (dependiendo de la property config httphandler section) contienen la información de configuración de la aplicación web. collections o Business Components. referencias. siendo el < NET frameworkpath> = WINNT\microsoft.0 Page 8 of 34 Compiler path Determina el path del compilador (csc. pero se envían al trace de ASP.config define un conjunto de tags no propietarios dentro de la sección system.exe.config luego de la compilación 1. COMPILACIÓN El código se compila (desde el dialogo F5 del generador) y el log con el resultado de la compilación se despliega en la pantalla y se graba en el archivo RunOut.exe). collections). Esto es útil para hacer deployment automático en el Global Assembly Cache (GAC) Avanzados GENERACIÓN DE TRACE Para habilitar la generación de trace (archivo de log) de la aplicación. Los programas generados también tiene la posibilidad de configurar strong name (no así los assemblies de la reorganización). el generador . este es supervisado.Habilita el archivo de log <system.Config luego de la compilación.NET. en tiempo de ejecución. por un intérprete (CLR) que permite ejecutarlo convirtiéndolo a código de maquina. Si es un web panel o un objeto main. El archivo Web.cs). Habilita la configuración del trace con el tag “threshold” <log4net threshold="<Value>"> 2. Si es main además se crea un archivo bld<nombre_del_objeto>. 11/12/2008 .config se genera a partir del GXCFG. El momento de la creación es luego de la compilación y reorganización.cs que ejecuta el armado del objeto y los relacionados (llamados desde este). Este archivo contiene la información necesaria para compilarlo (fuentes que se incluyen. Esta agrega dos configuraciones en el archivo web.NET y no es posible acceder al archivo de log. se crea archivo con el mismo nombre del objeto y con extensión '. Si referencia SDTs. para esto se configura el paso 2 Por defecto los modelos Web tiene como “root appender” el ASPNetTraceAppender.gxtechnical.web> <trace enabled="true" /> Con el paso 1 si el <Value> es diferente de OFF se generan los mensajes de log.Manual del Generador . en este se asocia cada dll con una página virtual con extensión ASPX. si no que manda los mensajes de log al trace de ASP.cs con la definición del tipo estructurado referenciado. El archivo Web.rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos comunes a todos los assemblies (SDTs. Estos programas tienen StrongName. Tambien se crea el archivo gxcommon.xxxx Virtual directory Determina la URL base de ejecución.net\vx. Generación de objetos El proceso de generación de un objeto consta de dos etapas: GENERACIÓN Luego de especificar un objeto al generarlo el generador crea por cada objeto: un archivo con el código fuente en lenguaje c# (.. El archivo web. etc).

config también se utiliza en aplicaciones distribuidas.dll). 11/12/2008 . tenemos archivos de configuración donde se definen determinados propiedades de las aplicaciones. la conexión a la base de datos y la generación del “log”.net/ ARCHIVO DE CONFIGURACIÓN Cuando estamos trabajando con aplicaciones .\iTextdotNET. la sección Appsetting si lo es luego de cada compilación (aquí se almacenan propiedades del modelo y configuraciones del generador).0 o superior (windows 2003) se deben dar permisos sobre el directorio C:\Windows\Temp\. Max Pool Size = 50. (pero el mismo es configurable) . Contiene la configuración sobre la ubicación del servidor de aplicaciones. entre otros.web> <trace localOnly="false" enabled="true" /> Notas: La generación de archivos de log puede degradar la performance de la aplicación por lo cual se recomienda en producción tener apagada la misma. en algunos casos sí requieren un formato estándar predefinido por la plataforma. Por más información acerca del log4net se puede acceder a la URL: http://log4net. Se especifica dentro de la sección System.Web con el tag <identity impersonate="true" /> Consideraciones: Es necesario si se quiere utilizar trusted connection para la conexión a la base de datos (Sql Server).Integrated Security =No. </layout> </appender> <root> … </root> </log4net> <system.NET. cuando el servidor de aplicaciones corre bajo el IIS. de lo contrario ejecuta con el usuario ASPNET. Por ejemplo el string de conexión a la base de datos en modelos ADO.Si se tiene <log4net threshold="OFF"> el log no se genera (no se generan mensajes desde la gxclasses. más información en sección Aplicaciones distribuídas Conexión a la base de datos La información de conexión a la base de datos queda almacenada en el archivo web.. De lo contrario da un error Access to the path "C:\DOCUME~1\ARMIN-NB\ASPNET\LOCALS~1\Temp\e8ebd99f-17de-4447-83f835769f67bd23\iTextdotNET” http://www.config con el formato <appSettings> <add key="Connection-Default-DataSource" value="mydatasource" /> <add key="Connection-Default-User" value="Elj20MqY44RPdvT8FEpDD0==" /> … Estos tags no son propietarios del framework. web.web> </configuration> La sección System Web no es rescrita por el generador.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.config Se crea cuando se genera aplicaciones web y es utilizado cuando corremos las aplicaciones bajo Internet Information Server. Desde aplicaciones web es posible generar trace a archivo.. de lo contrario. como por ejemplo la información para la conexión a la base de datos o la configuración de un archivo de “log”.axd Cuando se ejecuta una aplicación Web remota. Para visualizar el trace desde los clientes. son definidos por el generador. </appSettings> <log4net threshold="OFF"> <appender name="ASPNetTraceAppender" …. y no se toma en cuenta ninguna otra configuración (por ejemplo trace o root).0 Page 9 of 34 Luego de generado el log de las aplicaciones Web.sourceforge.NET con SqlServer podría ser: <add key="Connection-Default-Opts" value=". Nota: Este web. . Sino.Manual del Generador ..NET GeneXus 9. El contenido de los mismos. se debe incluir la opción localOnly ="false" si se desea visualizar el trace desde la máquina de los clientes. se debe incluir la entrada: <system. Si se esta con IIS 6. Min Pool Size=10" /> Identity impersonate Esto permite que los objetos web corran con el usuario que el IIS le pasa a la plataforma . para poder visualizarlo se puede acceder a la URL: http://servername/dirvirtual/Trace. los procesos corren con la cuenta “machine” (usuario ASP.NET). solo se podrá visualizar el trace desde el propio servidor web.web> <trace enabled="false" /> < httpRuntime … < identity impersonate … <sessionState … <httpHandlers> </httpHandlers> </system.gxtechnical..net.0/manualn. Reportes PDF: En caso de tener identity impersonate="true" el usuario que ejecuta en el IIS de la página debe tener derecho de escritura sobre el "C:\Documents and Settings\<nombre del webserver>\<ASPNET\Local Settings\Temp" con IIS 5 o superior. Se encuentra en el directorio del modelo “dataxxx” y su estructura es algo similar a: <configuration> <appSettings> <add key="EVENT_AFTER_COMMIT" value="" /> <add key="Connection-Default-DataSource" value="mydatasource" /> ….

con un timeout de 20 minutos.com/library/default.fff} [%t] %-5p </layout> </appender> %c{1} [%x] .cambiar el web.. </system." 2 . Por mas información de la sección HttpRuntime http://msdn.config lo siguiente: <httpRuntime executionTimeout="<segs>"/> Siendo <segs> la cantidad de segundos que se desea esperar.config con el string de conexión <system.config la linea <httpmodules> <add name="sessionState" type="System.agregar al machine. Esto es útil en prototipación para mantener la websession ya que luego de reciclar el aspnet_wp o compilar los objetos y subirlos nuevamente se pierde la Websession.exe.gxtechnical.Inproc que usa el aspnet_wp.log en el directorio web/log debajo del directorio del modelo y también se podrá acceder al trace a través de la URL: http://servername/dirvirtual/Trace.asp Generación trace a archivo – Rolling file Es posible configurar un modelo Web para que también genere un archivo de texto. Inproc es el mecanismo default que implementa el generador. Para implementarla hay que primero levantar el servicio ASP. Luego.Sqlserver que en lugar de utilizar la memoria del servidor web para almacenar información grabada en las sesiones.exe) en el equipo que vaya a ser el que mantenga la sesión.Web. en el web..RollingFileAppender"> <file value="C:/<directorio del modelo>/web/log/client. 11/12/2008 . por ejemplo 3600.com/library/default..log"/> <appendToFile value="true"/> <maximumFileSize value="9000KB"/> <maxSizeRollBackups value="4"/> <layout type="log4net. 2.NET GeneXus 9. generará el archivo client. por tener configurado los valores "RollingFile" y “ASPNetTraceAppender".config: 1. hay que agregar la siguiente línea: <system.asp?url=/library/en-us/cpgenref/html/gngrfhttpruntimesection. En este caso.axd http://www.Net (tanto aplicaciones Web como aplicaciones tres capas hosteadas en el IIS) En aplicaciones Web si el request de una página demora más de 90 segundos se enviará un mensaje de Request Timeout al browser. agregando las siguientes entradas en el archivo web. <appender name="RollingFile" type="log4net.exe.Appender. configurar el valor desde Virtualdirectory\Configuration\options\Enabled Session State Http Execution Timeout Existe una forma de configurar el timeout de los requests en aplicaciones ..0 Page 10 of 34 SessionState Para implementar el manejo de sesiones (Tipo de dato Websession) el generador utiliza el HttpSessionState provisto por el framework.. por ejemplo: <root> <level value="DEBUG"/> <appender-ref ref="RollingFile"/> <appender-ref ref="ASPNetTraceAppender" /> </root> Es importante diferenciar los “appenders” que estén como “root”. Por defecto caducan. 2 .microsoft.asp?url=/library/en-us/cpguide/html/cpconsessionstate.Manual del Generador .data source=dataserver.Web del archivo web. Existen tres modos de almacenar la session state: 1 . Cuando se recicla el aspnet se pierden las variables de session.Layout.PatternLayout"> <conversionPattern value="%d{HH:mm:ss.%m%n"/> Se deben utilizar las barras “/” para indicar el directorio de la aplicación. Es posible configurar dicho tiempo desde <sessionState mode="InProc" cookieless="false" timeout="20"/> Por mas información: http://msdn. las variables websession pierden su valor. Sqlserver.NET State Service (aspnet_state.0/manualn..SessionStateModule" /> </httpmodules> Es posible configurar el tiempo que viven las variables de sesión.. StateServer Se puede almacenar la websession dentro del espacio de memoria de un proceso llamado aspnet_state.config. utiliza tablas de SQL Server.Stateserver para cuando se tiene más de un servidor 3 .microsoft. que son los appender que va a tomar en cuenta log4net cuando vaya a imprimir los mensajes de log. Incluir la entrada <appender-ref ref="RollingFile"/> Entrada dentro del Tag root.State. El puerto default es 42424. Para que no den timeout se deberá crear en la seccion System.web> <sessionState mode="SQLServer" sqlConnectionString=" Integrated Security=SSPI. ..web > El atributo stateConnectionString contiene la IP y el puerto del equipo utilizado para mantener la sesión.web> <sessionState mode="StateServer" stateConnectionString="tcpip=name_pc:42424" /> .com/gxdlsp/pub/genexus/csharp/docum/manuals/9. para esto se debería: 1 .asp En w2003 Server es posible configurar el timeout por directorio virtual. Para ello en las propiedades del directorio virtual.

config Si se usan tipos de datos de Office.log. • Servidor Web Internet Information Server 5.0/manualn. Para el caso de Internet Explorer la mínima versión soportada es I. siendo Fld01 el nombre del fólder GeneXus donde se encuentra el objeto.log.. 11/12/2008 .[<Puerto>] 4.0 (recomendable: Realizar la instalación del mismo a partir del Windows component update provisto por el setup de Visual Studio .js) Las imágenes.axd Si en el archivo web.Net Framework Redistributable 1.NET|ODBC Database name: <Nombre de la base de datos> Server name: <Nombre del servidor>.0.NET para los pasos 5 y 7 Propiedades específicas http://www.dll REQUERIMIENTOS Los requerimientos son similares al ambiente de desarrollo.E..NET) Cliente de Base de datos (no requerido en sql server) Servidor de Base de Datos • INSTALACIÓN EN EL CLIENTE Cliente Web: Solamente alcanza con un browser. Crear un modelo de prototipo o producción con el generador .Manual del Generador .exe y el assembly uWkp01.css y cualquier contenido estático deseado El archivo Web.0 Page 11 of 34 En caso de tener solo un appender: <root> <level value="DEBUG" /> <appender-ref ref="ASPNetTraceAppender" /> </root> No se generará el archivo client. Generar programas § Build / Build All 7.exe (bajo directorio de instalación del framework) 5.1 o 2.0 o superior . htmls.NET User Interface = Win 2. Configurar la propiedad del modelo Access Method en ADO.gxtechnical. Configurar las Dbms Options del modelo: § § § Access technology to set: ADO.NET|ODBC 3. *.dll o Fld01. Compilar y Ejecutar § Ejecutar el diálogo de ejecución (F5). Ejecutar la creación de la base de datos.NET GeneXus 9. Modelo GUI Configuración de un modelo 1.config de una aplicación Web se configura: <log4net threshold="ALL"> y en el Tag root: <root> <level value="DEBUG" /> <appender-ref ref=" RollingFile" /> </root> no se tomarán en cuenta las configuraciones: <trace enabled="true" /> <trace localOnly="false" enabled="false" /> porque estas configuraciones son válidas únicamente para el appender: <appender-ref ref="ASPNetTraceAppender" /> Puesta en producción INSTALACIÓN EN EL SERVIDOR En una aplicación web es necesario copiar al servidor: El directorio bin del modelo (donde se encuentran las dlls de cada objeto) Los java script ( *. § Build / Create (se asume que existe la base de datos) 6. 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. Esto depende de la propiedad del modelo Assemblies structure La salida de la compilación se envía al archivo Runout.dll. solamente se podrá acceder al trace a través de la URL: http://servername/dirvirtual/Trace. En caso de ejecutar desde una red tener consideraciones en la configuración de Permisos . 6.NET § § Language = .com/gxdlsp/pub/genexus/csharp/docum/manuals/9. es necesario registrar la gxoffice2. Configurar las propiedades de ejecución: § Compilador: csc.

x.exe Para ingresar a esta propiedad debe ir a: “File/Edit Model/ Botón Execution”.gif) Borrar (gxconfirm_dlt. esto implica que al mover un objeto de folder. Compiler path Determina el path del compilador (csc. siendo el < NET frameworkpath> = WINNT\microsoft.gif) CLIENT SERVER Maximum cached cursor Opciones de ejecución Para configurar la ejecución de una aplicación GUI .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). By Main .0/manualn..exe).4322 \csc.Net Win con acceso a la base de datos ADO. este lo provee el framework SDK y se encuentra bajo el directorio de instalación del mismo en: <NET frameworkpath>\Framework\v1. Valores Los bitmaps predeterminados son: Agregar (gxconfirm_add..Manual del Generador .NET SPECIFIC SECTION Assemblies Structure Esta propiedad determina el mecanismo de armado de los assemblies en un modelo . Este método de armado de assemblies es más natural y similar al comportamiento de los otros generadores Gui. alcanza con definir el camino del compilador (csc.0 GENERAL Generate developer Menu makefile Page 12 of 34 .net\vx.gif) Confirmar (gxconfirm_cnf.exe.1.NET GeneXus 9.NET SPECIFIC SECTION Application Namespace StrongName Version Number Compiler Flag Access Method ADO.NET.gxtechnical. 11/12/2008 .xxxx http://www.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. este lo provee el framework SDK y se encuentra bajo el directorio de instalación del mismo en <NET frameworkpath>\csc. se deben regenerar y compilar todos los objetos involucrados. 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 botón “Confirm” en vez del caption correspondiente a cada caso.exe).crea una dll por el objeto y otra por el stub.gif) Modificar (gxconfirm_upd.

COMPILACIÓN El código se compila (desde el dialogo F5 del generador) y el log con el resultado de la compilación se despliega en la pantalla y se graba en el archivo RunOut. por ejemplo ejecutando el exe del objeto directamente desde el directorio DataXXX\bin.cs con el código fuente en lenguaje C#.exe.Config.0/manualn.config de ese directorio. log4net"/> </configSections> <datastores> <Default> <add key="Connection-Default-TrnInt" value="1"/> </Default> </datastores> <appSettings> <add key="MODEL_NUM" value="2"/> … </appSettings> http://www. con el valor By Main se genera una dll (assembly) por cada Objeto Main Además se genera un exe por cada objeto main que invoca a dicho assembly.NET (IL).rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos que se encuentran en el fólder principal. collections). entonces se utiliza la que está en este directorio. el assembly se compone de todos los elementos del folder que contiene al objeto (en caso de estar configurado “By Folder”).cs que se encarga de compilarlo a un exe.Manual del Generador . el cual supervisado.config Este archivo contiene básicamente la información para la conexión a la base de datos. <log4net threshold="Value"> donde “Value” puede tener alguno de los siguientes valores: • ALL • DEBUG • INFO • WARN • OFF La elección de cada valor depende del nivel de detalle que se desee visualizar en el archivo de log. es decir que toma el archivo que se encuentre en el mismo directorio de la aplicación.dll para el folder root. Dependiendo de la propiedad del modelo Build Assemblies.cs con el codigo necesario para instanciar el objeto dentro del assembly correspondiente. 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_<nombre_del_objeto>.log Se genera.Log4NetConfigurationSectionHandler.. Cuando la aplicación corre desde GeneXus. esto significa que se generará un archivo.exe.exe.NET GeneXus 9. El archivo generado será por defecto client. se utiliza este archivo de configuración.gxtechnical. se debe agregar una entrada en el archivo client. en tiempo de ejecución. En el caso de estar configurado el armado de assemblies con la opción By Fólder. Tiene una estructura: <configuration> <configSections> <sectionGroup name="datastores"> … </sectionGroup> <section name="log4net" type="log4net. y un archivo bld<nombre_del_objeto>. un archivo <nombre_del_assembly>. El archivo client. 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.exe. por un intérprete (CLR) que permite ejecutarlo convirtiendolo a código de maquina Avanzados GENERACIÓN DE TRACE Para habilitar la generación de trace (archivo de log) de la aplicación.log"/> <appendToFile value="true"/> <maximumFileSize value="9000KB"/> <maxSizeRollBackups value="4"/> </appender> ARCHIVOS ESPECÍFICOS Archivo Client.0 Generación de objetos El proceso de generación de un objeto consta de dos etapas: Page 13 of 34 GENERACIÓN Luego de especificar un objeto al generarlo el generador crea por cada objeto: un archivo <nombre_del_objeto>. la información de propiedades del modelo y la generación del “log”.log y se generará en el directorio DataXXX\bin. El valor por defecto de la salida (“root appender”) es “RollingFile”. se crea un gxobjects. Si se desea ejecutar la aplicación por fuera de GeneXus.config:. Por ejemplo: <app ender name= "Rolling FileApp end er" … > <file value="server. se debe configurar el client.. Se crea el archivo gxcommon.rsp con las referencias que permiten armar el assembly que incluye el objeto. si se corre directamente desde el “exe” de la aplicación del directorio “dataxxx\bin”. Es posible configurar un conjuno de propiedades del appender Rolling File como la cantidad de archivo particionados de log (maxSizeRollBackups) y el tamaño de cada archivo (maximumFileSize).config se encuentra en el directorio del modelo (DataXXX). El código es generado en un lenguaje común de . 11/12/2008 .com/gxdlsp/pub/genexus/csharp/docum/manuals/9.rsp cuyo objetivo es armar un assembly (con el mismo nombre) que incluye los objetos comunes a todos los assemblies (SDTs. Se encuentra en el directorio del modelo “dataxxx” y en “dataxxx\bin”.

El messages. Setear las Dbms Options del modelo: § § § § § § Access technology to set: ADO.Appender. El generador provee una herramienta.NET Database name: <Nombre de la base de datos> Server name: localhost Use trusted connection: No User id: user User password: password 10.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.<lenguaje>.Net no utiliza el registry y permite configurar las versiones dlls a utilizar..0/manualn. 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. Nota: Se simulará el cliente y el servidor de aplicaciones en la máquina de desarrollo.<lenguaje>. Ejecutar la creación de tablas de la base de datos (se supone que existe la base de datos creada en el SQL Server): § Build / Create Database 12. • Servidor GUI Visual J# . Compilar y Ejecutar § Generar los programas: Build / Build All § Ejecutar el diálogo de ejecución (F5).dll y Messages. utilizando el protocolo de comunicación . Publication Assistant.dll guarda imágenes.Manual del Generador .Net remoting § Application Server host: http://localhost/3tierNET (“3tierNET” es el y que apunte a <Directorio de la aplicación>\DATAXXX\srv ) § Multi tier location: appserver nombre del directorio virtual que debe ser creado en el IIS 13.NET GeneXus 9. Configuración de un modelo Se creará una aplicación 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. optimizando así los recursos y ampliando la escalabilidad. Requerimientos Los requerimientos son similares al ambiente de desarrollo. por lo que instalar en el servidor es simplemente hacer un xcopy del directorio bin.Appender.Net para aplicación en Red Conectividad a la base de datos Modelo GUI – Aplicaciones Distribuidas Es posible generar aplicaciones distribuidas. que se ejecuten en diferentes capas. Generar programas 15.exe (bajo directorio de instalación del framework) 11.NET specific/ADO.NET § Language: .NET specific” configurar: § Protocol: Using .RollingFileAppender"> </appender> <root> <level value="DEBUG"/> <appender-ref ref="RollingFile"/> </root> </log4net> </configuration> Page 14 of 34 Archivos GXResources.0 <log4net threshold="OFF"> <appender name="ConsoleAppender" type="log4net. que apunte a <Directorio de la aplicación>\Dataxxx\srv ) § Ejecutar el Work Panel (F5). 11/12/2008 . Crear un modelo de prototipo o producción con el generador .gxtechnical.ConsoleAppender"> …. Puesta en producción INSTALACIÓN EN EL SERVIDOR La plataforma . 8. para hacer el Deploy automático de la aplicación.NET § User interface: Win 9.Net Framework Servidor de Base de Datos • INSTALACIÓN EN EL CLIENTE Tener en cuenta permisos .dll El GXResources. pasándole como parámetros todos los datos para realizar el insert en la tabla. Se ejecutará la aplicación tres capas utilizando IIS. Configurar las propiedades de ejecución : § Compilador = csc.dll contiene la información de textos por lenguaje Éstos se generan en momento de compilación. Para ejecutar el Workpanel fuera de GeneXus basta con dar clic en el archivo ejecutable que se crea http://www.Net remoting entre ellas. Configurar propiedades del modelo En la sección “General/.. </appender> <appender name="RollingFile" type="log4net. Ejecutando en el servidor de aplicaciones tendremos el procedimiento que realiza el insert sobre la tabla. Compilar el Work Panel y el procedmiento definido como main § Crear el directorio virtual 3tierNET.

La idea principal de un sistema distribuido.gxtechnical.NET como método de conexión a la base de datos..Net remoting.Se genera la aplicación en tres capas No . el servidor de aplicaciones puede a su vez comunicarse con otros servidores de aplicaciones.Net Channel Services). Del mismo modo. 11/12/2008 . sino que se puede contar con varios.. es decir. La forma de comunicación con el servidor de base de datos desde el servidor de aplicaciones es a traves de ADO. De esta forma logramos ganar en escalabilidad. se distribuye el código. no es posible generar una aplicación en tres capas utilizando ODBC Además. no es posible generar aplicaciones tres capas con Interfaz Web. que cada una de las capas se va a especializar en realizar determinadas tareas. La forma de comunicación entre los componentes. si se opta por esté último. se debe seleccionar con qué protocolo de comunicación entre el cliente y servidor de aplicaciones se va a trabajar.El modelo se generará en dos capas. a su vez.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. ejecutando parte en el cliente y parte en el servidor de aplicaciones. los clientes se comunican con el servidor de aplicaciones mediante un protocolo de comunicación específico según el lenguaje de la aplicación y el servidor utilizado. ) Tener en cuenta que todo lo que se genere en el directorio: <Directorio de la aplicación>\DATAXXX\bin – es todo lo que corresponde con lo que se ejecuta en el cliente <Directorio de la aplicación>\DATAXXX\srv – es todo lo que corresponde con lo que se ejecuta en el servidor Page 15 of 34 Arquitectura Un sistema distribuido se basa en el concepto de distribuir lógicamente la ejecución de una aplicación. seguridad y performance como veremos más adelante. se realiza con .NET GeneXus 9. En nuestro caso las aplicaciones distribuidas van a estar basadas en una arquitectura de 3 capas. el servidor de la base de datos no tiene porque ser uno solo. esto implica que para el transporte de la información se crean mensajes que viajan bajo HTTP o TCP (.Manual del Generador . distribuyendo de esta forma la responsabilidad de los servicios que son provistos al cliente. Valores http://www. Valores Using. en una aplicación 3 capas. en la segunda se hayan los componentes que se ocupan de ejecutar la lógica del negocio de la aplicación.0 en el directorio del modelos “dataxxx/bin”. que también puede estar distribuida físicamente o puede estar corriendo en una misma computadora.NET Solo es posible generar aplicaciones tres capas utilizando ADO. es la división lógica de la aplicación en varias capas. es decir todo lo que es comportamiento del sistema (Servidor de Aplicaciones) y en la tercer capa están los componentes encargados de realizar toda la manipulación y persistencia de los datos (Servidor de Base de Datos). de forma de repartir las responsabilidades de realizar tareas específicas en cada una de ellas. Valor predeterminado: No Application Server Host Permite especificar la referencia al “host” donde está corriendo el servidor de aplicaciones. Cabe aclarar que en una arquitectura como esta. A diferencia de las aplicaciones Cliente/Servidor tradicionales (2 capas). del cliente y el servidor de aplicaciones. las aplicaciones en tres capas solo pueden ser generadas con Interfaz Win. Es este tipo de arquitectura. el servidor de aplicaciones se comunica con la base de datos mediante un protocolo de comunicación o driver específico según el DBMS utilizado.Net remoting .0/manualn. Propiedades Específicas MODEL PROPERTIES Protocol Esta propiedad permite definir si la aplicación se va a generar en 2 capas o en 3 capas. donde la ejecución de todo el código de la aplicación (lógica del negocio) se realiza en el cliente. En la primer capa se encuentran los componentes de la aplicación que implementan la interfaz de la misma con el cliente (Capa de Presentación).

por ejemplo.. El código remoto consiste en los accesos a la base de datos y según la configuración de propiedades de los objetos. Multi tier location Indica el nombre lógico (el “Location”) del servidor de aplicaciones que ejecutará el código remoto de la aplicación. entonces el objeto correspondiente corre íntegramente en el servidor de aplicaciones. sino también que toda su lógica y la de los objetos llamados por él sean ejecutados en forma remota. que no sólo los accesos a la base de datos. si el objeto es generado para ser ejecutado íntegramente en el servidor de aplicaciones. En ese caso la transacción 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. ya que en caso de existir. dependiendo del Location de quien lo llame.0 Page 16 of 34 http://servername/virtualDir por ejemplo: <http://localhost/remoting> para utilizar IIS como servidor de aplicación tcp://servername:puerto por ejemplo: <tcp://servername:1234> para utilizar Consola o Servicio de Windows como servidor de aplicación Valor predeterminado: No tiene En el caso de modificar el Channel ref ="tcp” se debe especificar el application Server host bajo el mismo protocolo. Si a un objeto no se le define Location. En particular para ejecutar la lógica de los procedimientos y o reportes en el servidor. Pero las transacciones pueden tener determinada regla que genere algún tipo de interfaz de usuario. se deberá configurar la propiedad ‘Location’ con el valor que se especifique en esta propiedad del modelo. Yes: Todas las reglas de la transacción son ejecutadas en el servidor de aplicaciones.. Por lo tanto. por lo tanto no es necesario definir el Location a cada uno de los procedimientos y reportes del árbol de llamadas del primero. TRANSACTION PROPERTIES Optimize for multi tier location Esta propiedad permite definir si las reglas de la transacción se ejecutan en el cliente y no en el servidor de aplicaciones.NET GeneXus 9. Si coincide con el valor de la preferencia del modelo Multi tier location. se ejecutará la lógica de los mismos (o parte de ellos) en el cliente o en el servidor. inclusive el código de acceso a la base de datos. remoto) y otras veces algo en el cliente y el acceso a la base de datos en el servidor de aplicaciones. dicho objeto a veces puede ser ejecutado todo en el servidor de aplicaciones (es decir. una llamada (call) a un work panel o a una transacción en un procedimiento definido como remoto o llamado por otro remoto.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. Prestar especial atención a esto. En el árbol de llamadas no deben existir objetos con interfaz.gxtechnical. se asume que se ejecuta en el Location del llamador. Valor predeterminado = Yes Nota: igualmente no es recomendable cambiar esta propiedad para aplicaciones en 3 capas. a un reporte o a otra transacción. dado que un objeto puede ser llamado por diferentes objetos. todos toman dicho valor. ya que al haber definido el main y location del primero. por ejemplo una llamada a un work panel. 11/12/2008 . En una aplicación en 3 capas por defecto todas las reglas de las transacciones se ejecutan en el servidor de aplicaciones. de lo contrario corre en el cliente. dará error o bien se visualizará en el servidor de aplicaciones (que es donde está ejecutando el objeto) y no en el cliente.0/manualn. Valores Se puede especificar cualquier nombre lógico para el “Location” Valor predeterminado: Appserver PROCEDURE PROPERTIES Location Esta propiedad nos permite definir a nivel de procedimientos y reportes main. es decir. Valores El valor es un nombre lógico.Manual del Generador . pues afecta la performance y la idea es que sólo http://www.

por ejemplo pasarla a los eventos o utilizar la regla “msg” o “error. que siguen el estándar de “Factory Design Pattern”. tanto la lógica como los accesos a la base de datos. se debe tener en cuenta ciertos puntos en la programación del evento Load. El servidor de aplicaciones se encarga de mantenerlos vivos mientras exista interacción frecuente entre el objeto y el cliente. sobre la conexión a la base de datos. caen dando error de “timeout”.. No hay un criterio de re-uso como el pool de objetos de COM+.0/manualn. Para solucionar el tema de tener una regla que invoque a algún objeto con interfaz de usuario. Si los procesos demoran más de 90 segundos (“timeout” predeterminado). acceder al objeto remoto y activarlo (Client Activated Objects–CAO). no se puede programar en él nada que tenga que ver con interfaz. como ser: Llamadas a un método de un control del form del work panel Cambio de propiedades del form del work panel Llamadas a otros programas con interfaz.config”. o sea. para lograr una buena performance. entonces tenemos dos formas de levantarlo: Por consola Ejecutando el archivo GxDotNetAppServer. se debe crear un directorio virtual en el IIS apuntando al directorio del modelo “dataxxx\srv”. Valor predeterminado = No Consideraciones Si esta propiedad tiene el valor “Yes”. este es el archivo de configuración donde se encuentra toda la información sobre el servidor de la aplicación. Es por ello que se cuenta con esta propiedad para delegar toda la ejecución de la lógica del evento Load del work panel al servidor de aplicaciones. El servidor de aplicaciones se reinicia cada vez que se modifica el archivo “web. Este permite al cliente. básicamente ejecutar todo menos la interfaz. se deberá configurara el Http Execution timeout en el archivo “web. entre otros.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. un objeto se usa por un cliente hasta que no lo necesita más. 11/12/2008 . tenemos dos opciones. como regla general hay que tratar de ejecutar la mayor cantidad de código en el servidor de aplicaciones. configurando un valor mayor. podemos utilizar Internet Information Server o el servidor de aplicaciones que nos ofrece GeneXus. que es compartido por todos los clientes (Singleton). A continuación describimos las características de utilizar IIS: • • • El servidor de aplicaciones es levantado automáticamente en la primera solicitud.0 Page 17 of 34 desde el servidor de aplicaciones se puede acceder a la base de datos. SERVIDOR DE APLICACIONES GENEXUS Si optamos por utilizar el servidor de aplicaciones GeneXus. se recomienda encontrar la manera de eliminar esa regla.. se puede determinar si además de los accesos a la base de datos. Servidores de aplicaciones Los servidores de aplicaciones se encargan de ejecutar el código definido como remoto en una aplicación distribuida. en el caso del generador . WORK PANEL PROPERTIES Execute load events in application server Configurando esta propiedad en los work panels. Esto es determinado a través de la propiedad Application server Host IIS COMO SERVIDOR DE APLICACIONES Para poder ejecutar la aplicación utilizando IIS (Internet Information Server) como servidor de aplicaciones. como por ejemplo un “call” a otro work panel o transacción Generación de objetos Al generar el modelo se crean los objetos necesarios según el tipo de objeto <Directorio de la aplicación>\DATAXXX\bin – es todo lo que corresponde con lo que se ejecuta en el cliente <Directorio de la aplicación>\DATAXXX\srv – es todo lo que corresponde con lo que se ejecuta en el servidor Todos los componentes generados son componentes . La salida de los mensajes se da en la consola y en el archivo client. Este archivo se localiza en el directorio del modelo “dataxxx\srv”. se ejecutará toda la lógica del evento Load en el servidor de aplicaciones automáticamente.NET GeneXus 9. a través de dos métodos getProcedure y getDatastore.Manual del Generador .NET. Dado que esta propiedad indica que el evento Load se va a ejecutar en el servidor de aplicaciones.gxtechnical.log Como servicio Windows Para configurarlo como servicio Windows es preciso instalarlo la primera vez con la siguiente sentencia: http://www. Al acceder dos clientes al mismo objeto se crea en el servidor de aplicaciones una nueva instancia del objeto.Net (Assemblies).config”.exe que se encuentra en el directorio del modelo “dataxxx\srv\bin”. Valores No: La lógica ejecuta en el cliente y sólo 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. En el servidor de aplicaciones se publica un único objeto “Factory”. Al trabajar en una aplicación distribuida. Para que no ocurra esto.

.gxtechnical.exe Este ejecutable se encuentra en el directorio del modelo dataxxx\srv\bin Una vez instalado. Por más detalles sobre esta funcionalidad y sobre cómo configurar las propiedades puede acceder a las siguientes páginas: SqlServer y Oracle ARCHIVOS DE CONFIGURACIÓN Web.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. ya que es la más sencilla. En aplicaciones .config” Otro punto a tener en cuenta es que si el si el servicio se cae por alguna razón en caso como Consola o Servicio de Windows.NET con acceso a SQL Server u Oracle.remoting> <application> <channels> <channel ref="http">… <lifetime leaseTime="5M" renewOnCallTime="2M" leaseManagerPollTime="10S"/> <service> <wellknown mode="Singleton" type="com. puede ser un poco más lento que utilizar el servidor de aplicaciones de GeneXus. la más baja con HTTP y formato SOAP.config”.config Es el archivo de configuración donde se encuentra toda la información sobre el servidor de la aplicaciones cuando se corre bajo Internet Information Service (IIS)..0 installutil GxDotNetAppServerWinSrv. pero puede ser configurado en los archivo. 11/12/2008 . lo que no es necesario con IIS. Para ello podemos utilizar un pool de conexiones a la base de datos. sino que en este tipo de aplicación el acceso es realizado por el servidor de aplicaciones.config” o “web. debe levantarse manualmente. en este archivo se encuentra desde la información sobre el host de la aplicación hasta los datos de conexión a la base de datos. POOL DE CONEXIONES Una de las ventajas de implementar una aplicación en 3 capas. el primero sería "intermedio" en performance. Un pool de conexiones es un conjunto limitado de conexiones a una base.Max Pool Size=40 Las propiedades del pool de conexiones siempre van separadas por punto y coma. Además se "hereda" la seguridad del propio IIS.Manual del Generador . es la posibilidad de tener más centralizado y controlado el manejo de las conexiones a la base de datos.log En ambos casos se debe detener el servicio al recompilar los objetos. que dichas conexiones pueden ser reutilizadas por los diferentes usuarios.NET Remoting se da con comunicación TCP y formato binario. ya que el acceso a la misma no se hace desde el cliente.exe. …i="factory.log) y un log en el servidor de aplicaciones (server. Este archivo está en el directorio del modelo “dataxxx\bin”.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. lee su configuración del archivo “server. Las propiedades disponibles en el pool de conexiones que provee el ADO. en los modelos tres capas se genera un log en el cliente (client.0/manualn. 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. El formato predeterminado es binario.NET como protocolo de acceso a los datos. Teniéndolo bajo IIS se tiene comunicación HTTP con formato binario o con formato SOAP.log). Avanzados GENERACIÓN DE TRACE Por defecto. y luego puede configurarse como cualquier servicio Windows. hay que levantarlo manualmente. Para esto es necesario configurara la propiedad “Additional connection string attributes” de las DBMS dentro de “Properties/Access technology settings/Connecction information”. ésta es devuelta al pool de conexiones. que es manejado de forma tal.config: “server. Si una conexión alcanza un determinado tiempo no configurable sin actividad (30000 milisegundos). como en una aplicación en 2 capas.NET.NET GeneXus 9. Es posible modificar los valores de las propiedades del pool de conexiones seteados por defecto. Ejecutar una aplicación bajo IIS seguramente sea la opción más cómoda cuando se trabaja en prototipo.rem"/> http://www.genexus.runtime. el manejo del pool lo hace el propio framework utilizando el "Connection Pooling" de ADO. VENTAJAS Y DESVENTAJAS Utilizar uno u otro servidor de aplicaciones tiene sus ventajas y desventajas.exe. Se crea bajo el directorio Dataxxx\srv\ Tiene una estructura similar a: <configuration> <configSections> <datastores> <appSettings> … <add key="NAME_HOST" value="http://jlarrosa/rotulos"/> <add key="SPONSOR_LIFETIME" value="420"/> <add key="SPONSOR_RENEWONCALL" value="300"/> </appSettings> <system. La mejor performance con . La salida de los mensajes de error se da por el event viewer y por el client. La desventaja se presenta en la performance.distributed. En este caso la actualización de las versiones de las “dll” se puede hacer sin bajar el servicio. utilizando ADO. ya que con IIS el servidor de aplicaciones se levanta automáticamente en el próximo pedido. Page 18 of 34 El servidor de aplicaciones GeneXus. y en esta sección mostraremos cuales son.

. </log4net> Manejo de Proxy En el caso de que exista un Proxy entre el cliente y servidor de aplicaciones. Client.rem"/> </client> </application> </system. en el cual hay que configurar que se va a utilizar el Proxy que fue establecido en las “Internet Options” de Windows.web> <trace enabled="false"/> … <httpRuntime …"/> </system.0/manualn. La estructura es similar a: <configuration> … <appSettings> <add key="NAME_HOST" value="http://localhost/srv"/> … <add key="KEEP_ALIVE_INTERVAL" value="90"/> </appSettings> <system. del objeto singleton (Factory) y formatos e información de propiedades relevantes como la ubicación del servidor de aplicaciones y el keep alive.distributed. tiene información de las propiedades del modelo y log.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.runtime. Tenemos dos posibles situaciones.runtime.runtime.Manual del Generador . Dichos cambios deben ser implementados en el archivo de configuración del cliente “client.web> </configuration> Page 19 of 34 Formato de mensajes <channel ref="http"> <serverProviders> <formatter ref="binary"/> </serverProviders> </channel> El “formatter ref” puede ser "SOAP" si el “channel ref” es “http”. Se crea bajo el directorio Dataxxx\srv\bin Tiene una estructura similar a: <configuration> <configSections> … <datastores> … <appSetting s> <add key="NAME_HOST" value="http://jlarrosa/rotulos"/> <add key="SPONSOR_LIFETIME" value="420"/> <add key="SPONSOR_RENEWONCALL" value="300"/> </appSettings> <system.remoting> <log4net threshold="OFF"> <system. debemos realizar algunos cambios.exe.config”. como se detalla en el modelo dos capas.runtime.NET GeneXus 9.remoting> <log4net> </configuration> Formato de mensajes <channel ref="http"> <serverProviders> <formatter ref="binary"/> </serverProviders> </channel> El “channel ref” puede ser "tcp" El “formatter ref” puede ser "SOAP" si el “channel ref” es “http”.remoting> <application> <channels> <channel ref="http">… <lifetime leaseTime="5M" renewOnCallTime="2M" leaseManagerPollTime="10S"/> <service> <wellknown mode="Singleton" … ="factory.exe.genexus.. … url="http://localhost/srv/factory.0 </service> </application> </system.config Este archivo.remoting> <log4net threshold="OFF"> ….remoting> <application> <channels> … </channels> <client> <wellknown type="com. server.rem"/> </service> </application> </system.gxtechnical.exe.runtime. En aplicaciones distribuidas no tiene información de la conexión a la base de datos pero se agrega la información de canales. 11/12/2008 .config Es el archivo de configuración donde se encuentra toda la información sobre el servidor de la aplicaciones cuando se utiliza el servidor de aplicaciones GeneXus. como se muestra a continuación: • Cliente y servidor de aplicaciones en la misma LAN: <channel ref="http" port="0" proxyName="" > <clientProviders> <formatter ref="binary"/> </clientProviders> </channel> http://www.

0 De esta forma no se va acceder por el Proxy. esto originó que en ADO. ofrece herramientas de monitoreo de aplicaciones.gxtechnical.NET specific” de las propiedades del modelo. si un modelo es ADO todos los objetos y todos los datastores usarán este método de conexión Al trabajar con ADO. Para habilitar el “cache” de sentencias de ADO. cada uno utiliza un Data Provider para acceder a la base de datos. Es común.NET y ODBC.Esta implementado los tipos de datos para el manejo de correo con modo “Internet” (SMTPSession. Las etiquetas nombradas anteriormente son “Case Sensitive”. que en la mayoría de los sistemas. Cache de sentencias La conexión ADO. lo cual acarrea un aumento en la performance de la aplicación ya que se reduce el costo de acceso al servidor de base de datos. habilita el caching de sentencias.NET toda la lógica se encuentra en la gxclasses. es decir se deben escribir respetando las mayúsculas y minúsculas.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.dll..NET specific/ADO.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.NET GeneXus 9. el resultado queda guardado en memoria. Tipos de datos La plataforma .NET/ODBC) Valores de conexión desde “Access technology to set” = ADO/ODBC No es posible tener algunos objetos con conexión ADO y otros con ODBC. por lo que instalar la aplicación es simplemente hacer un xcopy de: directorio bin para el cliente directorio srv para el servidor de aplicaciones El generador provee una herramienta. En el caso de los DBMSs. en cambio en el acceso ODBC se implementa bajo la gxdata. Informix) Para configurar la conexión a la base de datos se debe setear: Propiedad Access Method del modelo (ADO. Publication Assistant. cada DBMS tiene su propio Data Provider para acceso ADO.Net Framework Redistributable . para hacer el Deploy automático de la parte del cliente. mejoras de performance (con respecto al acceso ODBC) e implica utilizar 100% “.0/manualn. con los resultados de las sentencias más frecuentes. tanto en tiempo de compilación como en tiempo de ejecución. por ejemplo: proxyName. con lo cual estamos realizando recorridas sobre la base de datos para obtener la misma información en muchas ocasiones. • Cliente y servidor de aplicaciones en LAN distinta: Page 20 of 34 <channel ref="http" port="0" useDefaultCredentials="true" > <clientProviders> <formatter ref="binary"/> </clientProviders> </channel> De esta forma se accede por el Proxy configurado en las “Internet Options”.NET y configurar las propiedades correspondientes.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 http://www.Net Framework Redistributable Conectividad al servidor de base de datos IIS o servidor de aplicación GeneXus Generalidades Acceso a la base de datos Hay dos formas de conexión a la base de datos con: ADO. sino que se obtienen los datos del “cache” de memoria. El primero es un método nativo del generador y es el recomendado.NET a la base de datos brinda la posibilidad de mantener un “cache” de sentencias con sus resultados.dll. Es necesario tener algunas consideraciones en el tipo de datos mail: . REQUERIMIENTOS Servidor de aplicaciones Cliente Visual J# . POP3Session) y Outlook . Puesta en producción La plataforma . El “cache” de sentencias funciona de la siguiente manera: l l l Al realizar una consulta por primera vez sobre una tabla.NET.Manual del Generador . accedamos a datos que no cambian con mucha frecuencia.Net es muy estricta en el chequeo de tipos.NET se implementara un mecanismo de “cache” en memoria. debemos ir a la sección “General/.Net no utiliza el registry y permite configurar las versiones de dlls a utilizar. siempre y cuando no haya expirado el tiempo configurado para mantener los datos en dicho “cache”. de forma tal de realizar una primera consulta sobre la base de datos y las siguientes sobre una memoria “cache”. pero de todas formas pueden surgir errores causados por mala programación (el mas común es el overflow en tipos numéricos). 11/12/2008 .. al igual que el resto de los generadores Client Server. de rápido acceso. el generador se ocupa de hacer los “casts” y conversiones que puede. Si el tiempo expiró se accede a la base de datos para obtener nuevamente los datos y almacenarlos en el “cache”. Cuando se realiza nuevamente la consulta no se realiza comunicación alguna con el servidor de base de datos. ya que permite la generación de aplicaciones Windows de múltiples capas.

dll es la implementación cuando se usa modo Outlook Page 21 of 34 Generación de programas de reorganización El programa que ejecuta la reorganización es el assembly reor. donde se mapea el nombre de los parámetros definidos en la BD.config. pero toda transacción . en la Base de datos el Stored Procedure sp1 debe tener dos parámetros de nombre @parm1 y @parm2 (ambos de tipo inout). Si el thread muere por algun motivo deja un error en el event log.ini. Para instalarlo se debe acceer a Control Panel/AddRemove Programs/Add-Remove Windows Component GENERACIÓN Esta implementación es válida solo para procedimientos.NET GeneXus 9. ParmName=parm1. se pone en una cola de un servicio COM+ que se ocupa de instanciarlo y ejecutarlo. 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. se soportan estas transacciones en lo referente al diseño de las estructuras de la base de datos que éstas determinan. 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. parm1. 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”.gen (una flag). La información de conexión a la base de datos se encuentra en el archivo client.0. el objeto se genera sin posibilidades de llamarse como “Queued component” y el Submit se hace http://www. tampoco se soportan estructuras del tipo: A* B (C* D (E* F) Vale aclarar que lo que no se soporta es la generación del programa correspondiente a la transacción para la ejecución de la misma. no se pueden ejecutar transacciones en . pero sí son tenidas en cuenta al crear y reorganizar la base de datos.exe.5.Manual del Generador .dll.dll es la que se usa desde los programas. Por ejemplo. La sintaxis del comando es: reor. Para que los objetos GeneXus se generen de esta forma.in ParmType=Number. en lugar de ejecutarse en otro thread.dll.dll es el wrapper de la gxoffice2. Se usa siempre que se haga un submit. messages. En el caso detallado anterioirmente.exe que se crea bajo el directorio bin. a excepción de las reorganizaciones de la base de datos (con Autocommit). además se ejecuta en un proceso distinto al del llamador. Smart Static Panels (Web) No esta implementada esta funcionalidad. este debe estar definido dentro de la propiedad “List of remote programs” del modelo. Reor.parm2 En versiones previas cuando se trabajaba con ADO.. y al menos uno.NET.gxtechnical. No se soportan transacciones de un nivel con subfile.NET.0 Implementación GxOffice2net. esto es necesario cuando se precisan ejecutar reorganizaciones o creaciones de la base de datos en el servidor de producción.<language>. Llamadas a Stored Procedures Al igual que en el resto de los generadores para llamar a un store procedure “sp1”. Transacciones de más de un nivel (GUI) El generador . 11/12/2008 . Esto limita la cantidad de threads que se pueden llegar a crear evitando un potencial problema de sobrecarga.. Reorganization. y sean todos los parámetros de tipo inout. por ejemplo: [storeproc] ProgramName=Sp1 ProgramType=StoredProcedure ParmMode=inout.dll Es posible ejecutar la reorganización sin interfaz con el parámetro “nogui”. Es decir. se necesita siempre.NET soporta transacciones de más de un nivel. Comando Submit El comando submit usa un Thread pool en lugar de crear un thread nuevo siempre.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. REQUERIMIENTOS l Message Queuing instalado (viene con Windows pero no se instala por defecto). log4net. Para invocarlo en el códuigo GeneXus alcanza con programar: call('sp1'. Este toma las especificaciones de la reorganization.5. Interop.exe. estaba la restricción de que las variables se llamen igual que los parámetros del Stored Procedure que se está invocando. Los objetos siempre se generan con integridad transaccional. reorgpgm. por lo tanto no es posible generar archivos HTML con la información obtenida de la base de datos. 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.exe –nogui Transactional Integrity La propiedad “Transactional Integrity” no es tomada en cuenta con ADO. y se tienen 25 threads por procesador. esto es válido tanto para modelos GUI como Web.0.gen.NET debe tener no más de un nivel plano. Esto es util cuando se quiere garantizar la ejecución de un proceso y no importa el momento en que se ejecute.NET con estas estructuras. GxOffice2. parm2) Los parámetros deben estar definidos en el archivo extprog.dll y chequea la presencia de el archivo reorgpgm.GxOffice2lib.0/manualn. pero si. Los archivos necesarios para llevar solamente la creación/reorganización son: GxClasses.dll.Number.

CONSIDERACIONES • • Todo lo que es COM. 2) Luego en el GeneXus . Esta configuración la genera el generador y se hace cuando se registra el componente. Además se debe copiar el client. http://www. la genera el generador automáticamente.NET Framework que sirve para registrar assemblies como aplicaciones COM+. La idea es poder realizar instalaciones de aplicaciones o realizar actualizaciones de las mismas en las máquinas cliente de una manera sencilla y centralizada. genera un esquema sin autenticación (lo mas común para probar la aplicación) Registración. en general tiene un domain controller y hay que configurar la seguridad. presionar botón derecho en la aplicación.exe. se debe registrar el componente COM+ con el comando: “regsvcs <nombre del assembly>” Por ejemplo: regsvcs bin\aprc01. La metodología es muy simple. properties/security. poner “Transaction support” en “Not supported”. apagar el checkbox de “Enforce access checks for this application” y poner “Authentication level for calls” en “None”. por default es la descripción del main que se selecciono.gxtechnical. La configuración para producción depende de cada instalación. Physical path: directorio donde se encuentra la aplicación en el server. properties/transactions. Esto crea la aplicación COM+ (con el nombre del modelo) y la configura con seguridad y esquema transaccional generado.ico que es un icono que se distribuye por default (*).NET GeneXus 9. lo mas común. Dentro de la aplicación COM+ ir a Components. Esta configuración la genera el generador y se hace cuando se registra el componente.exe.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. para eso es necesario: • • La configuración de seguridad. Junto con el objeto se genera información para su configuración que se incluye en la aplicación COM+ cuando se registra. Para probar. Configurar el soporte transaccional Esto no es necesario si la aplicación se registró como se indica en “Configuración. por default se agregará al final del folder seleccionado GxPrograms\Application name. En este tipo de instalación no hay un “Active directory store” contra el que autenticar los callers y por lo tanto hay que desactivar la autenticación (sino da “Access denied” al hacer el call). Shortcut for unistall: especificamos si queremos agregar un acceso directo al Unistall de la aplicación. por default es ModelPath\Publication. por default será ModelPath\GXPUB\gxappstart\net.NET Publication Assistant editamos las preferences del Deployment: Application name: nombre que se le dará a la aplicación.config al directorio de sistema de Windows (típicamente Windows\system32). DCOM y COM+ se configura desde el Control Panel/Administrative Tools/ Component Services Configuración de seguridad No es necesario si la aplicación se registró como se indica en “Configuración. ejecución”. luego de haber generado el exe de nuestra aplicación: 1) Estando en la ventana de Execution seleccionamos el exe correspondiente para el Deployment y damos click en el boton Publish. presionar botón derecho.0/manualn. Para acceder a la herramienta debemos ir a la ventana de Execution: Build -> Run (F5) y dar click en el botón Publish. 11/12/2008 . ejecución”. por defualt son cargados del directorio bin del modelo.. por default será http://server/app donde server es el nombre de la máquina donde se está haciendo el Deployment y app es el nombre del exe. es una instalación MSMQ workgroup (que no requiere domain controller). EJECUCIÓN Un assembly de este tipo ejecuta en una aplicación COM+.. Client installation folder: folder donde se instalará la aplicación en el cliente. Page 22 of 34 CONFIGURACIÓN. Para desactivar la autenticación desde el Component services/Computers/My Computer/COM+ Applications. por lo tanto es necesario configurarlo como tal. DESCRIPCIÓN La herramienta nos permitirá dada una aplicación (2 o 3 capas) la posibilidad que un cliente desde una URL y haciendo un simple click pueda instalar la aplicación o upgrades de la misma. Publication URL: URL desde la cual se podrá realizar el Deployment. • Publication assistant (GUI) Esta herramienta permite hacer el deploy automático de una aplicacion . seleccionar el que corresponde al objeto GeneXus. Regsvcs es una herramienta del .Net Win en 2 o 3 capas via HTTP. Application files: archivos que conforman a la aplicación.0 levantando otro Thread.Manual del Generador . Shortcut Icon: icono que tendrá el exe.

0 (*): el GXPUB se crea por debajo del directorio del modelo al hacer Publish.se crea un directorio virtual con el mismo nombre que la aplicación apuntando al Physical path.se copian los archivos de la aplicación que se encuentran en el bin del modelo al Physical path.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. .gxtechnical.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.xml el cual será utilizado para saber si hay nuevas versiones de la aplicación para instalar. . http://www. 11/12/2008 .NET GeneXus 9.0/manualn. 4) Colocar la URL en un browser de la máquina cliente.Manual del Generador .. ..NET Publication Assistant quedará la URL a la cual acceder para realizar la instalación. En este punto: .en caso de no presentarse ningún error en el Output del GeneXus .se arma el aplicativo que se utilizará en el cliente para realizar las instalaciones y actualizaciones de la aplicación. 3) Una vez que se establecieron las preferences del Deployment damos Publish. . también se copia un appname_manifest. Page 23 of 34 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 aplicación. la cual se arma en base a la Publication URL que se especifico antes. los fuentes de la misma quedan en \GXPUB\gxappstart.

Manual del Generador . -Folder Setup: Aquí se encuentra los archivo para instalar la aplicación que son: . un conjunto de archivos similares al bin del modelo.exe -NoTouchDeploymentStub. Observación: los requerimientos pueden ser vistos en el archivo install.NET Framework 1.xml que está en el server de haber diferencias se preguntará si desea bajar la actualización: Para aplicaciones distribuídas (tres capas) es análogo REQUERIMIENTOS .exe. que debe ser creado por el usuario es la siguiente: <?xml version="1. crea por defecto en el folder “Publication” (o dependiendo del valor ingresado en la opción “Physical Path”).config: Permite modificar la Url del manifiesto.Install. A este se le adicionan: -Object_manifest..xml" /> </appSettings> </configuration> http://www.NET GeneXus 9.exe.0/manualn. ADVANCED La publicación de una aplicación.xml que se tiene en el cliente con el appname_manifest.exe: Tiene embebido las dlls standares de microsoft e información del manifiesto que instala en el cliente.gxtechnical.html que es accedido al momento de realizar la instalación.0 Page 24 of 34 5) Instalar la aplicación 6) La aplicación está felizmente instalada en el cliente lista para ejecutar. Windows XP Professional or Microsoft Windows Server 2003 .Setear seguridad para poder ejecutar http://server/App/Setup/NoTouchDeploymentStub. y el hashcode de cada archivo.html es una interfase que simplemente llama al NoTouchDeploymentStub. La estructura de este archivo. En este archivo se tiene la información del manifestId (este es un autonumerado). esto es útil cuando no se conoce el nombre del server al momento de hacer la publicación. ambos se chequean para verificar si la aplicación precisa un update o no.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="manifestUri" value="http://myserver/uMnuPpal/uMnuPpal_manifest.. Cada vez que se ejecute la aplicación en el cliente se comparará el appname_manifest. -NoTouchDeploymentStub. 11/12/2008 .com/gxdlsp/pub/genexus/csharp/docum/manuals/9.1 .Microsoft Windows® 2000.xml: existe un archivo xml por cada main que se publique..

La forma de incluir esta lista es a través del archivo PDFReport. 0. esta reside en el folder seteado en la propiedad “Client installation folder” (por defecto Application Data).INI. el cual es invocado al levantar el exe de la aplicación. es llamado por el ejecutable de la aplicación. El mecanismo de verificación de un update de la aplicación es disparado por el gxAppStart.0 Esta funcionalidad esta disponible a aprtir del upgrade 2 del generador Page 25 of 34 Cuando el cliente instala una aplicación.xxx.genexus. que se encuentra en el Object_manifest. por ejemplo C:\WINNT\Fonts\3of9.INI Este archivo se encuentra en el directorio donde se ejecuta el reporte.INI SETEO DE MÁRGENES Editando el archivo PDFReport.0.config: este archivo es creado la primera vez que se instala la aplicación y extrae la información del NotouchdeploymentStub. Embeed Fonts SearchNewFonts SearchNewFontsOnce Version FontsLocation LeftMargin TopMargin OutputFileDirectory booleano que indica si embeber los fonts o no (ver Seccion 'Embeed Fonts') booleano que indica si se deben buscar los fonts si no están en el INI al embeberlos booleano que indica buscar por única vez los fonts si no se encuentran Indica la versión del PDFReport (formato a.xml también) si alguno cambio activa el update. Estos mappings son creados automáticamente http://www.pdf' setPageLines: 999 setLineHeight: 15 GxAttris: \-> Font: Helvetica (8) BOLD \-> Fore (0.0 Indica la ubicación de los fonts Indica el margen izquierdo asociado al documento (en centímetros) Indica el margen arriba asociado al documento (en centímetros) 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 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 Indica que se quiere mostrar DEBUG por la stdout. 255) GxEndDocument! OutputFileDirectory DEBUG Sección 'Embeed Fonts': Para cada nombre de font se le asocia un booleano que indica si embeber el font o no (para granularidad más fina de la GeneralProperty). y si es distinto activa el update. Estos mappings son distintos para MS y Sun. para ese caso alcanzaría con configurar en el archivo: [Embeed Fonts] 3 of 9 Barcode= true [Fonts Location (MS)] 3 of 9 Barcode= C:\WINDOWS\Fonts\3of9.exe. y es automáticamente generado al ejecutar un reporte en caso de que no esté presente.Application. Para embeber un font.exe. 255.Exe . por ejemplo: LeftMargin=3. Este compara el ManifiestId.5 TopMargin=2 Los valores default de ambos es 1. La activación del update consiste en invocar al NoTouchDeploymentStub.Exe del cliente. 11/12/2008 . 0) \-> Back (255. Por ejemplo en muchos casos es necesario para visualizar los código de barra.INI especificando la font y la ubicación de la misma en la sección Embebed Fonts. Para setear qué fonts embeber.dll: estos archivos standares del Application block de Microsoft son instalados desde el NotouchDeploymentStub. Si el manifiest Id no cambio.gxtechnical. Muestra información como la siguiente: GxSetDocName: 'reporte.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. . La forma de evitar esto es embeber en los reportes generados los fonts deseados. Reportes PDF Existen algunos seteos especificos para el caso de reportes PDF que son configurables a traves de un archivo de configuración PDFReport. comienza a comparar los hashcode de cada uno de los archivos (que se encuentran en el Object_manifest.0..NET GeneXus 9.0/manualn. Alli se instala: . Por ejemplo: LeftMargin=3.b.d) // actualmente genera siempre 1.Updaterconfiguration.PDFReportConfig' * Sección 'Fonts Location (MS)' y 'Fonts Location (Sun)' Se almacenan los mappings 'FontName= ubicación del .Manual del Generador .Microsoft.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. se puede ejecutar el 'com. debe estar en 'true' la generalProperty y la property de esta sección.xml del lado del server. Este por ejemplo tiene la información de donde se encuentra el manifiesto en el server..TTF El path debe ser el absoluto del servidoro Web y podria variar según el sistema operativo. es posible setear los márgenes izquierdo y superior en las propiedades ‘LeftMargin’ y ‘TopMargin’ respectivamente.TTF ARCHIVO DE CONFIGURACION – PDFREPORT.Exe el cual transfiere los archivos necesarios al cliente.Folder APP: tiene la instalación propiamente de la aplicación (Client.config y dlls) .exe: Es el ejecutable que se encarga de disparar el proceso de chequeo de una nueva versión.GxAppStart. El separador de decimales debe ser el punto y no la coma.ttf asociado'.reports.c.

También se puede mapear un font en un Type1. más bajo que el Full Trust. como ser el file system.gxopen.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“ http://www. por tanto no pueden acceder a un conjunto de recursos.0 Sección 'Fonts Substitutions' Page 26 of 34 Se almacenan pares 'Font= Font' que mapean un font en otro.NET Otra opcion para incluir código nativo . 11/12/2008 . Estos mappings los puede realizar el usuario.gxtechnical.NET PERMISOS PARA EJECUCIÓN DE ASSEMBLY REMOTO Para ejecutar la reorganización (reor.. para esto existe el comando CSHARP La sintaxis es anteponer la palabra CSHARP en el código PROGRAMAS EXTERNOS .execute(ref AV8par1. Incluir código nativo COMANDO CSHARP Asi como en el resto de los generadores es posible incluir código nativo del lenguaje en los programas generados.. Internet: Tienen el nivel de confiabilidad más bajo y en general no pueden realizar tareas sin la aprobación del usuario. por ej: 'Impact= Helvetica'.Manual del Generador . para esto se debe definir un programa csharp (. Todos los nombres son siempre en minúscula.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.exe o cualquier assembly desde alguna máquina de la intranet no contará con todos los recursos necesarios.cs) e invocarla con: call('FuncExt'. par1. se puede poner 'Impact= Courier'. Por más información vea el apéndice y/o este ejemplo completo en: http://www.0/manualn.NET GeneXus 9.Net de usuario es llamar a una funcion externa. ref AV9par2) Consideraciones: Se debe tener una clase con el nombre de la función Esta debe tener un constructor que recibe un parámetro de tipo IGxContext (se debe incluir el namespace GeneXus.Application Se debe tener un método execute que recibe los parámetros por referencia. Por ejemplo.exe) o el virtualdir. El assembly cuenta con diferentes niveles de seguridad según en el sitio en el cuál 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. par2) Esto se traduce a codigo C#: new funcext(ref _Context).NET Framework Configuration/ Esto lo que hace es abrir la consola ". para mapear un TrueTypeFont en otro. Para solucionar este problema: 1) Administrative Tool/Microsoft .com/gxopen/servlet/hproject?395 Permisos .

LibraryPro (aca puede ir el nombre que se desee).gxtechnical.NET GeneXus 9. "tlbimp". Luego.dll La dll que genera (GXNET. web proc.. en el directorio virtual.. Luego activar el check box que dice "check that file exists”.aspx?395 2 .NET que suma uno a un número. ir al botón Configuration. crear un SUMGX. 11/12/2008 .dll) Seria similar al caso anterioir pero en C copiar la dll creada con tlbimp y la dll com. Este debe tener un constructor execute para llamarlo.com/main/hproject.dll por ejemplo.dll) es una dll . etc.dll al directorio bin del modelo D.0) por línea de comando caspol -m ag All_Code url file:// W:\LibraryPro\ * FullTrust n RemoteKB.NET que funciona como puente sobre la dll com.NET. Incluir en la preference Compiler Flag la referencia a Sum.Llamar a una dll o componente .net a partir de la COM (GXCOM.0/manualn.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. También puede configurarse (Framework 2. Sum. ). Crear un archivo . No interesa el contenido del archivo. -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 autorización a diferentes objetos web dentro de un mismo directorio virtual debe procederse como se describe a continuación. public void execute(ref int YYYY ) { /// llamar a la función sum del assembly B. elegir la extensión aspx e ir al botón “Edit”. &num) Se puede obener un ejemplo en http://www.. En la parte de application settings. Por ejemplo tlbimp /out:GXNET.0 Page 27 of 34 Otra posible solución es darle permisos en este caso solo al exe de la reorganización (reor.dll C. Desde el código GeneXus programar Call('SUMGX'. en el IIS dar botón derecho sobre el directorio virtual / propiedades. por ejemplo el código del CS sería: Using classSum. lo único que interesa es que el archivo exista para que el IIS pueda checkear los permisos.NET Por ejemplo se tiene un assembly .dll GXCOM. Para invocarla desde GeneXus se debe: A.Manual del Generador .cs con la definición de la función.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.aspx por cada web panel. que genera una dll . http://www.gxopen.. caspol m cg LocalIntranet_Zone FullTrust Aca se está seteando FullTrust para la Zona LocalIntranet_Zone. En la hoja “App mappings”.exe). -ag especifíca que se está agregando un grupo (addgroup).Llamar a una dll COM Para poder invocar una dll Com desde una aplicacion . existe un utilitario. Para ello ir al link "Increase Assembly Trust" y aumentar el nivel a “full trust” solo a ese assembly. Copiar Sum. Apéndice Tips ¿COMO INCLUIR UNA DLL EXTERNA? Se distinguen tres casos: 1. //Namespace del assembly public void SUMGX(int YYYY .

public void execute(ref string YYYY ) { /// llamar a las funciones de la dll No COM Page 28 of 34 Notar que también debe tener el constructor execute que es el código que traduce el generador en el fuente al hacer un call. sería: [DllImport("XXXXX..NET GeneXus 9..0/manualn. memoria virtual virtual.esto compila la dll a codigo de maquina y la instala ngen /show .. exe y working directory b) Dbgclr: en Debug\Program to debug… poner exe y working directory 3) Insertar los breackpoint que sean necesarios 4) Run ¿COMO MODIFICAR EL RECICLADO DEL PROCESO QUE SIRVE LAS APLICACIONES WEB? • En windows Xp. 11/12/2008 . también puede hacerlo desde allí..muestra las dlls instaladas ngen hgxtech /delete .exe. se configura en el Machine.execute(ref parm1 .. ¿COMO DEBUGEAR EL CÓDIGO DE UNA APLICACION WIN? Se puede debugear con Vstudio o con el dbgclr. ngen hgxtech.exe que se encuentra en <ProgramFiles>\Microsoft.0 Hay un ejemplo en http://www.. En windows W2003 El proceso w3wp. similar al caso 1 pero usando el comando Dllimport de .com/gxdlsp/pub/genexus/csharp/docum/manuals/9.gxopen.exe. "ngen"..Net\Frameworksdk\guidebug o con el que tiene el visual studio.Debuger se puede debugear con el dbgclr.5 al hacer call a un procedimiento cualquiera genera new FUNCTION (ref _Context)." ( Ctrl + Alt + P) Clickear en el check "Show system processes" Ordenar por tipo dando click en la columna que dice "Type" Seleccionar el Proceso "aspnet_wp" y dar "Attach.com/main/hproject.config ( aplica a todo el webserver) en la sección Process Model. En la versión 80 al hacer call a un procedimiento cualquiera genera new FUNCTION(context ). Este ofrece mas posibilidades que el de la version IiIS 5.NET (codigo IL) en código de máquina.. Esto podría mejorar la performance de ejecución.exe) Ir a "Tools/Debug Processes." Si aparece un diálogo con título "Attach to Process" seleccionar el check "Common Language Runtime" y dar OK 8) Abrir el documento que se quiere debugear e insertar break point en donde corresponda. ).dll")] public static extern bool funcion(string YYYY . cantidad de request.. Esto significa que al proceso consumir un valor igual al 60% de la memoria virtual de equipo este se recicla.aspx?8 version 1.Llamar a una dll No COM desde .gxopen.).aspx?395 ¿COMO GENERAR CÓDIGO DE MAQUINA A PARTIR DE CÓDIGO IL ? Existe un utilitario. El dialogo de configuración es similar al siguiente: • http://www.NET Crear un CS con la definición de la función.dll . ). que compila el codigo intermedio de la plataforma .NET. Es posible configurarlo por tiempo.. se configura desde el mismo IIS (version 6.gxtechnical.2) 3.0 ( Windows 2000 y Xp). ¿COMO DEBUGEAR EL CÓDIGO DE UNA APLICACION WEB? 1) 2) 3) 4) 5) 6) 7) Compilar con /debug:full los fuentes (propiedad del modelo Compiler Flag = /debug) Abrir el debuger (VStudio o dbgclr. Esto implica que al migrar de versión de GeneXus hay que modificar el constructor (los parámetros del mismo ya no son por referencia) Hay un ejemplo en http://www. w2000 El proceso aspnet_wp. (El método webexecute() es el primero que se llama en los webobjects) 9) Navegar a la página.Manual del Generador .lo desinstala (vuelve a andar con el Just in Time como antes) 1..exe: 1) Compilar con /debug (propiedad del modelo Compiler Flag = /debug) 2) Seleccionar el exe a debugear a) Vstudio: crear un project y en las Configuration properties de este poner:debug mode=Program.0) en la seccion Application Pool.4.execute( ref parm1 ..com/main/hproject. existe un valor “MemoryLimit” que por defecto esta seteado en 60. Importante En la versión 80 hay un cambio en la generación interna de los llamados: En la versión 7.

com/library/default. Proveen una mejora significativa en la performance del acceso a la base de datos con el generador . En .NET managed code” .com/library/default. debe tener un "Strong Name". si corre sobre HTTP puede realizar la comunicación en forma binaria o utilizando el protocolo SOAP..NET REMOTING Es un protocolo de comunicaciones para objetos distribuidos.NET GeneXus 9. describiendo los tipos de un modo común.microsoft. Para que un assembly sea almacenado en la GAC.NET CHANNEL SERVICES http://msdn.gxtechnical.asp?url=/library/en-us/dndotnet/html/introremoting.NET GENERATOR http://www. queued components.Net. 11/12/2008 .NET framework.aspx ASSEMBLY Es la unidad de los objetos programados con .0 Page 29 of 34 Glosario . Además de asegurar que los tipos sean usados adecuadamente.asp?url=/library/en-us/cpguide/html/cpconassembliesoverview. Además a nivel tecnológico se utiliza 100% “. COMMON TYPE SYSTEM .0/manualn. Este conjunto de librerías utilizadas para el acceso a datos.NET se pueden implementar componentes COM+.microsoft.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.microsoft.asp?url=/library/en-us/dndotnet/html/introremoting..com/library/default.asp LOG4NET http://logging.NET CONFIGURATION SECTION http://authors. Entre esos servicios están: transacciones automáticas.asp?url=/library/en-us/spptsdk/html/SPCodeAccessSec.aspalliance. incluyendo el manejo entre distintos lenguajes por excepción. GENEXUS .asp .asp ADO. object pooling y otros. ASP . Por mas información: http://msdn. Esto asegura que todas las clases sean compatibles entre sí.com/library/default.gxtechnical. Por más información ir a: http://msdn.Manual del Generador .asp?url=/library/en-us/cpguide/html/cpconglobalassemblycache.NET ADO. están contenidas dentro del .com/library/default.com/aspxtreme/aspnet/syntax/aspnetconfigurationsections.NET es el método nativo de acceso a la base de datos en la plataforma . la máquina de ejecución también asegura que el código no intente acceder la memoria que no le ha sido asignada (es decir que es un código con seguridad de tipo). CTS define como trabajan los tipos en la máquina de ejecución (sus declaraciones y usos).microsoft.CTS El CLR usa algo llamado CTS para una seguridad de tipo estrictamente reforzada. Puede correr sobre HTTP o TCP.NET para almacenar los assemblies de las aplicaciones que corren en una máquina.Net. lo que habilita a los tipos en un lenguaje a operar con tipos en otro lenguaje.microsoft.Net http://msdn.asp COM+ COM+ es una infraestructura de servicios que soporta la ejecución de componentes.asp CODE ACCESS SECURITY http://msdn.apache.com/net GLOBAL ASSEMBLY CACHE (GAC) Es un área de memoria reservada que utiliza .org/log4net/ http://www.

Version=1.com/library/default. Access to the path "C:\DOCUME~1\PC\ASPNET\LOCALS~1\Temp\e8ebd99f-17de-4447-83f8-35769f67bd23\iTextdotNET. Las solución es dar derechos de escritura en C:\Documents and Settings\<nombre del webserver>\<ASPNET\Local Settings\Temp o Server Error in '/services' Application. pero es solo recomendable para aquellos manejadores de base de datos que no provean un provider Ado.com/gxdlsp/pub/genexus/csharp/docum/manuals/9.Manual del Generador . JScript. Access is denied.NET ofrecen la posibilidad de asignar un "Strong Name" a un assembly. ODBC es una capa intermedia entre la aplicación y el DBMS.microsoft.microsoft. el propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda.También ocurre si un objeto usa algún tipo de datos de mail (Outlook). o Server Error in '/services' Application. su funcionalidad es permitir realizar la conexión de la aplicación con la base de datos.BadImageFormatException: The format of the file 'HXXXX' is invalid.1 o inferior o Se esta generando con la versión 8.asp?url=/library/en-us/wmisdk/wmi/wmi_start_page.NET).Net. seguridad en la ejecución e interoperabilidad. PublicKeyToken=bd3736a929f259c3" is denied. Please review the stack trace for more information about the error and where it originated in the code. Version=1. en las aplicaciones .UnauthorizedAccessException: Access to the path "C:\DOCUME~1\PC\ASPNET\LOCALS~1\Temp\e8ebd99f17de-4447-83f8-35769f67bd23\iTextdotNET. por defecto con el usuario ASPNET. Motivos/Soluciones: . el apuntar a CLR puede imponer ciertas restricciones respecto a las funcionalidades disponibles.NET. sólo el “managed code” contiene la información que permite que la máquina de ejecución garantice...Net y estar con NTFS. Motivos/Soluciones: . Por más información ir a: http://msdn. Please review the stack trace for more information about the error and where it originated in the code.asp FAQ: Errores comunes PROBLEMAS EN EJECUCIÓN Modelos WEB o Server Error in '/services' Application: System.UnauthorizedAccessException: Access is denied.1964.microsoft. eso involucra el uso de la gxoffice2. File name: "reorganization" Motivos/Soluciones: o Se esta compilando con framework 2. SESSION STATE http://msdn. Por ejemplo.2760.0.NET GeneXus 9.4. la misma además debe tener derechos de Read & Execute.2760.En el caso de trabajar en ambiente web con . ODBC ODBC(Open DataBase Connectivity) es un estándar de acceso a Bases de Datos desarrollado por Microsoft.0 Page 30 of 34 MANAGED CODE Es el código que apunta a . en caso contrario ocurre un error al desplegar la pagina. por ejemplo. Exception Details: System. El framework . MANAGED DATA CLR proporciona facilidades de asignación y des-asignación de memoria.com/library/default.NET usan “managed data” por defecto (. http://www.gxtechnical.0 y ejecutando con framework 1. más una clave pública y una firma digital.dll y la misma no esta registrada en el servidor web. Visual Basic.NET y que contiene cierta información extra metadata para describirse a sí mismo. Algunos lenguajes de . se pueden tener “managed data” y no. Tal como ocurre con el “managed code” y el que no lo es. mientras que otros (C++) no lo hacen. Dependiendo del lenguaje que se esté usando. PublicKeyToken=bd3736a929f259c3" is denied.asp?url=/library/en-us/cpguide/html/cpconsessionstate. compuesta por su nombre y versión. C++ pierde la herencia múltiple.Net es posible acceder con este método. O puede ocurrir por que la dll quedo corrupta o esta siendo usada por otro objeto. Con el generador .NET. 11/12/2008 . Description: An unhandled exception occurred during the execution of the current web request.NET (datos a quienes no se eliminan los datos superfluos o basura pero que en cambio son controlados por el “managed code”). . Culture=neutral.1964.0/manualn. Description: An unhandled exception occurred during the execution of the current web request. y eliminación de información superflua o basura.asp STRONG NAME Un "Strong Name" determina la identidad de un assembly.4. excel o word. Si bien tanto el “managed code” como el que no lo es. sin necesidad de conocer el DBMS donde están almacenados los datos. Culture=neutral. pueden correrse en una máquina de ejecución.asp?url=/library/en-us/cpguide/html/cpconstrong-namedassemblies.asp WMI (WINDOWS MANAGEMENT INSTRUMENTATION) http://msdn.Se da al ejecutar un reporte PDF y se restringen los permisos.0 de GeneXus o inferior y ejecutando con framework 2. Exception Details: System.com/library/default.

Please review the specific error details below and modify your configuration file appropriately.GxFATDataException: GeneXus Fast Access Exception Motivos/Soluciones: .Algún problema de índices o registros duplicados en la base de datos o The resource cannot be found.No se puede conectar al servidor de Base de datos a. Dependencias de la gxdata c.El caso ocurria en un w2003. Please review the stack trace for more information about the error and where it originated in the code Exception Details: System. Permisos en thrusted conection en datasource de Sqlserver e. por ejemplo para txt: Extension = .NET Files\<nombre_directorio_virtual>. Si el error especifica la línea del programa donde cae editar el CS en esa línea y verificar la operación.1.0 Page 31 of 34 o Configuration Error Could not load file or assembly … Description: An error occurred during the processing of a configuration file required to service this request. Otro caso puede ocurrir por algún problema de conección a la base de datos.En este caso se resuelve agregando el usuario ASPNET al grupo de usuarios o cambiando el acceso a “SQL Authentication”. si se tiene configurado el acceso de usuario por Windows (“Use Windows Authentication” ) y no se tiene los permisos necesarios da el error . Please review the following URL and make sure that it is spelled correctly. es útil verificar si en la misma Url es posible ejecutar un HTML. Exception Details: System. Verificar las Dbms Option b.Otra posibilidades en ambiente Windows 2003 donde hay mas restricciones de seguridad. después que da con un objeto puede dar con cualquier otro. o GeneXus Fast Access Exception or message Description: An unhandled exception occurred during the execution of the current web request.Otro motivo puede ser un problema de instalación del framework y el IIS no reconozca los . puede no tener el mapeo a la dll en el archivo web. al presionar el boton create se resuelve . es necesario habilitar la extensión de los archivos aspx desde: Computer Managment/ serices And applications/Webservice Extensions/AspNet v1. alli el directorio virtual.NET GeneXus 9. ya que el usuario ASPNET que corre el servicio ASpnet_Wp (que sirve los webpanels) no tiene los permisos suficientes en el servidor Web.4322\Temporary ASP.gxtechnical. En este caso levantar el servidor Web .NET\Framework\v1. En ese caso ejecutar el comando aspnet_regiis –i (este se encuentra bajo el direcotrio de instalación del framework) . La solución es darle derechos de escritura al usuario en esa carpeta. Por ejemplo trabajando con el manejador SQLServer. The system cannot find the file specified.También podría dar si no se tienen los permisos de Full Trust en la seguridad o Access is denied: 'GxOffice2Net'.web. Parser Error Message: Could not load file or assembly 'gxclasses' or one of its dependencies. Esto ocurre si se instala primero el framework y luego el IIS.txt Myme Type = application/octet-stream o Object reference not set to an instance of an object Description: An unhandled exception occurred during the execution of the current web request.. -------------------------------------------------------------------------------------------o Specified cast is not valid. no estaba creado correctamente. had its name changed. Description: An unhandled exception occurred during the execution of the current web request. o con algun control sin inicializar (por ejemplo un webcomponent).Otro motivo es que no este levantado el IIS. con un icono verde. Motivos/Soluciones: . Please review the stack trace for more information about the error and where it originated in the code. Description: HTTP 404. http://www. Exception Details: GeneXus.IO. 11/12/2008 .aspx. o sea trate de mandar un mail via smtp. Please review the stack trace for more information about the error and where it originated in the code..config del directorio bin o no haberse compilado. No se definió datasource de sistema d. da este error al ejecutar un web panel que use una variable de tipo smtpsession.14322 = allowed Tambié se puede habilitar una extensión particular editando el en IIS las propiedades de dirvir y en la sección Http Header agregar el Myme type de la extensión.NullReferenceException: Object reference not set to an … Motivos/Soluciones: Es un error general.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. En este caso compilar nuevamente el objeto y/o ejecutar el UpdateWebconfig . Puede ocurrir con Web transaction sin boton confirmar. Motivos/Soluciones: No encuentra la página.FileLoadException: Access is denied: 'GxOffice2Net' Motivos/Soluciones: Si se trabaja con <identity impersonate="true" /> y el usuario que ejecuta en el IIS la página no tiene derecho de escritura en el C:\WINDOWS\Microsoft. El Web config lo genera el UpdateWebconfig a partir de las entradas del archivo GXCFG.0/manualn. or is temporarily unavailable. The resource you are looking for (or one of its dependencies) could have been removed.DataAccess.Manual del Generador . El Application name era default application. El usuario que corre los webpanels (host\ASPNET o IUSR_MASTER) no tiene los permisos necesarios sobre la base de datos) .

Appender.IOException: The process cannot access the file client.log (para eso cada uno tiene que leer un client. or one of its dependencies.. generalmente es porque esta dando un error en el server. El error solo da con la propiedad Config http Handler Section con su valor por defecto (for each object). ponerlo en OFF y sin appenders en el root: <root> <level value="DEBUG" /> </root> Dejar el log prendido (ALL) pero con salida a consola en lugar de archivo. Please review the specific error details below and modify your configuration file appropriately. Motivos/Soluciones: Esta excepción tiene un mensaje que no tiene nada que ver con 'version incompatibility'. Verificar los mismos. Borrar *.Net security\Make changes to this computer\Local intranet".NET GeneXus 9. si se modifica a Handler Factory (o ashx) no dará el error al levantar la aplicación pero si dará un error al intentar acceder a dicho objeto (XXXX) o Application has generated an exception that could not be handled Description: Application has generated an exception that could not be handled Process id=0x67c (1660).exe.config con • http://www. de conexion a la BD o de algun procesamiento en la BD.RollingFileAppender"> <file value="client"/> <appendToFile value="true"/> <maximumFileSize value="9000KB"/> <maxSizeRollBackups value="4"/> <staticLogFileName value="false" /> <datePattern value="yyyy-MM-ddTHHmmss'.SerializationException Message: BinaryFormatter Version incompatibility.Serialization.1699884645.ingorammer.html En este caso ver el log del server.exe.1 Wizards\Adjust .Programs. Received Version 1835627630. en lugar de client. Expected Version 1. los siguientes logs: client2003-12-18T163808. 11/12/2008 . Parser Error Message: File or assembly name GXData. Si mirando el log aun no se ve nada raro. was not found Motivos/Soluciones: Falta una dependencia de la gxdata o no esta la gxdata en el bin del modelo.exe. Thread id=0x6c4(1732)" Motivos/Soluciones: Para darle permisos ejecutar "Control panel\Administrative Tools\Microsoft .exe.ver y generar un objeto).PatternLayout"> <conversionPattern value="%d{HH:mm:ss.IO.log client2003-12-18T163751. • Correr dos clientes con el mismo client.config y tienen el log en ALL al mismo archivo. lo que pasa es que se retorno una excepcion desde el server y no es bien interpretada por el cliente.Layout.config y con el log prendido y el nombre del log se genera cada vez. o Configuration Error Description: An error occurred during the processing of a configuration file required to service this request.XXXX form Assembly … does not have an implementation Motivos/Soluciones: El objeto mencionado (XXXX) no fue generado o fue generado con otra versión. por ejemplo. genera y compila y que las clases Standard son las correspondientes (para forzar la copia de las clases se puede borrar el *. Please review the specific error details below and modify your configuration file appropriately.gxtechnical. Esto ocurre en aplicaciones distribuidas. por ejemplo: <appender name="RollingFile" type="log4net. <root> <level value="DEBUG"/> <appender-ref ref="ConsoleAppender"/> </root> -----------------------------------------------------------------------------------------¡ Exception: System.ver del directorio del modelo y regenerar un objeto.0/manualn.exe..Runtime.fff} [%t] %-5p %c{1} [%x] . Parser Error Message: Method XXXX in Type GeneXus.Manual del Generador .. Motivos/Soluciones:Algún error de tipos o valores en el pasaje de parámetros . pero la dll se mantiene en el directorio bin.config y server.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. Ambos leen el mismo client.log'"/> <layout type="log4net. una posible explicacion sobre eso: http://www.0 Description: An unhandled exception occurred during the execution of the current web request.log y client2.config diferente => ejecutar en directorios diferentes). Esto ocurre por ejecutar dos objetos a la vez en el cliente que escriben log.com/RemotingFAQ/BINARYVERSIONMISMATCH.NET Framework 1. Motivos/Soluciones: • Que cada uno genere un archivo distinto de log.log que sean por ejemplo client1.. alli se debe setear el valor Full trust Modelos GUI o System.log" because it is being used by another process.%m%n"/> </layout> </appender> Con esa configuración se generan. Page 32 of 34 o Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. • Apagar el log. Verificar que dicho objeto especifica.0. También podría ocurrir este error si el objeto alguna ves existio en el modelo y fue eliminado. probar de configurar el client.log ….

chequear que: o Esta levantado el servicio.Propiedades del modelo.IO.Net.NET para modelos remotos ) --------------------------------------------------------------------------------------------• Identifier expected : fatal error U1077: The system cannot find the file specified. lo primero acción es ir a chequear el manifiest.Manual del Generador .exe .Net.dll arg:csc="C:\WINDOWS\Microsoft. chequear que: • • • Existe el directorio virtual <dirvirtual> apuntando al srv de ese modelo Probar de acceder a http://servername/dirvirtual en un browser. por falta de permisos (verificar en permisos .NET Only.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. -----------------------------------------------------------------------------------------¡ Exception: System. Si se esta corriendo como consola o servicio de windows (en la property del modelo ADO.Security.exe' : return code '0xe0434f4d' Motivos/Soluciones: Compilación de objeto o reorganización remota.dll donde se especifica la reorganización a ejecutar --------------------------------------------------------------------------------------------- l Unhandled exception: System.BadImageFormatException: The format of the file 'reorganization' is invalid. GxClasses" url="http://servername:1234/factory.rem"/> y en el server. PROBLEMA EN COMPILACIÓN l Fatal error U1077: 'UpdateConfigWeb.Updater.0 de GeneXus o inferior.SecurityException: Request failed. ya que si se especifica un dbms distinto al del datasource da el error .tener instalado el framework release o la versión de framework compatible con el generador que armo el reor.ApplicationBlocks.0 y se esta generando con la versión 8. --------------------------------------------------------------------------------------------- PROBLEMAS EN REORGANIZACIÓN l Unhandled exception: System. es errónea.xml. en particular Edit model\Dbms.0 formato soap: Page 33 of 34 cambiar <formatter ref="binary"/> por <formatter ref="soap"/> en los dos config. Si da "not found" puede ser que no este registrado el aspnet_wp.genexus. at Microsoft.NET\Framework\v1. Motivos/Soluciones: No esta encontrando el servidor de remoting: Si esta corriendo en IIS (en la property del modelo ADO.0/manualn.config debe estar: <channel ref="http" port="1234"> También puede dar un mensaje de ese tipo si se está corriendo un programa con remoting en IIS y se modifica algo en el web.Logger.4322\csc. File name: "reorganization" Motivos/Soluciones: Se tiene instalado el framework 2.NET Only. (por que en ese caso se reinicia el aspnet_wp automáticamente).exe. 11/12/2008 . Por ejemplo: si port=1234 en el client.DistributedObjectFactory. y en el mismo puerto.FileLoadException: Could not load file or assembly 'GxClasses http://www.1.tener la reorganization..gxtechnical. Si la Url del manifiesto no esta accesible da este error. Revisar sección de Permisos .config debe estar la línea: <wellknown type="com.PermissionSet" version="1"> Motivos/Soluciones: . con ese formato en el cliente se va a ver la excepcion con un mensaje mas entendible (!= 'version incompatibility').distributed.verificar .WebException Message: The underlying connection was closed: Unable to connect to the remote server.LogAndThrowException( String message.exe. --------------------------------------------------------------------------------------------- l Unhandled exception Motivos/Soluciones: El reor. en el server. Description: The granted set of the failing assembly was: <PermissionSet class="System. para saber si es necesario instalar una actualización de la aplicación o no.. por lo que pueden surgir problemas de compilación que deberán ser corregidos en el código GeneXus. Application server host se tiene algo asi: http://servername:port). --------------------------------------------------------------------------------------------- l Unhandled exception: System. Motivos/Soluciones: Puede ocurrir cuando no se tiene especificado un valor en la preference “Application namespace” --------------------------------------------------------------------------------------------• gxexec "C:\Usuarios\ealmeida\mdlCR\NetOracle\blduXCEMant. al levantar la misma desde el cliente da el error descrito Motivos/Soluciones: • Al levantar el exe en el cliente .config.verificar la conexión a la base de datos . Application server host se tiene algo asi: http://servername/dirvirtual). La url se extrae del archivo updaterconfiguration.config que se encuentra en el directorio de instalación de la aplicación ( por defecto Document and Setting\User\Application Data\GxPrograms\Objetname) • También podría ocurrir el error si la Url dentro del manifiesto .NET GeneXus 9.cs" -r:GxBaseBuilder.exe no esta pudiendo ser levantada.exe" -arg:mdlpath= "C:\Usuarios\ealmeida\mdlCR\NetOracle\" Before compile error: El sistema no puede hallar el archivo especificado Motivos/Soluciones: se estan generando strong names y no esta seteada la variable path con el directorio del sn.exe Nota: El lenguaje es muy estricto en el chequeo de tipos. Exception ex ) Se instala una aplicación mediante publish. El manifiesto se encuentra bajo el folder donde se publica y tiene el nombre object_Manifiest. -----------------------------------------------------------------------------------------o APLICACIONES CON PUBLISH o The underlying connection was closed: The remote name could not be resolved.xml del server.Permisos de seguridad en una reorganización de modelo Web en la red.Security.

.Net.gxtechnical. Motivos/Soluciones: .Manual del Generador . 11/12/2008 .0/manualn. http://www..NET GeneXus 9.Permisos de seguridad en una reorganización de modelo Win en la red.com/gxdlsp/pub/genexus/csharp/docum/manuals/9. PublicKeyToken=74ebdef9af814246' or one of its dependencies. Revisar sección de Permisos . Culture=neutral.0 Page 34 of 34 Description: Unhandled Exception: System.IO.1. Version=1. Failed to grant minimum permission requests.0.FileLoadException: Could not load file or assembly 'GxClasses.0.