none
Problemas con visual web part RRS feed

  • Pregunta

  • Buenos Días,

    He creado una visual web part que me genera una consulta cada 30segundos y me trae el estado de un contador de la base de datos.

    Para ello use un update panel y un timer que le agregue como trigger.

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:Timer ID="Timer1" runat="server" Interval="30000">
                            </asp:Timer>
                            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
                        </Triggers>
                    </asp:UpdatePanel>


    El problema es que esta función tan sencilla me esta consumiendo mucha cpu del servidor de aplicaciones y no se si es por el uso de los elementos ajax dentro de la visual web part.

    El codigo que se ejecuta en cada timer es:

     try
                {
                    SqlCommand command = new SqlCommand();
                    SqlConnection sqlConn = new SqlConnection(@"mi cadena de conexion'");
                    sqlConn.Open();
                    int count = 0;
                    int countaux = 0;
                    string consulta = "mi consulta";
                    command.CommandText = consulta;
                    command.Connection = sqlConn;
                    System.Data.SqlClient.SqlDataReader myReader = command.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
                    while (myReader.Read())
                    {
                        count = int.Parse(myReader[0].ToString());
                        countaux = int.Parse(myReader[1].ToString());
                    }
                    
                    sqlConn.Close();
                    sqlConn.Dispose();
                    Timer1.Dispose();
                  
                    int aux = count + countaux;
                    return aux;
                }
                catch (Exception ex)
                {
                    return -1;
                }

    Si alguien ha hecho un contador asincrono y sabe como puedo mejorar el desarrollo se lo agradezco.

    Coordial saludo,


    Alvaro Contreras

    lunes, 22 de abril de 2013 14:46

Respuestas

  • Hola Alvaro,

    Yo mas que ver como mejorar el desarrollo, lo que miraría es ver si lo puedo hacer utilizando herramientas que trabajen en el cliente de tal forma que no cargues tanto el servidor que por lo que deduzco es el principal problema. Para ello lo que intentaría es crear algo haciendo uso de JavaScript, el problema que le veo es que tendrías la problemática de que no puedes poner la autentificación de la cadena SQL consumiéndola directamente en el cliente (ya que te la pueden obtener muy fácilmente). Para solventar este inconveniente me montaría un servicio WCF que me devolviera esta consulta.

    La otra opción y que supongo que no valdrá, es evitar estar permanentemente mirando y que el valor se actualice bajo demanda.

    Saludos,

    Adrián



    MCPD SharePoint 2010 Mi blog: http://blogs.encamina.com/desarrollandosobresharepoint Twitter: @AdrianDiaz81

    lunes, 22 de abril de 2013 15:21

Todas las respuestas

  • Hola Alvaro,

    Yo mas que ver como mejorar el desarrollo, lo que miraría es ver si lo puedo hacer utilizando herramientas que trabajen en el cliente de tal forma que no cargues tanto el servidor que por lo que deduzco es el principal problema. Para ello lo que intentaría es crear algo haciendo uso de JavaScript, el problema que le veo es que tendrías la problemática de que no puedes poner la autentificación de la cadena SQL consumiéndola directamente en el cliente (ya que te la pueden obtener muy fácilmente). Para solventar este inconveniente me montaría un servicio WCF que me devolviera esta consulta.

    La otra opción y que supongo que no valdrá, es evitar estar permanentemente mirando y que el valor se actualice bajo demanda.

    Saludos,

    Adrián



    MCPD SharePoint 2010 Mi blog: http://blogs.encamina.com/desarrollandosobresharepoint Twitter: @AdrianDiaz81

    lunes, 22 de abril de 2013 15:21
  • Gracias por el consejo he pasado el desarrolo al lado del cliente con jquery.

    Solo me queda un detalle como la url del servicio no es https el Internet explorer le trae un mensaje se seguridad al cliente

    Sabes si puedo reistrar en algun lado de Sp la url para que no muestre este mensaje?


    Alvaro Contreras

    lunes, 22 de abril de 2013 18:45
  • Hola Alvaro.

    Si mal no recuerdo, no es posible evitar ese mensaje salvo cambiando la configuración del propio IE porque es una cuestión de seguridad del navegador.


    "En los momentos de crisis, sólo la imaginación es más importante que el conocimiento"
    MCTS | SharePoint 2010, Application Development
    MCTS | SharePoint 2010, Configuring
    MS | Programming in HTML5 with JavaScript and CSS3 (MS)
    Twitter | @saintwukong

    viernes, 26 de abril de 2013 13:25
    Moderador