Ведение журнала веб-сервисов с блокировкой и многопоточностью
Я вручную создал свой метод ведения журнала для регистрации некоторых входных данных веб-методов в моем веб-сервисе 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: не работает, когда два клиента пытаются отправить сообщение одновременно