DocumentClient не следует использовать для каждого запроса, а вместо этого вы должны использовать его как единичный экземпляр в вашем приложении. Создание клиентского запроса добавит много времени на задержку.
Так что я бы объявил свойство Client как «статическое» и инициализировал его в конструкторе Service. Вы можете вызвать await Client.OpenAsync(
) в методе Connect, чтобы «прогреть» клиента, и в каждом из ваших открытых методов напрямую использовать экземпляр Client для вызова API DocumentDB.
Утилизируйте клиента в методе утилизации Сервиса.
Эти клиенты предназначены для повторного использования, поэтому рекомендуется иметь один статический экземпляр, который вы повторно используете для всех функций. Здесь вы можете найти советы по проблеме производительности:
https://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips#sdk-usage [116 ]
Надеюсь, это поможет!
Интересно, что на основе примера кода OP, никто не предложил использовать String.Join
или создать вывод с StringBuilder
Dim names As New List(Of String)
With ad.Tables(2)
For i As Integer = 0 To .Rows.Count - 1
' DataRow("columnName").ToString() returns value or empty string if value is DbNull
If .Rows(i)("name").ToString() <> "" Then
names.Add(.Rows(i)("name"))
End If
Next
End With
Dim temp As String = String.Join(", ", names)
testing &= "&Name=" & temp & vbCrLf
С LINQ и DataRow
дополнительный метод .Field(Of T)
, код будет выглядеть более простым
Dim names = ad.Tables(2).
AsEnumerable().
Select(row => row.Field<String>("name")).
Where(name => String.IsNullOrEmpty(name) = False)
Dim temp As String = String.Join(", ", names)
testing &= "&Name=" & temp & vbCrLf
, Если Вы пойдете далее Вы, банка (должна) использовать StringBuilder
для создания строки и использования Aggregate
метод для создания строки из набора
Вы можете избежать символа Trim / extra, если установите разделитель внутри цикла
Dim delimiter as string = ""
For i As Integer = 0 To .Rows.Count - 1
If .Rows(i)("name") & "" <> "" Then
temp &= delimiter & .Rows(i)("name")
delimiter = ","
End If
Next
temp = temp.Trim().Substring(0, temp.Length - 1)
или
temp = temp.Trim().Remove(temp.Length - 1)