У меня есть приложение ASP.NET, которое использует «служебную ссылку» на сторонний платежный процессор. пример кода, который я скачал из платежной системы включает в себя следующее:Безопасный доступ к каналу WCF
public class SoapAPIUtilities{
private static CustomerProfileWS.Service service = null;
public static CustomerProfileWS.Service Service{
get{
if(service == null){
service = new CustomerProfileWS.Service();
}
return service;
}
}
}
я произвожу CustomerProfileWS.Service
automatically using Visual Web Developer: его автоматически генерируемый реализация является подкласс подкласса ServiceModel.ClientBase, который MSDN документы, как «членов экземпляров не гарантируют безопасность потока ».
Чтобы использовать эту услугу на страницах ASP.NET, мне кажется, мне нужно сделать доступ к службе потокобезопасной, что выше не является?
- Ответы на this question сказать, что это поточно-
- Но the end of this MSDN page говорит, что это не поточно-?
Если это не поточно-то, что это лучший способ, чтобы сделать его поточно-:
- Wrap класс сбруя, который реализует блокировку вокруг статического одноточечного (e.g. as shown here)?
- Не используйте статический синглтон; вместо этого создайте несколько/временных
CustomerProfileWS.Service
экземпляров по мере необходимости, как локальные переменные в методах страниц ASP.NET, которые в них нуждаются?
Пожалуйста скажите мне ваши рассуждения? Мое беспокойство об этом методе заключается в том, что: а) я не знаю, нужно ли это b) Я не могу проверить, правильно ли обрабатывает удаленный/серверный конец параллельных запросов от одного и того же клиента/продавца/сайта. C) Потому что это не так. он в своей «образцовой программе» может не поддерживаться. – ChrisW
Повторно создавая объект CustomerProfileWS.Service для каждого обрабатываемого платежа, вы полностью исключаете многопоточный сценарий. В этом отношении я бы очень отказался от запуска нескольких потоков в приложении ASP.NET для начала. – Jason
Я не разворачиваю нити. Но если есть более одного одновременного пользователя веб-сайта, то не существует ли одновременно более одного экземпляра страницы ASPX (каждый со своим потоком)? – ChrisW