Вредно ли использование частных общих объектов / переменных на уровне класса? - PullRequest
0 голосов
/ 28 мая 2010

Спасибо за ваше внимание и время. Мне нужно ваше мнение по основному архитектурному вопросу, пожалуйста.

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

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

2-й: Пожалуйста, прокомментируйте также использование таких переменных в BLL (для хранения данных, поступающих из DAL / базы данных). В этом примере каждый раз будет создаваться новый объект класса 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);
    }
}

Я очень благодарен вам за то, что вы уделили мне время и уделили внимание.

Ответы [ 2 ]

3 голосов
/ 28 мая 2010

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

1 голос
/ 28 мая 2010

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

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

...