gpt4 book ai didi

c# - ASP.NET 设计问题 - Web 服务

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

创建一个 Web 界面,以便我们的帮助台可以创建用户并设置我们环境中使用的一些应用程序,该 Web 界面是用 ASP.NET 编写的,但我正在寻求有关实现后端的最佳方法的建议。

我打算使用网络服务来创建帐户。我主要关心的是安全性和关注点分离,所以我认为应用程序域是不够的。

想法是通过 Web 服务请求获取信息,并在特权帐户下生成一个线程来完成实际工作。由于我们有其他系统,我们最终可能会使用多个网络服务。

谁能看到这方面的问题或有更好的建议?

最佳答案

你提出了一个合理的解决方案,但我可以想到一个替代方案。在 ASP.NET 应用程序中处理线程可能是一件痛苦的事情。不是不可能,而是痛苦。您是在生成一个线程以便您的任务可以在一个单独的身份下运行,还是因为该任务可以长时间运行,或者两者兼而有之?另一件需要考虑的事情是如何验证用户。您将需要知道如何使用 ASP.NET 模拟另一个用户帐户。

根据负载和其他因素,将队列引入您的应用程序(在数据库中,或使用 MSMQ、Rhino 队列或类似工具)可能会更好。当一个请求进来验证它。如果没问题,则将其转储到队列中并将关联 ID 返回给客户端。客户端可以使用此 ID 检查任务的状态。

您的队列可以存储在数据库中,或者您可以使用特定的队列 API/系统。创建一个单独的应用程序作为计划作业或 Windows 服务运行。此应用程序将在与调用您的 Web 服务的客户端不同的 ID 下运行,并执行您将在另一个线程上执行的工作。当排队的工作完成时,数据库会更新状态。

通过这样做,您可以避免在您的 ASP.NET 应用程序中包含任何特殊代码,并在您的关注点之间拥有一个清晰明确的接口(interface)。如果任务失败,比如您正在设置的第 3 方应用程序处于脱机状态,那么您有机会重试该操作。我发现这种方法也更容易监控。如果应用程序处于离线状态,它还可以让您继续轻松接受传入的请求。

关于c# - ASP.NET 设计问题 - Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6246634/

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