[英]is using private shared objects/variables on class level harmful?
感謝您的關注和時間。 我需要您對基本建築問題的看法。
在類后面的頁面中,我使用私有和共享的對象和變量(列表或僅客戶端或simplay int id)臨時保存來自數據庫或類庫的數據。 該對象暫時用於捕獲數據,然后返回,傳遞給某些函數或綁定控件。
第一:這種方法有什么危害嗎? 我無法對其進行分析,但是當多個用戶一次發送請求時,使用這樣的共享變量可能會替換其中的數據?
第二:請也評論在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);
}
}
非常感謝您抽出寶貴的時間並給予我極大的關注。
如果您要為每次頁面刷新創建此類的新實例,那么這將不是問題,因為每個請求都將使用其自己的所有類實例運行。
如果要為每個頁面創建新實例,並且諸如GetClients()之類的功能很繁重,則可能要考慮不在每個頁面/會話中運行它,而是使用某種緩存機制。
另一方面,如果只有這個類系統范圍的一個實例,則需要同步,因此一個線程不會更改數據,而另一個線程則可以讀取數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.