假设我创建了一个对象
public UserDetails GetUserDetail(){
UserDetails user=new UserDetails();
user.Name=someFunctionThatReturnsName();
user.BankAccountNumber=someInternalFunctionThatReturnsAccountNumberFromDB();
return user;
}
当我在代码隐藏文件中创建此对象时,这些对象到底存储在哪里? 它们存储在客户端吗?如果是,我可以修改这些值吗? 假如Facebook在对象中存储登录用户的详细信息,我可以使用控制台或客户端的某些东西来修改它吗?
当100个人同时访问Web应用程序时,如何处理? 如何创建和适当返回对象?
所以每当我创建/访问对象时,我都会点击服务器?
答案 0 :(得分:3)
有很多可能性。在您提供的示例中,对象存储在服务器端内存中。对于每个单个用户,在请求期间将存储一个对象。
如果您声明static object
,它将存储在服务器端内存中但存储在appDomain上,我的意思是,将与网站上的所有用户共享一个实例。
在asp.net中,还有可能在Session
,ViewState
以及来自asp.net plataform的其他对象中存储对象。我建议你阅读更多关于它们的内容,并在需要时使用它。
根据上下文,您可以存储自定义对象的通用字典,并在单个引用上使用它。
只是补充一点,我认为重要的是你看到了一些内容,values types and reference types如何存储,看看它们是如何工作的以及你应该如何关心你的对象。基本上是:
答案 1 :(得分:2)
它们存储在服务器的内存中。简单来说,服务器上的工作线程分配内存。当100个人访问该站点时,在内存中分配了100个对象。一旦这些物体超出范围,它们就会死亡(或至少它们被垃圾收集)。