- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
经过与 ASP.NET 中的页面生命周期及其性能的长期斗争之后,我们已经开始重构我们的 Web 应用程序以在客户端实现 Web 服务(普通 .asmx .NET Web 服务)和 jQuery . 注意:这不会以任何方式实现 MVC 或 ASP.NET,这些只是 Web 服务。
在应用程序的两个分配中,我们在单个页面中动态生成所有内容。在 ASP.NET 分配中,这意味着(由于页面生命周期)整个页面需要拆除并重建(几乎)每个 AJAX 调用或对 Web 表单的更改。对于旨在为许多并发用户提供服务的应用程序,这提出了巨大的可扩展性问题。在 Web 服务/jQuery 分配中,我们可以有选择地只关注那些需要向服务器发送或接收数据的 DOM 元素,这意味着更少的请求和更快的用户体验。
应用程序的第一次迭代显示性能提高了一个数量级;然而,随着我们开始构建越来越多的 Web 服务,应用程序的性能现在与 ASP.NET 分配的性能相当。
经过多次谷歌搜索/灵魂搜索和负载测试后,很明显 HTTP session 是罪魁祸首。本质上,每次读取(有时通过简单地将 Session 包含在 Web 服务方法范围中)都是一个阻塞调用,它会引入 500 毫秒的延迟。一旦您知道要查看的位置,MSDN 文献中对此进行了详细记录。在实现时,Session(如果由同一用户使用多个 Web 服务)将异步请求转换为具有 500 毫秒缓冲区的同步请求。目前,我们通过将所有 AJAX 调用链接为彼此的“成功”事件来缓解这种情况,使它们成为来自客户端的同步请求。这消除了请求读取锁定的 Session 对象所导致的 500 毫秒延迟。
让客户端应用程序以“同步”方式运行已经解决了许多性能问题;但是,这只是短期的权宜之计。
Session 有哪些可行的(可扩展的!)替代方案,请再次记住我们不是在 ASP.NET 或 MVC 或 WCF 等上?我们最大的障碍是我们的元数据集合的持久性,它是为每个登录用户初始化的。这是应用程序中成本最高的单个操作(10 倍或更多),我们只想执行一次。 Session 提供了一种简单的方法,让您一次又一次地为老歌流汗,再也不会回头;但这种方法看起来不太可行。
一种方法可能是消除这个单一的元数据集合神类,并将这个一神论类进化成一个多神论的半神集合。可以以更低的成本更频繁地实例化半神。可行,但需要大量重构、大量开发和 QA 时间。另一个候选者只是将所有状态信息存储在数据库中,但这有其自身的成本——延迟是其中最重要的。
对于这个问题是否有任何其他解决方案可能涉及较低级别的实现工作?
最佳答案
解决您的问题真的很容易。
在sql server中创建一个表:
创建表 session ( SessionId int(或 guid) ... ...)
创建单独的表,这些表具有返回 session 表的外键(使用删除级联)并存储 session 特定信息
在应用程序端,将 SessionId 存储在 cookie 或查询字符串中。然后,您可以按需查找所有需要的 session 信息。这将比默认的 session 状态提供程序工作得更快,因为您只在需要信息时才获取信息!此外,您不必再背着默认 session 对象。
关于c# - 普通 .NET Web 服务应用程序中 HTTP session 状态的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5657561/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 5 年前。
DBMS 供应商使用 SQL 方言特性来区分他们的产品,同时声称支持 SQL 标准。 'Nuff 说。 您编写的任何 SQL 示例是否无法转换为 SQL:2008 标准 SQL? 具体来说,我说的是
多年来,我一直在考虑这个问题,但从未成功实现过。我说的是一个快速、高效的 C 函数,它在输入中接受一个整数值(例如 16 位),并在输出中给出完全不同的相同位大小的数字,但“考虑到”所有数字已经给出了
当标准 iPhone UI 控件变得过于平淡,并且您希望简单的记分应用程序通过颜色、动画、非标准 GUI 字体和背景壁纸等流行时。 ,为这样的事情集成游戏引擎有意义吗? 我对 Unity3D 和 To
这是我的第一个问题,所以如果我没有正确地标记标签,我很抱歉。我尝试过...这是我的问题:我希望有人能告诉我如何为普通的表格 View 创建 2 行节标题。我遇到的问题是:1)我找不到可以模仿默认 1
所以我一直在开发一个仅使用普通 JavaScript 的“非常简单”的计算器。但我不知道为什么它现在起作用了。 这是我的 JavaScript 和 HTML 代码: (function() { "
我正在尝试编写一个函数来满足以下要求: 给定一个对象和一个键,“getElementsThatEqual10AtProperty”返回一个数组,其中包含位于给定键处等于 10 的数组的所有元素。 注释
[最终编辑:我觉得有必要做出回应,因为我从这篇文章中学到了很多东西(主要是通过你们,我花了更多的时间来理解CSS..但最后,我真的不知道如何为了使这项工作有效..除了真正破坏html的基本结构..我不
我希望能够将一个函数附加到一个元素上,该函数只有在该元素上单击指定时间后才会运行。 有几个( 1 、 2 、 3 )与在 javascript 中处理鼠标保持相关的问题;但这些问题要么使用 jQuer
我想将泛型函数保存为变量: (defvar *gf* (make-instance 'standard-generic-function) 但是在添加方法时,我必须自己定义call-next-meth
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我有一个普通的 tableView——一个部分——当我滚动时,行出现在标题后面。像这样: 有没有简单的方法来防止这种情况?我认为它与 contentInset 有关,但这也会移动标题,这不是我想要的。
你好,我有一个ajax表单,它返回一个控制“发送”动画的脚本。然而,当淡入开始时,它会停止在 0.1 不透明度。我不确定脚本中有什么问题。任何帮助将不胜感激。 quote_form = documen
这是演示我的问题的代码笔:http://codepen.io/PiotrBerebecki/pen/yaWQwZ 目标是当用户点击时有滚动动画 顶部导航链接,以及 Back to Top 按钮在右下角
在我重新发明轮子之前,纯Java中有类似主题的并发队列吗?我有以下要求: 多个读者/消费者 多名作家/制片人 每条消息都必须由每个(活跃的)消费者消费 在每个消费者阅读一条消息后,它应该变成垃圾(即不
这个问题与 Do MySQL tables need an ID? 有一个无意义的auto_incremental ID作为一个表的PRIMARY KEY,那么我创建其他KEY时,我是否应该在KEY中
我有一个普通 UITableView 并且我想隐藏分隔符。为了隐藏它,我尝试使用以下属性: 我也在 viewDidLoad 中设置了它。 self.tableView.separatorStyle =
var vettore = document.getElementById(id_form).elements; for (var i = 0; i '+vettore_nomi_file[i]; 最
我已经构建了一个非常简单的轮播,但有一个问题。在我的轮播中,我有三张幻灯片,一个上一个按钮和一个下一个按钮。我想要的是当我单击下一个按钮并在最后一张幻灯片上转到第一张幻灯片时。此外,当我单击上一个按钮
我是 javascript 的新手,所以我需要一些帮助。 我正在尝试制作一个简单的插件(当然只是为了学习,以便更好地理解事物),但我遇到了一些麻烦,我将不胜感激。 我的插件是基本的,我正在尝试为 sc
我是一名优秀的程序员,十分优秀!