我最近听到一些开发人员说,他们只是在轮询一些东西(数据库、文件等).若要确定更改的时间,请执行以下操作,然后运行任务,如导入.

我真的很反对这个 idea ,我觉得利用现有的技术,如RemotingWCF等,会比投票好得多.

然而,我想说明为什么其他人更喜欢一种方法而不是另一种方法,更重要的是,我怎样才能说服其他人,在这个时代,投票是错误的?

推荐答案

民调本身并不是"错误的".

这在很大程度上取决于它的实施方式和目的.如果你真的关心即时通知一个变更,那么它是非常有效的.您的代码处于紧密循环中,不断轮询(询问)资源是否已更改/更新.这意味着你会尽快得到通知,事情有所不同.但是,您的代码没有做任何其他事情,而且对相关对象的多次调用会带来开销.

如果你不太关心即时通知,你可以增加投票之间的间隔,这也可以很好地工作,但 Select 正确的间隔可能会很困难.如果时间太长,您可能会错过关键的更改;如果时间太短,您将回到第一种方法的问题.

替代方案(如中断或消息等)可以在这些情况下提供更好的折衷方案.您会在实际可能的情况下尽快得到更改通知,但此延迟不是您所能控制的,它取决于组件本身传递状态更改的及时性.

民调的"错"在哪里?

  • 这可能是资源占用.
  • 它可能是有限的(尤其是如果你有很多事情想知道/投票).
  • 这可能太过分了.

但是...

  • 这并不是天生的错误.
  • 这可能非常有效.
  • 这很简单.

Asp.net相关问答推荐

创建项目 ASP.NET Core (.NET Core) 和 ASP.NET Core (.NET Framework) 有什么区别

如何注册路由区域

IIS 中 ASP.net 应用程序的单独应用程序池

OnCheckedChanged 事件未触发

System.Web.HttpContext 无法识别

UseSqlServer 方法缺少 MVC 6

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

在 asp.net 中调整图像大小而不会丢失图像质量

如何使用自动生成的列隐藏 ASP.NET GridView 中的列?

对于每个请求,RestClient 应该是单例还是新的

禁用 web.config 继承?

缩小 ASP.Net MVC 应用程序的 HTML 输出

如何从url中删除returnurl?

头标记中的内联代码 - ASP.NET

协调 ASP.NET 脚本包和源映射

从物理路径获取相对虚拟路径

IIS 是否执行非法字符替换?如果是这样,如何阻止它?

在控制器 asp.net-core 中获取当前区域性

ASP.Net 哪个用户帐户在 IIS 7 上运行 Web 服务?

如何将 DataTable 转换为类 Object?