ASP.NET Тестирование SQL-запроса в C # - PullRequest
0 голосов
/ 10 ноября 2018

Как часть моего модуля архитектуры приложений в Uni, я тестирую время, необходимое для извлечения данных с сервера MS SQL локально и удаленно. У меня есть пользовательский интерфейс с использованием Visual Studio 2017 ASP.NET с C #. Я создаю экземпляр и запускаю элемент управления секундомером, когда пользователь нажимает кнопку, и останавливаю секундомер, когда строка кода связывает результат с видом на сетку. У меня есть две кнопки, одна запускает код для локальной базы данных, созданной в Visual Studio, а другая кнопка запускает идентичный код (кроме строки подключения) для удаленного SQL Server (GoDaddy). Результаты, которые я получаю, очень быстрые 30 мс и 100 мс удаленно.

Мой вопрос на самом деле: когда я получаю точные сведения о том, что, по моему мнению, происходит, или это просто дает мне время для создания страницы после обратной передачи.

Есть ли способ, которым я могу имитировать одновременные подключения к каждой базе данных, чтобы проверить производительность в реальных условиях использования.

    protected void Btnlocal_Click(object sender, EventArgs e)
    {
        if (txthouseno.Text != "" && txtpostcode.Text != "")
        {
            Label4.Visible = true;
            Stopwatch localStopWatch = new Stopwatch();
            localStopWatch.Start();

            string connectionString;
            SqlConnection cnn;
            connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\xxxxxxxxx\xxxxxxx.mdf;Integrated Security=True;Connect Timeout=30";
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            lbllocal.Text = "Local Database Connected";
            SqlCommand command;
            SqlDataReader dataReader;

            String sql = "select * from Customer where postcode = @custpcode AND houseno = @custhouseno";
            command = new SqlCommand(sql, cnn);

            var custpostParam = new SqlParameter("custpcode", SqlDbType.VarChar);
            custpostParam.Value = txtpostcode.Text;

            var custhouseParam = new SqlParameter("custhouseno", SqlDbType.VarChar);
            custhouseParam.Value = txthouseno.Text;

            command.Parameters.Add(custpostParam);
            command.Parameters.Add(custhouseParam);
            dataReader = command.ExecuteReader();
            GridView1.DataSource = dataReader;
            GridView1.DataBind();
            localStopWatch.Stop();
            command.Dispose();
            cnn.Close();
            connectionString = "";

            lbllocal.Text = "Local PC Time Taken = " + localStopWatch.ElapsedMilliseconds.ToString() + " ms";

        }
    }

    protected void Btnremote_Click(object sender, EventArgs e)
    {          
        if (txthouseno.Text != "" && txtpostcode.Text != "")
        {
            Label5.Visible = true;
            Stopwatch remoteStopWatch = new Stopwatch();
            remoteStopWatch.Start();
            ViewState["pageLoadTime"] = DateTime.Now;
            string connectionString;
            SqlConnection cnn;
            connectionString = @"Data Source=xxx.xxx.xx.xxx;Integrated Security=False;User ID=xxxxxx; Password = xxxxxx; Connect Timeout=15;Encrypt=False;Packet Size=4096";
            cnn = new SqlConnection(connectionString);
            cnn.Open();
            SqlCommand command;
            SqlDataReader dataReader;

            String sql = "select * from dbo.Customer where postcode = @custpcode AND houseno = @custhouseno";
            command = new SqlCommand(sql, cnn);

            var custpostParam = new SqlParameter("custpcode", SqlDbType.VarChar);
            custpostParam.Value = txtpostcode.Text;

            var custhouseParam = new SqlParameter("custhouseno", SqlDbType.VarChar);
            custhouseParam.Value = txthouseno.Text;

            command.Parameters.Add(custpostParam);
            command.Parameters.Add(custhouseParam);
            dataReader = command.ExecuteReader();
            GridView2.DataSource = dataReader;
            GridView2.DataBind();
            remoteStopWatch.Stop();
            command.Dispose();
            cnn.Close();
            connectionString = "";

            lblremote.Text = "Remote Server Time Taken = " + remoteStopWatch.ElapsedMilliseconds.ToString() + " ms";

        }
    }    enter code here
...