gpt4 book ai didi

c# - 最佳实践 : Persisting data throughout multiple web method calls

转载 作者:太空宇宙 更新时间:2023-11-03 11:56:35 25 4
gpt4 key购买 nike

我有一个包含 8 个 Web 方法的 Web 服务。这些方法被同步调用,第一个调用对用户进行身份验证,其余方法执行一个工作单元,调用这些方法直到工作完成。

我需要存储工作的状态(例如接下来要执行的操作,以及已经完成和当前正在执行的工作。)我目前有一个包含此信息的状态对象。

我的问题是在每次 Web 服务调用之间保留该对象的最佳方法是什么?请注意,可能有多个用户调用此 Web 服务,每个用户都有自己独特的状态。

以下是我想到的一些场景:

想法#1

将对象存储在 session 中。

想法 #2创建一个实例变量,它是 userId 及其各自数据的 HashMap。像这样的东西:


[WebService(Namespace = "http://developer.intuit.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class QBWCService : QBWebConnectorSvc {

// instance variable to hold current session data...
private Dictionary<Guid,Session> Sessions;

public QBWCService () {

Sessions = new Dictionary<Guid,Session>();
}
[WebMethod]
public override string[] authenticate(string strUserName, string strPassword)
{
...
Sessions.Add(UserId, new SessoionObject());
}
[WebMethod]
public override string[] authenticate(Guid UserId)
{
SessionObject o = Sessions[UserId];
}
}

我认为想法 2 将是最干净的“自然方式”,但是我不知道实现这种方案的任何含义……您会推荐哪种方式或其他方式?

最佳答案

这可能是您已经无法进行大规模重构的情况之一,但是......

听起来与 Windows Workflow 中的状态工作流相同。如果您的计划最终将这些方法中的每一个公开为它们自己的封装服务,那么它会免费为您提供所有状态管理,此外您还可以获得额外的好处,即能够直观地定义这些服务调用之间的工作流。

http://msdn.microsoft.com/en-us/magazine/cc163538.aspx

[编辑]:开枪吧,绝地武士抢在我前面。他说的。

关于c# - 最佳实践 : Persisting data throughout multiple web method calls,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com