H.AL Ответов: 0

Ведение журнала веб-сервисов с блокировкой и многопоточностью


Я вручную создал свой метод ведения журнала для регистрации некоторых входных данных веб-методов в моем веб-сервисе soap, созданном на visual 2010 vb.net. Поскольку к моему веб-сервису будут обращаться несколько пользователей, я подумал о методе блокировки, который блокирует каждый раз файл журнала. Но я столкнулся с большой проблемой: когда несколько клиентов отправляют одновременно, блокировка останавливает отправку на некоторое время для некоторых из них, пока файл не будет разблокирован ... Вот почему я создал свой метод ведения журнала в потоке, который работает в фоновом режиме каждого зарегистрированного веб-метода, чтобы клиенты не ожидали в очереди, пока файл не будет заблокирован и снова разблокирован друг другом. Теперь мой вопрос: если веб-метод завершил работу, но поток все еще ожидает разблокировки файла, работает ли он? Другими словами: может ли мой поток сохранять входные данные для записи в мой файл журнала, даже если его webMethod завершился и был вызван другой webmethod? Вот пример моего кода:

<webmethod()> _
    Public Function Test(ByVal strLang As String) As String()

        Dim obAr(0) As Object
        obAr.SetValue(strLang, 0)

        '' MyLogger is a class where I added SyncLock to my write method
        Dim MyLogger As New MyLogger(obAr)

        '' here I implemented a thread for my write method to work in background        
        Dim t As New Thread(AddressOf MyLogger.Write)
        t.Start()

        ''Here I am connecting to my database to work with data ...
        cnnString =     ConfigurationManager.ConnectionStrings("connStringMobileApp").ConnectionString
        Dim cnnConnection As New SqlConnection(cnnString)

....
End Function


Что я уже пробовал:

1-расширение Soap: не работает, когда два клиента пытаются отправить сообщение одновременно

0 Ответов