Я видел код, где у них есть слой доступа к данным, например:
public class CustomerDA{
private static readonly object _sync = new object();
private static readonly CustomerDA _mutex = new CustomerDA();
private CustomerDA(){
}
public CustomerDA GetInstance(){
lock(_sync){
return _mutex;
}
}
public DataSet GetCustomers(){
//database SELECT
//return a DataSet
}
public int UpdateCustomer(some parameters){
//update some user
}
}
public class CustomerBO{
public DataSet GetCustomers(){
//some bussiness logic
return CustomerDA.GetInstance().GetCustomers();
}
}
Я использовал его, но начинаю думать ... "а что, если бы пришлось создавать приложение, похожее на Facebook, где есть сотни тысяч одновременно работающих пользователей? Я бы запретил каждому пользователю выполнять свои действия до конца предыдущего пользователя его материал базы данных? и для метода Update, полезно ли блокировать нити в приложении, когда движки баз данных уже управляют параллелизмом на уровне сервера баз данных? "
Затем я начал думать о переносе блокировки на методы GetCustomers и UpdateCustomer, но снова подумал: «Это вообще полезно?»
Редактировать 3 января:
все в порядке, я пропустил ключевое слово "static" в методе "GetInstance".
Еще одна вещь: я думал, что ни один поток не сможет получить доступ к переменной _mutex, если в том же классе доступа к данным работает другой поток. Я имею в виду, что я думал, что поскольку переменная _mutex возвращается из оператора блокировки, ни один поток не сможет получить доступ к _mutex до ";" было достигнуто в следующем предложении:
return CustomerDA.GetInstance().GetCustomer();
После некоторого отслеживания я понимаю, что сделал неверное предположение. Не могли бы вы подтвердить, что я сделал неправильное предположение?
Итак ... Могу ли я с уверенностью сказать, что моему уровню доступа к данным не требуется какой-либо оператор блокировки (даже для INSERT, UPDATE, DELETE) и что не имеет значения, являются ли методы в моем DataAccess статическими или методы экземпляра?
Еще раз спасибо ... ваши комментарии так полезны для меня