【问题标题】:Storing last 10 web service calls存储最近 10 个 Web 服务调用
【发布时间】:2023-03-14 01:32:01
【问题描述】:

我有一个 SOAP Web 服务,我试图弄清楚如何保存/记录每个用户的最后 10 个请求。每个用户都需要在每个请求中发送他们的用户/密码,因此很容易知道请求来自谁。保存最后 10 个请求后,我的目标是开发某种页面,允许他们使用凭据登录并查看原始请求、实际 SOAP 消息、http 标头信息以及我能想到的任何相关信息.

重点是让人们解决他们自己的连接问题,而不是每次无法连接、无法格式化他们的请求等时都必须联系我......

我的第一个想法是将所有这些信息存储在内存中的哈希表或其他东西中,但是当我们有成百上千的用户访问 Web 服务时,这可能会出现可伸缩性问题。

我们可以使用我们的数据库来存储这些请求。我可能需要创建一些“缓冲区”机制,而不是每次都访问数据库,该机制仅在缓冲区达到一定数量的请求后才更新数据库。是否有现有的库或机制可以做到这一点?

我们无法将这些请求存储在托管 Web 服务的机器上的文件系统中。由于这些请求可能包含敏感信息,因此我需要解决这个业务决策。

或者也许有更好的方法来实现我想要做的事情?

【问题讨论】:

  • 更好的方法是使用 WCF。跟踪功能开箱即用。
  • 如果可以选择,我会使用 WCF 重写当前的 Web 服务。不幸的是,这不是我能做出的选择。

标签: asp.net web-services


【解决方案1】:

我看到了两种选择。

1.- 混合使用两种方法:在内存中创建哈希表,当达到限制(例如,1000 个请求)时,将它们推送到数据库。不需要为此建立一个特殊的库。 hastable 是你的内存缓冲区。

2.- 设置一个完全不同的进程sniffing the requests,并让客户端下载数据包捕获(或自己处理并呈现它们)。这可以说是更多的工作,但将请求保存与您的应用程序分开。如果负载需要,您甚至可以将嗅探器移到另一台机器上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2010-11-26
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    相关资源
    最近更新 更多