Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > .NET
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2007
[fer21unmsm] fer21unmsm is offline
Miembro Premium
 
Registrado: dic 2005
Ubicación: Lima
Posts: 627
Poder: 19
fer21unmsm Va por buen camino
Smile Performance de pagina en .Net

Hola compañeros de club, tengo un problemita con las páginas web creadas en .Net, lo que pasa es que se demoran mucho en cargar osea como 8 a 10 segundos, pero esto el usuario lo puede tolerar, pero el verdadero problema radica en los callbacks que se utilizan para obtener información especifica del server sin que haga un postback de toda la página, bueno les comento que este callback se demora igual que la carga de la página, es decir 8 a 10 segundos (hago un parentesis para decir que la demora de la pagina creo que es normal porque hay bastantes cosas, tambien he probado con las paginas de microsoft hechas en .net y se demoran igual) soy un poco ignorante en este tema de programación web en .Net (mi primera vez) por eso no sé si es normal que el callback se demore en retornar la info en 8 a 10 segundos, especificamente se trata de un combo que al seleccionar un proveedor obtiene del sever la dirección y telefono, se supone que al seleccionar el proveedor del dropdownlist debe mostrar rápidamente la dirección y telefono, ¿a que se puede deber, es normal, como puedo hacer para que no pase eso (sea rapido)?

Ah por si acaso la pagina la he optimizado lo mas que pude (no hace ningun postback, salvo cuando guarda la info, he deshabilitado varios viewstates, etc), el servidor es un xeon no se de cuanto pero es bien potente (asi como yo, jeje), y mi conexión a internet es "rápida" de 1mb

Espero su opinión acerca de esta duda

Gracias de antemano
Espero que la comunidad siga creciendo como siempre lo han hecho
Saludos cordiales.
__________________
"La información tiene más valor cuando se comparte"
Responder Con Cita
  #2  
Antiguo 12-04-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pues MUY raro.

ASP.NET es lento al cargar la primera vez pero de ahi en adelante la cosa anda bien...

Y mas en un xeon...

Ya hiciste un profiling para ver donde esta la lentitud?

Y no diste nada de info como:

- Version de .NET
- Que tipo de OS (WinXP,Win2003)
- Si es en IIS o cassini o...
- base de datos, cantidad de registros, etc...
- Cantidad de usuarios...

Y un ejemplo de codigo no caeria mal...
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 13-04-2007
[fer21unmsm] fer21unmsm is offline
Miembro Premium
 
Registrado: dic 2005
Ubicación: Lima
Posts: 627
Poder: 19
fer21unmsm Va por buen camino
Cita:
Empezado por mamcx
Pues MUY raro.

ASP.NET es lento al cargar la primera vez pero de ahi en adelante la cosa anda bien...

Y mas en un xeon...

Ya hiciste un profiling para ver donde esta la lentitud?

Y no diste nada de info como:

- Version de .NET
- Que tipo de OS (WinXP,Win2003)
- Si es en IIS o cassini o...
- base de datos, cantidad de registros, etc...
- Cantidad de usuarios...

Y un ejemplo de codigo no caeria mal...
Gracias por contestar mamcx

Si ya hice un profile con el sql y no veo nada raro, salvo lo siguiente: al momento de seleccionar un proveedor con el dropdownlist se demora un poco desde que el cliente le envía la info(se demora como 8 segundos) porque de allí el servidor lo procesa rapido y devuelve el resultado (es decir la dirección y el telefono)

si disculpa que no haya dado la información respectiva (ya decia yo que faltaba algo más ) aquí te la doy:

- Utilizo el framework 2.0
- mi Ide es Visual Studio 2005
- Mi SO cliente es Windows XP Professional con SP2
- Mi SO servidor es Windows Server 2003 Standard Edition con SP1
- Utilizo el IIS
- Microsoft SQL Server 2000 Enterprise
- La cantidad de registro es muy poco por ahora (800)
- Un sólo usuario conectado

Aquí envío una parte del código también

ChangeDlstShipper: es una función que sirve para obtener la dirección y telefono del shipper seleccionado

Código:
Partial Class new_ship_inst_cs
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler

    Private iObjParamCount As Integer
    Private bSwValid As Boolean = False
    Private _callbackArgument As String

    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) _
        Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent

        Dim UOAdress, UOPhone As String
        Dim stVal() As String
        UOAdress = ""
        UOPhone = ""

        If dlstShipper.ID = Right(eventArgument, Len(eventArgument) - InStr(eventArgument, "ª")) Then
            ChangeDlstShipper(Left(eventArgument, InStr(eventArgument, "ª") - 1), UOAdress, UOPhone)
            _callbackArgument = txtShipAddress.ClientID & "º" & UOAdress & "ª" & txtShipperPhone.ClientID & "º" & UOPhone
        ElseIf dlstConsignee.ID = Right(eventArgument, Len(eventArgument) - InStr(eventArgument, "ª")) Then
            ChangeDlstShipper(Left(eventArgument, InStr(eventArgument, "ª") - 1), UOAdress, UOPhone)
            _callbackArgument = txtConsAddress.ClientID & "º" & UOAdress & "ª" & txtConsPhone.ClientID & "º" & UOPhone
        End If

        stVal = Split(eventArgument, "ª")
        If dlst_fact_ship_inst_cs.ID = stVal(1) Then
            _callbackArgument = stVal(0)
        End If

    End Sub
Código:
    Public Function GetCallbackResult() As String Implements _
        System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
DataManaged es una clase que he generado para manejar data, es decir operaciones con el sql como storeprocedures, consultas, etc. Para el caso del código de abajo instancio un objeto de esta clase para poder llamar al método m_addNewItem (crea los parametros y ejecuta el storeprocedure pasado como parámetro)

m_addNewItem(<nombre_del_store_procedure>, <tipo_de_comando>, <lista_de_parametros_SP>, <numero_parametros>, <bit_indica_si_tiene_parametros_de_retorno>)

"Alexim_SIConnectionString": es la cadena de coneccion

Código:
    Protected Sub ChangeDlstShipper(ByVal ItemUO As String, ByRef UOAdress As String, ByRef UOPhone As String)
        Dim ObjStProc As New DataManaged("Alexim_SIConnectionString")
        Dim stParams As String
        Dim stResult As String

        Try


            stParams = "nvDom_prin_un_opª16ª200ª2¬" & _
            "nvCod_pais_fono_tip_contacª16ª10ª2¬" & _
            "nvCod_area_fono_tip_contactª16ª10ª2¬" & _
            "nvFono_tip_contactª16ª15ª2¬" & _
            "nvIdUOª16ª10ª1ª" & ItemUO 'CType(sender, DropDownList).SelectedValue
            stResult = ObjStProc.m_addNewItem("up_GetPhoneAddressUO", 4, stParams, 5, 1)

            UOAdress = Split(stResult, "¬")(0)
            UOPhone = Split(stResult, "¬")(1) & Split(stResult, "¬")(2) & "-" & Split(stResult, "¬")(3) 'ObjParameter(2).Value.ToString & ObjParameter(3).Value.ToString & "-" & ObjParameter(4).Value.ToString

            ObjStProc.Dispose(1)
        Catch ex As Exception
            Me.lbl_error.Text = "ha surgido el siguiente error: " & ex.Message
        End Try
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        'Genera script para el callback de dlstShipper
        Dim cm As ClientScriptManager = Page.ClientScript
        Dim cbReference As String

        cbReference = cm.GetCallbackEventReference(Me, "arg +'ª'+ valor", _
            "ReceiveServerData", "") ' & "Objeto"

        Dim callbackScript As String = ""

        callbackScript &= "function CallServer(arg, valor)" & _
            "{" & cbReference & "; }" ', Objeto
        cm.RegisterClientScriptBlock(Me.GetType(), _
            "CallServer", callbackScript, True)

        dlstShipper.Attributes.Add("onchange", "CallServer(document.getElementById('" & dlstShipper.ClientID & "').value, '" & dlstShipper.ID & "');return false;")
        dlstConsignee.Attributes.Add("onchange", "CallServer(document.getElementById('" & dlstConsignee.ClientID & "').value, '" & dlstConsignee.ID & "');return false;")

        Dim csOtro As ClientScriptManager = Page.ClientScript
        Dim cbOtro As String

        cbOtro = csOtro.GetCallbackEventReference(Me, "arg +'ª'+ valor", _
            "ReceiveServerDataOtro", "") ' & "Objeto"

        Dim callbackScriptOtro As String = ""

        callbackScriptOtro &= "function CallServerOtro(arg, valor)" & _
            "{" & cbOtro & "; }" ', Objeto
        csOtro.RegisterClientScriptBlock(Me.GetType(), _
            "CallServerOtro", callbackScriptOtro, True)

        dlst_fact_ship_inst_cs.Attributes.Add("onchange", "CallServerOtro(document.getElementById('" & dlst_fact_ship_inst_cs.ClientID & "').value, '" & dlst_fact_ship_inst_cs.ID & "');return false;")
    End Sub
voy a realizar otro post con el código comentado y más código, disculpen las molestias

Gracias de antemano

Saludos cordiales.
__________________
"La información tiene más valor cuando se comparte"

Última edición por fer21unmsm fecha: 13-04-2007 a las 20:17:41.
Responder Con Cita
  #4  
Antiguo 13-04-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Ok...

Hace un rato que no trabajo con .NET en asp.net (estoy con mobiles ahora) asi que me he oxidado un poco.

Me podrias decir que es DataManaged? Un busqueda en google por ".net 2.0 DataManaged" no me arroja resultados.

Si es una clase tuya o de algun framework, podrias reemplazar, solo por probar, con una llamada usando una datareader?

Si esta correcto "nvDom_prin_un_opª16ª200ª2¬"? Con esos caracteres raros?

Aunque si dices que en Sql la cosa anda bien, me gustaria que verificaras con el datareader y en base a eso formulamos un camnio para resolver...
__________________
El malabarista.
Responder Con Cita
  #5  
Antiguo 13-04-2007
[fer21unmsm] fer21unmsm is offline
Miembro Premium
 
Registrado: dic 2005
Ubicación: Lima
Posts: 627
Poder: 19
fer21unmsm Va por buen camino
Gracias por responder, mamcx

ya lo probé con datareader, pero pasa lo mismo.

Gracias de antemano

Saludos
__________________
"La información tiene más valor cuando se comparte"
Responder Con Cita
  #6  
Antiguo 13-04-2007
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Tenes un http module por ahi que pudiera interferir?

Como sea, una forma de aliviar la situacion es usando cacheado de datos. Podrias cachear la lista que necesitas, busca sobre ASP.NET caching...
__________________
El malabarista.
Responder Con Cita
  #7  
Antiguo 13-04-2007
[fer21unmsm] fer21unmsm is offline
Miembro Premium
 
Registrado: dic 2005
Ubicación: Lima
Posts: 627
Poder: 19
fer21unmsm Va por buen camino
Ok voy a revisar lo del cacheado, de ahi te cuento

gracias
__________________
"La información tiene más valor cuando se comparte"
Responder Con Cita
  #8  
Antiguo 17-04-2007
[fer21unmsm] fer21unmsm is offline
Miembro Premium
 
Registrado: dic 2005
Ubicación: Lima
Posts: 627
Poder: 19
fer21unmsm Va por buen camino
Bueno, una buena solución que he encontrado a mi problema, es separando cada sección de mi pagina en varias paginas incrustadas en frames (para que se muestre como una sola) + callbacks, y el problema se solucionó, ya que el radicaba en que habia muchos componentes en la pagina (por necesidad)

Saludos cordiales
__________________
"La información tiene más valor cuando se comparte"
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
página web kapullok_2006 Internet 1 09-04-2007 22:57:42
pie de página... eli.vidal Impresión 4 08-11-2005 20:03:26
Añadir el número de página al pie de página Javi2 Servers 3 04-08-2005 18:15:36
Pagina web Rabata Varios 6 12-09-2004 15:22:30
Pagina N de M Franklim Impresión 0 14-04-2004 20:13:14


La franja horaria es GMT +2. Ahora son las 22:11:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi