2010-05-28 3 views
0

Спасибо за внимание и время. Мне нужно ваше мнение по основной архитектурной проблеме.использует частные общие объекты/переменные на уровне класса вредно?

В классах за пределами классов Я использую частный и совместно используемый объект и переменные (список или просто клиентский или simplay int id) для временного хранения данных, поступающих из базы данных или библиотеки классов. Этот объект временно используется для сбора данных, а затем для возврата, перехода к некоторой функции или привязки элемента управления.

1st: Может ли это нанести вред любым способом? Я не мог проанализировать его, но мысль заключалась в использовании таких общих переменных, которые могли бы заменить данные в нем, когда несколько пользователей могут отправлять запрос одновременно.

2nd: Прокомментируйте также использование таких переменных в BLL (для хранения данных, поступающих из DAL/database). В этом примере каждый раз, когда будет создан новый объект класса BLL.

Вот пример кода:

public class ClientManager 
{ 
    Client objclient = new Client(); //Used in 1st and 2nd method 
    List<Client> clientlist = new List<Client>();// used in 3rd and 4th method 
    ClientRepository objclientRep = new ClientRepository(); 

    public List<Client> GetClients() 
    { 
     return clientlist = objclientRep.GetClients(); 
    } 
    public List<Client> SearchClients(string Keyword) 
    { 
     return clientlist = objclientRep.SearchClients(Keyword); 
    } 

    public Client GetaClient(int ClientId) 
    { 
     return objclient = objclientRep.GetaClient(ClientId); 
    } 

    public Client GetClientDetailForConfirmOrder(int UserId) 
    { 
     return objclientRep.GetClientDetailForConfirmOrder(UserId); 
    } 
} 

Я очень благодарен вам за жалея времени и платить любезное внимание.

ответ

3

Если вы создаете новый экземпляр этого класса для обновления каждой страницы, это не будет проблемой, так как каждый запрос будет запускаться со своими собственными экземплярами всех классов.

+0

спасибо ck, Как я описал, есть две разные ситуации: 1. на странице за классом. 2. в библиотеке классов. В классе за классом я создаю новый экземпляр этого класса не в каком-либо событии (выше метода загрузки страницы). Точно так же в классе в BLL. – haansi

1

Если вы создаете новый экземпляр для каждой страницы и используете функции GetClients(), вы можете подумать о том, чтобы не запускать его для каждой страницы/сеанса, но вместо этого используйте некоторый механизм кэширования.

С другой стороны - если есть только один экземпляр этого класса, вам нужна синхронизация, поэтому один поток не будет изменять данные, а другой - читать.

+0

hi Itay, Я не понимаю, как создать новый экземпляр страницы? В классе Я просто создаю объект перед загрузкой страницы. (это не в каком-то случае) Пожалуйста, направляйте этот путь каждый раз, когда объект воссоздается? и для каждого запроса страницы будет создан отдельный объект? thanks – haansi

+0

Где вы создаете новый экземпляр ClientManager? –

 Смежные вопросы

  • Нет связанных вопросов^_^