耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案

耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案

我认为《耗时很长的服务器端事件中让客户端得到中间过程信息的合理解决方案》一文中的解决方案不合理,属于技术的误用,满篇的ajax这个词很容易给读者造成误导 。

原需求:

B/S结构的系统里,用户点一个按钮系统开始发送上千封邮件,要求把发送信息(发送成功数,失败数,剩余数量...)动态实时的反馈给客户.

原文的技术误用之处:

(1)ajax,pageload 这些ui层的东东渗透到逻辑层里去了

(2)thread的职责太多

并不是网页上的多线程不好搞,而是Web开发搞久了,基本的OO设计能力下降了,或者根本就忽略OO设计了,眼中只有页面。

以原文这个例子而言,你不把它当成Web开发,一切就变得很简单了。

我的解决方案:

首先,得有一个类管理每条信息。

  public abstract class MessageHolder
  {
    public DateTime SendTime { get; set; }
    public String ReceiverMail { get { return Receiver.Mail; } }
    public String ErrorMessage { get; set; }
    public Int32 SendCount { get; set; }
    public Boolean SendExpired { get { return SendCount > 5; } }
    public Boolean SendOk { get; private set; }
    public Guid Id { get; private set; }
    public String SendResult {
      get {
        if (SendOk) return "发送成功";
        else
        {
          if (SendExpired) return "发送失败";
          else return "等待发送";
        }
      }
    }
    
  }
  
  public class MailMessageHolder : MessageHolder
  {
    public String Title { get; private set; }
    public String Text { get; private set; }
    
  }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索string
, 解决方案
, return
, get
, public
, 信息
很长
tcp客户端和服务器端、udp服务器端和客户端、java服务器端和客户端、服务器端和客户端、服务器端向客户端推送,以便于您获取更多的相关知识。

时间: 2024-08-22 14:18:11

耗时很长的服务器端事件中让客户端得到中间过程信息的更合理的解决方案的相关文章

如何判断某服务器端获取访问的客户端的哪些信息?

问题描述 如何判断某服务器端获取访问的客户端的哪些信息? 详细解释: 任何一个客户端访问服务器的时候,服务器与客户端都会进行信息交互.问题就是在客户端X访问服务器A的时候,客户端X应该如何知道服务器A获取了他们哪些信息?(也就是递交给A的全部信息集合?) 解决方案 可以在服务端做响应的时候记录相应客户端的信息.例如,HTTP协议中可以利用对应的SESSION,COOKIE,IP等信息. 解决方案二: 这个都是基于协议来的,通信双方,客户端发送哪些数据,服务端返回哪些数据. 协议都定义好了

在一个很长的对象List中查找某个属性

问题描述 有一个参数对象List,count大概是几万个,现在要在这些参数里面查找出所有"描述"这条属性中包含"用户"和"推荐"这两个词语的,然后显示.不知道怎么样查找比较好,多谢啦. 解决方案 解决方案二:最好给出数据结构.估计LINQ可以.解决方案三:遍历查找解决方案四:我认为重载==运算符比较好解决方案五:随便说说,效率好不好不敢保证方案1:把list组合成一个字符串,通过字符串的contains查找方案2:数据源如果是datatable的

那些隐藏在游戏中的有趣或龌龊信息,你们发现过多少呢?

class="post_content" itemprop="articleBody"> 许多游戏设计师都曾在游戏数据中留下永久存在的信息.这些信息与代码整合,并不希望让我们看见."剪辑室"(The Cutting Room Floor)正是一个收集此类游戏隐藏信息的存储库.下面是一些不知疲倦的数字考古家出土的迷人的财富-- 那是 80 年代,也有可能是 90 年代.你是一个苦逼的程序猿在辛苦锄着代码地,而你所属的公司甚至不会给你一丝尊重.

在oracle一个有60万记录的表中删除几十条记录怎么用了很长时间?

oracle 在oracle一个有60万记录的表中删除几十条记录怎么用了很长时间?

急!用jdbc中executeQuery()方法执行查询为什么在程序中停顿很长时间,甚至报错。

问题描述 急!用jdbc中executeQuery()方法执行查询为什么在程序中停顿很长时间,甚至报错. 程序中的sql如以下: select t3.*,t1.costPrice as costP,t1.retailPrice as retailP,t1.basicPricing as basicP from goodsGroupCopy t1 left join groupCopyGoods t2 on t1.id = t2.goodsGroupCopyId left join goods t

钓鱼岛事件中站长应该怎样钓住用户

9月18日,是"九·一八事变"纪念日,多地防空警报拉响,1931年9月18日,日本全面发动侵华战争,没想到81年后的今天,中日关系再次陷入泥潭.说到这里可能会有人问钓鱼岛时间跟我们站长又有什么关系呢?言归正传,经历了百度这几个月来的暴风雨,草根站长早已经怨声载道,然而阳光总在风雨后,互联网最切记的是坚持.此外离开了搜索引擎站长们能做的还有很多,尽管SEO3.0的时代仍然看似遥远,但用户体验却成为了做站的原则,用户体验就是留住用户,比如在钓鱼岛事件中站长需要做那些事来吸引用户钓住用户呢?

Firefox启动耗时过长或打不开

更换主页 网站自身的问题可能导致 Firefox 需要花费很长时间启动.试试更改您的 Firefox 到默认主页(about:home)或空白页.请根据如何设置主页的说明操作. 更改窗口和标签页的加载方式 如果您设置了 Firefox 使用会话恢复功能来显示您上次打开的窗口和标签页,而且上次您使用 Firefox 时打开了很多网页,Firefox 可能会花费很多时间来启动.建议您在 "选项"窗口中的"标签式浏览"面板中勾选"选择之前不要加载" ,

时间图:长时间内离散事件的可视化

在我们的日常生活中离散事件无处不在.比如通话记录.网上交易和心跳数据.尽管离散事件的数据比较单一,但是在保留细节信息的前提下,对长时间内的离散事件进行可视化处理还是挺困难的. 下图阐明了这个问题.该图描述了七个月内某一IP地址的网站访问量.它是利用离散事件数据所绘制的.其中每个直方柱的高度代表每个时间点上事件发生的次数. 当此图涵盖了所有事件的信息时,每个时间点上的细节信息则完全被忽略.人们总是可以对条形图进行一定比例的放大后再次绘图,但是问题就来了–我们应该选择多大的缩放比例呢?我们应该考察哪

oracle等待事件5——库高速缓存上的等待事件 中

3.library cache lock 和 library cache pin library cache lock 的定义:访问或修改库高速缓冲区的对象时,对库高速缓冲区句柄(handle)获得的锁,在获得library cache lock 的过程中,如果发生争用,则等待library cache lock事件. 通过library cache lock 事件的P1=handle address  P2=lock address  P3=mode*100+namespace,可以掌握对哪个