Как поставить запросы в очередь и выполнить на стороне сервера в веб-интерфейсе asp.net? - PullRequest
0 голосов
/ 11 сентября 2018

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

BrowserClient1_Calling_Method1()
{
    //This should be an XHR call and it waits for the result. 
}

BrowserClient2_Calling_Method2()
{
    //This should be an XHR call and it waits for the result. 
}

И на стороне сервера у меня есть два метода, которые нужно вызывать один за другим.

//When ever this method is called, put it in some sort of queue so that 
//Method1 and Method2 gets executed one by one.  
Server_Method1()
{
    //Access the SHARED data
}


//When ever this method is called, put it in some sort of queue so that 
//Method1 and Method2 gets executed one by one.
Server_Method2()
{
    //Access the SHARED data
}

Итак, мой вопрос: как мне использовать некоторое программное обеспечение ConcurrentQueue и выполнять методы сервера один за другим и make client unaware of such the queue. С точки зрения клиента это должно быть как у любого другого XHRзапрос .

Я пытался использовать BlockingCollection в c #, но не уверен, какой шаблон следует использовать.

Обратите внимание, что я мог использовать «блокировку» внутри методов Сервера, но я хотел обойтись без использования locks.

1 Ответ

0 голосов
/ 11 сентября 2018

когда вы используете общие переменные, самый безопасный и лучший способ сделать это - использовать шаблоны блокировок (есть несколько вариантов, чтобы справиться с этим)

для второй части вашего вопроса лучший способ - использовать асинхронный метод, чтобы вашклиент не знает о вашей очереди, и после выполнения его запроса вы можете отправить ему сигнал, чтобы показать соответствующий ответ (используйте signal-r)

, если вам нужно больше подробностей, пожалуйста, скажите мне описать каждый раздел

...