Signal-R 如何适应 IIS 激活模型?

2024-03-31

我正在学习 Signal-R,这是我一直以来的想法。

  • Signalr 如何融入 IIS/ASP.NET 生命周期?
  • 集线器的寿命有多长(我看到它们有重新连接语义)?
  • IIS 是否会阻止具有持久连接的 AppDomain 关闭?

据我了解,IIS 旨在处理请求-响应场景。请求到达 IIS,IIS 找到 AppDomain,激活它,然后将请求传递给它。闲置一段时间后,关闭 AppDomain。如果请求时间过长,则会抛出超时异常。

现在让我们想象一下我有另一个通过 TCP 套接字广播信息的应用程序。我希望我的 javascript 客户端能够实时获取该信息,因此我创建了一个 Signal-R Web 应用程序。我可以在应用程序启动时创建 TCP 客户端,但是如何保证 IIS 在不活动一段时间后不会关闭整个应用程序?

我可以在窗口服务中自行托管 Signal-R 应用程序,但随后我必须使用不同的端口、启用跨域等......部署有很多问题。但是,我担心为此使用 ASP.NET MVC 应用程序,因为它在我看来就像在摩托车上安装驱动轮。

Cheers.


IIS/ASP.NET 生命周期中的 SignalR

  • SignalR 使用 Owin:http://owin.org/ http://owin.org/
  • 这里有一篇关于欧文的好文章:http://msdn.microsoft.com/en-us/magazine/dn451439.aspx http://msdn.microsoft.com/en-us/magazine/dn451439.aspx

集线器对象生命周期

来自 SignalR 文档:http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#transience http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#transience:

您无需在服务器上实例化 Hub 类或从您自己的代码调用其方法;所有这一切都是由 SignalR Hubs 管道为您完成的。 SignalR 每次需要处理 Hub 操作时(例如客户端连接、断开连接或对服务器进行方法调用时)都会创建 Hub 类的新实例。

由于 Hub 类的实例是瞬态的,因此您无法使用它们来维护从一个方法调用到下一个方法调用的状态。每次服务器收到来自客户端的方法调用时,Hub 类的新实例都会处理该消息。要通过多个连接和方法调用维护状态,请使用其他一些方法,例如数据库、Hub 类上的静态变量或不是从 Hub 派生的其他类。如果你使用 Hub 类上的静态变量等方法将数据持久化在内存中,那么当应用程序域回收时,数据将会丢失。

您长时间运行的 TCP 客户端

这对于 SignalR 来说不是问题。您的 TCP 客户端可以被 IIS 关闭:http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/ http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

我宁愿让 TCP 客户端在 Windows 服务中运行。 TCP 客户端接收 TCP 广播消息并使用 SignalR .NET 客户端将消息转发到集线器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Signal-R 如何适应 IIS 激活模型? 的相关文章

  • ASP Identity CoreGeneratePasswordResetTokenAsync 已过期

    我已经在 NET Core 2 1 中设置了一个 Identity Server 4 项目 一切正常 但是当我使用用户管理器生成重置密码令牌时 令牌在 24 小时后过期 我可以将其更改为 48 小时吗 我发送重置令牌的代码如下所示 var
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 我可以在 IIS 中禁用大量更改通知吗

    我偶尔会收到以下导致应用程序池被回收的事件 shutDownMessage CONFIG change HostingEnvironment initiated shutdown Overwhelming Change Notificati
  • WCF服务健康状况监控

    我刚刚实现了 WCF 服务 目前正在研究服务监控选项 我们的服务器团队目前仅托管 java 服务 希望我们的实例始终运行 因此它可以在该实例的生命周期内收集数据 他们表示将使用我们的 webmon 操作之一来获取统计信息 但我们正在使用每次
  • 使用 ASP.NET 控件而不进行数据绑定

    看来我使用 ASP NET 数据绑定太久了 以至于忘记了一些基础知识 我正在 ASPX 页面中动态创建一个表 无需数据绑定 foreach XXX x in TTTT gt tr td td tr
  • 我的 .NET 库列表中缺少 System.Windows.Data

    您好 我想使用 System Windows Data IValueConverter 但是当我尝试在 VS2010 中添加对 System Windows Data 的引用时 我只看到 System Windows Forms 和 Sys
  • C# asp.net中WebForm中Winform的Textbox.KeyDown的交替事件是什么?

    在 WinForms 应用程序中 我可以有一个textbox1 keydown事件 但我想在 WebForm ASP NET 中实现同样的事情 那么我该怎么做呢 我需要从数据库中检索有关此事件的数据 您可以使用 onkeydown 事件 然
  • 如何捕获一个 int

    我正在使用 IL 抛出一个 Int32 并捕获它 这只是出于好奇 我并没有试图实现任何目标 所以请不要告诉我抛出异常而不是 int method private hidebysig static void Main string args
  • 使用远程管理凭据将文件复制到远程计算机

    我正在使用 C 我需要能够将一组文件复制到大约 500 台不同的计算机上 我已成功地使用 LogonUser 方法来模拟具有复制文件所需权限的域帐户 文件的目标路径类似于 远程计算机 C SomeFolder 我的问题是 有没有办法做到这一
  • 如何在VS2017中从.net项目引用netstandard项目?

    我有一个 netstandard2 0 项目 用于与第三方 Web 服务交互 我需要在同一解决方案中引用旧的 net 4 6 2 项目中的该项目 但是当我这样做时 我会收到一堆关于需要引用我定义的类型的错误 例如 我将调用 netstand
  • 限制 LDAP 查询中返回的属性

    如何限制通过 System DirectoryServices 在 LDAP 查询中返回的属性 我一直在使用 DirectorySearcher 并将我想要的属性添加到 DirectorySearcher PropertiesToLoad
  • 如何判断应用程序是否是Web应用程序

    在 Windows 服务和 Web 应用程序中运行的核心程序集中 我需要存储每个用户会话的信息 该服务将具有单个用户会话 并且 Web 应用程序使用 HttpContext Current 我想配置在核心程序集中使用哪种方法 约定优于配置
  • ASP.NET 会话状态和多个工作进程

    我需要了解一些有关 ASP NET 会话状态的信息 因为它适用于 IIS 7 和 ASP net 3 5 如果应用程序配置为使用进程内会话状态 那么如果有多个工作进程 该应用程序是否可以正常工作 换句话说 工作进程是否共享会话状态 IIS
  • 带有整数字符串的枚举

    我有一个公众号enum像这样 public enum occupancyTimeline TwelveMonths FourteenMonths SixteenMonths EighteenMonths 我将用它来DropDown菜单如下
  • Html Helper“操作”未定义,Asp.NET Core 2.2

    我是 ASP NET Core MVC 的新手 我会在这个问题前说我已经阅读了其他类似的问题 但它们与我遇到的问题并不完全相同 我正在尝试实现动态左侧导航 其中每个按钮都是从我的数据库加载的 当我打电话时 Html Action NavMe
  • 合并两个(或更多)PDF

    背景 我需要为我的销售人员提供每周报告包 该包包含几个 5 10 个水晶报告 Problem 我想允许用户运行所有报告并且只运行单个报告 我想我可以通过创建报告然后执行以下操作来做到这一点 List
  • 如何阻止gridview列自动编码html实体

    我对 ASP NET 相当陌生 在使用 gridview 时遇到了问题 我添加了一些包含 符号的条目 例如 PR Murphy Associates 在将数据插入数据库之前 我没有对数据进行任何编码 当网格视图更改为编辑模式时 我的文本如下
  • MS Teams 应用程序:访问此应用程序时出现问题

    The users on MS Teams desktop reported multiple issues with our MS Teams app They see the following error on MS Teams De
  • .Net Web API 未找到与请求 URI 匹配的 HTTP 资源

    我正在开发 Net Web API 它在调试和本地主机 IIS 上都运行良好 但是当我将其发布到服务器时 它开始给出以下错误 Message 未找到与请求 URI 匹配的 HTTP 资源 在服务器上 我们在该 API 的默认站点下有应用程序
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin

随机推荐

  • any/interface{} 作为约束与参数类型之间的区别?

    由于泛型最近在 Go 1 18 中发布 我已经开始学习它们 我一般都明白这个概念 因为我过去有一些 Java 经验 但我没有得到一些实施细节 例如 什么时候更适合使用any代替interface 这是一个例子 func printInter
  • Symfony 3.0.1 CSRF 令牌存在但无效

    我在安装新的 Symfony 3 0 1 时遇到了这个奇怪的问题 我生成了一个新的 CRUD 控制器 其中包含一个包含 url 和标题的 Form PostType 没有什么花哨 表单按预期呈现 它包含我的 url 字段和标题字段 在表单内
  • Delphi - 如何从 Delphi 创建的其他应用程序的控件中获取提示

    我有一个项目需要从 delphi 创建的另一个应用程序的控件 例如 TButton 中获取提示 我使用Hook WH CBT 使用 exe和 dll使其成为全局的 当鼠标指向控件并提示显示和隐藏时 我得到提示的HCBT CREATEWND和
  • 正确使用Java“assert”关键字

    我一直不明白什么是assert用于 尽管我已经阅读了很多示例 但它们并没有真正让我知道我应该使用它做什么或为什么 因此 我不会问一个例子 而是提供一个例子 让我知道这是否是正确的用法assert The idea is that the m
  • 如何在 ASP.NET MVC 中使用部分视图?

    我正在构建一个 ASP NET MVC 应用程序 并希望使用部分视图来显示我的产品类别 它将是一个网上商店 在每个页面上的菜单栏下方 我想显示另一个包含所有产品类别的栏 我想为此使用部分视图 目前在 Views Categories我创建了
  • 用字母递增字符串?

    我需要从 增加一个字符串aaa to zzz并在控制台中写下每个增量 增量是一个词吗 事情会是这样的 aaa aab aac aaz aba abb abc abz aca acb 等等 到目前为止 我已经通过这样做增加了一个字母 Stri
  • 在 Websphere Application Server 上运行基于 Filenet 的 Web 应用程序时出现凭证异常

    我开发了一个 REST 服务 可以从内容引擎存储中检索数据 为简单起见 我创建了具有只读权限的用户帐户 并将其用于 CE 授权 使用以下代码 UserContext context UserContext get Connection co
  • 如何将协程直接分派到 JVM 上的主线程?

    我正在为 jvm 设置一个基于 kotlin 协程的网络框架 Client 和 Server 类实现 CoroutineScope 并且 coroutinecontext 的重写是 Dispatchers IO 因为我非常确定这是用于这种情
  • C 中的递归深度是否有任何硬连线限制

    正在讨论的程序尝试计算sum of first n natural numbers using recursion 我知道这可以使用一个简单的公式来完成n n 1 2但这里的想法是使用recursion 程序如下 include
  • C/C++ 创建一个具有负值的枚举,无需对其进行编号

    例如 在 C C 中 我会有以下代码 typedef enum fruits apple banana lemon orange fruit t 这相当于 typedef enum fruits apple 0 banana 1 lemon
  • 如何跨应用程序整合 ASP.NET 母版页?

    第一次在这些板上提出问题 希望我能得到一些帮助 这里是 我正在努力在我的客户处启动 NET 实践 目前 我们有 5 个小型 NET 应用程序 其中一些已投入生产 它们大多是带有一些数据输入 业务逻辑功能的小型报告 这些应用程序中的每一个当前
  • TypeScript 在类型构造函数中推断回调返回类型

    我想为接收类型的函数编写一个类型构造函数S和一个函数S到另一种类型 然后将该函数应用于S并返回结果 This works but it s tied to the implementation function dig
  • 如何将 REST 请求转发到另一个资源?

    在我当前的架构中 我有一个位于后面的 JAX RS 资源 categories categories catId 是这样实现的 Path categories Produces application json public class C
  • jquery Mobile Tap 和冒泡/传播

    在 android 2 x 浏览器中查看此示例 它是在我的应用程序中复制场景的示例 http johnchako net samples tap html http johnchacko net samples tap html 它是关于监
  • Ionic 3:安装 cordova-plugin-camera 和 Native Web-intent 后 Android 添加平台失败

    首先 感谢您抽出时间来帮助我 Summary 尝试将 cordova plugin camera 添加到我的 ionic 3 项目中 经过多次失败并最终成功后 现在我的应用程序不再在我的 Android 上构建 开始编辑 经过多次测试 当我
  • Polymer 中动态生成的 HTML 的数据绑定?

    当我在我的里面写下以下内容时
  • 以数据帧作为输入的模型上的多重处理

    我想在模型上使用多重处理 以使用数据帧作为输入来获得预测 我有以下代码 def perform model predictions model dataFrame cores 4 try with Pool processes cores
  • 设置自定义视图的样式

    我的 Android 项目中有一些自定义视图 并且我已将相关详细信息添加到 attrs xml 文件中 现在我可以通过 XML 实现我的对象 这很好用 我如何设计这些元素的样式 当我尝试在 styles xml 中使用自定义属性时 出现错误
  • 从 MYSQL DB 中搜索电话号码

    我有一张桌子phone柱子 其中的电话看起来像 1 123 456 3780 如果用户在搜索字段 35 中输入 我应该向他显示所有拥有手机的用户 3 534 000 1010 1 350 000 9090 1 003 534 2343 1
  • Signal-R 如何适应 IIS 激活模型?

    我正在学习 Signal R 这是我一直以来的想法 Signalr 如何融入 IIS ASP NET 生命周期 集线器的寿命有多长 我看到它们有重新连接语义 IIS 是否会阻止具有持久连接的 AppDomain 关闭 据我了解 IIS 旨在