Foros del Web » Programación para mayores de 30 ;) » .NET »

SW en .NET ok, pero no funciona en ASP.NET

Estas en el tema de SW en .NET ok, pero no funciona en ASP.NET en el foro de .NET en Foros del Web. Buenas a todos, os comento mi problema por si alguien pudiera darme luz sobre la solución. Partiendo de la base de que no habia trabajado ...
  #1 (permalink)  
Antiguo 17/04/2015, 01:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 13
Antigüedad: 13 años, 1 mes
Puntos: 0
SW en .NET ok, pero no funciona en ASP.NET

Buenas a todos,

os comento mi problema por si alguien pudiera darme luz sobre la solución. Partiendo de la base de que no habia trabajado nunca con .NET......un desarrollador de software nos ha dejado una DLL para poder agregarla al proyecto que tenemos que hacer en .NET. Con esta DLL podemos interactuar con su software desde nuestro nuevo programa (con este conseguimos añadir opciones que nos hacer falta y que no vienen por defecto en su software).

Después de varios días intentado aprender lo básico de .NET para arrancar, hemos conseguido que funcione. Podemos crear el objeto del tipo que nos indica el desarrolador de la DLL, llamar a sus metodos, esperar sus eventos, etc.

El ejemplo simplificado de lo que estamos haciendo es el que os pego a continuación, donde lo único que se hace es esperar al evento de cierre del programa principal para mostrar un mensaje en pantalla:


Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Solidus.BSAIntegration;



namespace WindowsFormsApplication2
{

    public delegate void Delegado_ApplicationClosedEventHandler();

    
    public partial class Form1 : Form
    {

        BSAClient cliente = new BSAClient();        


        public Form1()
        {

            InitializeComponent();

            cliente.OnApplicationClosed += new BSAClient.ApplicationClosedEventHandler(cliente_OnApplicationClosed);            

        }



        public void cliente_OnApplicationClosed()
        {
            if (this.InvokeRequired)
            {
                Delegado_ApplicationClosedEventHandler delegado = new Delegado_ApplicationClosedEventHandler(cliente_OnApplicationClosed);
                this.Invoke(delegado);
            }
            else
            {
                textBox1.Text = "BSA se cerro correctamente";
            }
        }
   
    }
}

Como os digo, por fin funciona, hemos probado casi todos los eventos, casi todas las llamadas, y parece que podemos hacer uso de todo.

El problema es que nos han pedido que lo pasemos a ASP.NET. Después de varios días mas de pruebas, mucha documentación y mucho leer, lo que hemos conseguido es poder llamar a los métodos y hacerlos funcionar, pero para lo que no hemos tenido narices es para que funcionen los eventos. La compilación no da errores, en tiempo de ejecución tampoco, simplemente (por ejemplo) al cerrar la aplicación de desarrollador debería saltar un evento de tipo "SE HA CERRADO LA APLICACIÓN", pues ni se entera, es como si no viera que se produce el evento. Creo que hemos probado todas las combinaciones (evidentemente nos falta la buena), incluso poniendo los eventos en el "global.asax", pero nada, todo igual tiempo. El codigo que tenemos para ASP.NET es:


Código:
<%@ Page Language="C#" %>
<%@ Import Namespace="Solidus.BSAIntegration" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">


    BSAClient cliente = new BSAClient();

    public event BSAClient.ApplicationClosedEventHandler ApplicationClosed;
        
    
    protected void Page_Load(object sender, EventArgs e)
    {        
        cliente.Initialize();

        cliente.OnApplicationClosed += new BSAClient.ApplicationClosedEventHandler(cliente_OnApplicationClosed);

        Label1.Text = "Se cargo la pagina";
                
    }



    protected virtual void OnApplicationClosed()
    {
        Label1.Text = "Se cerro el BSA";
    }




</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    
    <form id="form1" runat="server">
        <table align='center'>
        <tr>
            <td colspan='4' align='center'>
                <br /> <br />
                <asp:Label ID="Label1" runat="server"></asp:Label>
            </td>
        </tr>
        </table>
    </form>
</body>
</html>

Este es el código resumido solo con un evento (que no funciona), tenemos el código con varias llamadas métodos que cambian correctamente los mensajes y el estado del software (interactuan bien entre ellos), pero para recoger los eventos no hemos conseguido hacerlo funcionar.

Bueno, si se os ocurre algo muchas gracias, en caso contrario también muchas gracias por el interés por leer el mensaje.

Saludos.
  #2 (permalink)  
Antiguo 17/04/2015, 02:26
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

El problema yo diría que está más de "base". Aunque el lenguaje sea el mismo, C#, una aplicación de escritorio no se puede convertir a una de asp.net cambiando simplemente el tipo de proyecto. Hay que tener en cuenta muchas cosas que funcionan diferente: el envío de eventos, como funcionan los postback, el ciclo de vida, la forma de mantener el "estado" entre llamadas, etc.

Si lo vais a hacer en asp.net porque es un requerimiento hay que plantearse muy bien la arquitectura y saber bien como funciona la DLL y como va a querer que sea la comunicación con el usuario.
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 17/04/2015, 03:11
 
Fecha de Ingreso: marzo-2011
Mensajes: 13
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

Buenas Malenko,

entiendo lo que dices. De todas formas, por ahora lo que hemos hecho es hacer programación básica para saber que podemos acceder a los métodos y eventos sin problemas. Por ejemplo hicimos esto para la solución en .NET, decidimos ver que se podía acceder a todos sin problemas. Luego ya nos sentaremos a estudiar como será la solución definitiva, donde queremos los botones, como actuar ante los eventos, y ver como debería quedar todo antes de comenzar a programar.

Por ahora como os comentaba hemos averiguado como hacer esto en .NET. Cuando ya lo teníamos y se hablo con el cliente, para empezar con el proyecto en .NET ya que teníamos claro los mecanismos para desarrollar la aplicación, pues resulto que ahora la quieren en ASP.NET.

Empezamos "de cero" de nuevo, y de cero llegamos a acceder a los métodos y utilizarlos, pero "de cero" no hemos conseguido acceder a los eventos de ninguna de las formas. Cuando seamos capaces de provocar la llamada de una función cuando se produzca determinado evento, entonces quedaremos de nuevo con el cliente para definir el proyecto definitivo. Por ahora lo que nos interesa es saber que podemos interactuar con la DLL a cualquier nivel utilizando ASP.NET.

Pensábamos que el tema de los eventos en ASP.NET lo sacaríamos como hicimos con .NET, después de muchas pruebas, mucho buscar por la red, mucho leer (hace una semana ni habíamos escuchado el concepto de DELEGADO), pero no ha sido así.


Muchas gracias por tu rápida respuesta.


P.D.: Alguien se puede preguntar que como nos hemos metido en esto si no tenemos ni idea. No somos una empresa de programación, nos dedicamos a centrales telefónicas, y muchas centrales de hoy en día traen software para usuarios y APIs para quien necesite hacer algo mas con el software. Hemos tenido que tocar PyThon, PHP, XML, ASP, Delphi, etc, pero no somos expertos (ni muchísimo menos) en nada de esto, sino que debemos meternos con ello cuando se dan casos puntuales como este.
  #4 (permalink)  
Antiguo 17/04/2015, 04:00
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

Cita:
Iniciado por ivanlpgc Ver Mensaje
Empezamos "de cero" de nuevo, y de cero llegamos a acceder a los métodos y utilizarlos, pero "de cero" no hemos conseguido acceder a los eventos de ninguna de las formas. Cuando seamos capaces de provocar la llamada de una función cuando se produzca determinado evento, entonces quedaremos de nuevo con el cliente para definir el proyecto definitivo. Por ahora lo que nos interesa es saber que podemos interactuar con la DLL a cualquier nivel utilizando ASP.NET.

Pensábamos que el tema de los eventos en ASP.NET lo sacaríamos como hicimos con .NET, después de muchas pruebas, mucho buscar por la red, mucho leer (hace una semana ni habíamos escuchado el concepto de DELEGADO), pero no ha sido así.
Esto es justo lo que te decía. Aunque el lenguaje que se usa es el mismo, el ciclo de vida de un formulario (Winform) y el de una página en asp.net (webform) no tienen nada que ver. Lo mismo con el tema de delegados. Si me comentas un poco la funcionalidad del assembly y para que lo quereis integrar en la página (que queréis usar de él, etc.) te puedo echar un cable. Si no quieres hacerlo de forma, pública mándame un MP.

Cita:
Iniciado por ivanlpgc Ver Mensaje
P.D.: Alguien se puede preguntar que como nos hemos metido en esto si no tenemos ni idea. No somos una empresa de programación, nos dedicamos a centrales telefónicas, y muchas centrales de hoy en día traen software para usuarios y APIs para quien necesite hacer algo mas con el software. Hemos tenido que tocar PyThon, PHP, XML, ASP, Delphi, etc, pero no somos expertos (ni muchísimo menos) en nada de esto, sino que debemos meternos con ello cuando se dan casos puntuales como este.
Si te sirve, he estado casi 9 años trabajando como programador senior C# en una empresa de micropagos. Mi último proyecto fue una centralita en la nube (poder interactuar con una centralita VoIP mediante un panel web creado a medida), integrando estadísticas, pagos Visa, SMS, etc. Ahora mismo las empresas ya no quieren una simple centralita, quieren integrar mucha lógica de negocio en ella y que sea fácilmente configurable. Nosotros nos tiramos casi 1 año en hacer un sistema que se pudiese adaptar en cuestión de unas pocas horas a casi cualquier necesidad de los clientes.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 17/04/2015, 04:46
 
Fecha de Ingreso: marzo-2011
Mensajes: 13
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

Te podría pasar el PDF (la documentación que proporciona el fabricante de la central se limita a un documento PDF mínimo), así como la DLL a importar en el proyecto, pero creo que no te serviría de mucho, pues para hacer pruebas es necesario el software de cliente, el software servidor montado en una equipo, y la central propia del fabricante. Todo esto para poder probar el funcionamiento en tiempo de desarrollo.

Como veras mucho caos. Si te digo la verdad pensaba que la respuesta sería rápida, en plan "pues para manejar los eventos de una DLL agregada como referencia desde una proyecto ASP.NET tienes que agregar esto, poner esto así y esto así....", mas o menos como nos paso con .NET.

Seguiremos mirando y probando a ver si atinamos a recoger esos eventos. De cualquier forma, agradeciendo tu ayuda y tu interés, y ya no tanto por ayudarnos con el problema (por que realmente no podrías probar si te funciona o no), si por curiosidad técnica quisieras la DLL y el PDF de documentación no dudes en pedirlo que te lo mando sin problema.


Muchas gracias.
  #6 (permalink)  
Antiguo 17/04/2015, 04:53
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

Si quieres puedes pasármelo por mail y estos días le doy un vistazo para ver como se puede plantear el problema. Seguro que se le puede dar una vuelta y encontrar alguna forma de solucionarlo.
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 21/04/2015, 02:54
 
Fecha de Ingreso: marzo-2011
Mensajes: 13
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: SW en .NET ok, pero no funciona en ASP.NET

Muchas gracias por la ayuda prestada Malenko.

Después de las aclaraciones que me diste por correo la solución parece que será utilizar una conexión vía COM contra la DLL.

Por ahora hemos establecido la conexión, creado el objeto y llamado a los métodos (una gran mejora con respecto al uso de ASP.NET, por que todo funciona sin la recarga de la página con cada acción). Estamos en el mismo punto que antes con esta solución, que no funcionan los métodos, pero la diferencia es que cuando agregamos la programación para el manejo de ellos, el navegador peta, con lo que llegamos a la conclusión de que si que están funcionando los métodos pero no los estamos manejando o llamando correctamente, lo que aunque no lo parezca es una avance (si ponemos el nombre del evento correcto el navegador peta, si nos inventamos un evento no pasa nada). Seguiremos con ello, y si no recurriremos nuevamente a solicitar ayuda a los foreros, en este caso en la sección de JavaScript.

Lo dicho, muchas gracias por mandarnos a la dirección correcta para no estar perdiendo el tiempo.

Saludos.

Etiquetas: net, programa, windows
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:31.