Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何用C编写代理?_C#_Asp.net_Visual Studio_Visual Studio 2008_Proxy Classes - Fatal编程技术网

C# 如何用C编写代理?

C# 如何用C编写代理?,c#,asp.net,visual-studio,visual-studio-2008,proxy-classes,C#,Asp.net,Visual Studio,Visual Studio 2008,Proxy Classes,我编写了一个多用户的web应用程序。它们是选择数据或插入数据,一切都是如此。但是选择一些数据需要太多的时间,例如使用LINQ或数学计算。我认为: 我的用户1: select * from MyTable -----> save as caching via proxy server in machine 我的用户2: select * from MyTable2 -----> save as caching via proxy server in machine

我编写了一个多用户的web应用程序。它们是选择数据或插入数据,一切都是如此。但是选择一些数据需要太多的时间,例如使用LINQ或数学计算。我认为: 我的用户1:

select * from MyTable -----> save as caching via proxy server in machine
我的用户2:

select * from MyTable2 -----> save as caching via proxy server in machine
我的用户3:

insert into MyTable2 -----> Update caching(select * from MyTable2) via proxy server in machine
如果其他用户更新表,如何编写代理服务器以更快地选择并更新选择结果


你为什么想要一个代理

您想要实现的是使用ADO实体框架的好处之一

网络上到处都有教程,但你可以开始


ADO实体框架足够智能,可以缓存多次使用的对象,并在它们不同步时刷新它们,它们还具有一系列奇妙的属性,如后期绑定和并发处理

我想我明白你的意思了。如果要获得图形上显示的结果,一种方法是让服务器缓存任何计算机请求的所有数据。我认为这在内存方面的开销太大了,但您可以通过多种方式实现这一点。例如,创建一个代理类,该类处理所有数据库调用,然后缓存结果。无论何时完成下一次调用,处理程序类都会检查代理并返回是否存在代理;如果没有,那么它将进行调用并将结果添加到缓存中


顺便说一句,我认为现有的ORM已经考虑到了这一部分,不是吗?

我建议使用预先存在的缓存解决方案,而不是从Scratch编写新的缓存解决方案。我不知道这是否适用于您的情况,或者您只是使用了一个简化的示例,但是,在SELECT上使用WHERE子句并仅选择所需字段而不是*可能比手动缓存数据更能提高性能。请记住,当索引位于正确的位置时,数据库访问通常非常快,您只请求真正需要的数据,并且同一子网上的计算机之间的网络连接通常也很快。您是否进行了基准测试以找出性能瓶颈所在?因此,您希望在内存中保留最近/经常选择的行,并确保对表所做的任何更新都反映在内存中的行中,同时处理内存压力等问题?这听起来像是SQL Server内部已经在做的事情,并且在大多数情况下做得非常好;我想你不理解我。我也是实体框架方面的专业人士。谢谢你的建议。但是我不想重新生成数据,我将选择结果保存在另一台机器中。为什么您要处理多台机器、多个连接、多个许可证、多个所有内容,而不正确地执行操作?ORM+缓存将为您提供开箱即用的服务,无需重新发明轮子!好啊但我必须使用linq到sql缓存在linqtosql中是否可以?我不理解最后一句话:顺便说一句,我认为现有的ORM已经考虑到这一部分,没有?ORM=对象关系映射。简单地说,这是实体框架的通用名称,Linq To Sql,NHibernate。我想他们都已经有了这个内置的开箱即用。哦,顺便说一下:-