在 Windows 服务中使用静态方法在不创建新对象的情况下调用 webform 中的数据

use of a static method inside a Windows service to call data in webform without creating a new object

我正在创建一个 Windows 网络表单页面,需要一个后台服务来跟踪数据,即使网络应用程序已关闭。我刚开始使用 Windows 服务,有一个问题。当我从网络表单页面内的服务调用静态方法时,它会在服务器上工作吗

我做到了,所以服务一直在接收数据。当我打开 webform 页面时,我做到了,因此该页面以字符串形式获取所需的数据,而无需创建接收数据的 class 的新实例。这一切都在本地 IIS 中工作,但我的问题是它是否可以在安装了服务的服务器上工作 运行ning 24/7 用户仍然在自己的机器上接收来自它的所有数据。

两个项目都在同一个 VS 解决方案中,Asp.net 项目通过引用与服务连接

服务基础class。数据来源方法:

    public static string LoadStatus()
    {
        //Receive data
        ...

        //Return data
        List<string> streamString = new List<string>();
        foreach (var str in InstanceStreams)
        {
            streamString.Add(str.Name + "," + str.Stream + "+");
        }
        result = String.Join("", streamString);
        return strHTMLProd + "|" + strHTMLTest + "|" + errors + "|" + result;
    }

Web 表单页面。获取数据然后在屏幕上打印出来的方法:

    public void setLabel()
    {
            string[] labels = AzureMonitor.LoadStatus().Split('|');
            if (labels != null && labels.Count() == 4)
            {
                lblStatusProd.Text = labels[0];
                lblStatusTest.Text = labels[1];
                alarm = labels[2];
                array = labels[3].TrimEnd('+');
                if (array != "" && array != null)
                {
                    string[] Streams = array.Split('+');

                    ...
                }
              ...
            }
        lblUpdate.Text = "Last update: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

    }

当我 运行 它在服务器上时,我希望返回的数据永远不会为 null 并且与服务中的数据相同 class 这就是为什么我制作了一个静态方法并避免制作新的实例。 但它是 100% 保存吗?如果不是,有什么方法可以改进设置并在它们之间获取数据而无需复制 class.

不太清楚你要做什么。这些是否分为两个单独的应用程序(Windows 服务和 Forms 桌面应用程序)?如果不是,那么它很可能在此刻起作用,而不是设计使然。

您混合使用了不同的技术。我建议您最好将监控逻辑放入 ASP.NET MVC 应用程序(它托管在 IIS 服务中并一直运行)并且可能使用 SignalR 获取实时数据流而不是依赖不断轮询更新。桌面应用程序可以使用 Forms 或 WPF 和 C# SignalR 客户端来接收数据。或者,您可以编写一个基于 Web 的客户端(使用 Angular 之类的东西)来显示数据。

我通过向我的数据库添加 table 并将监控存储在其中并使网页接收存储在 table 中的信息以用于 asp:labels 然后将更新并在屏幕上显示监控,而不直接与两者建立任何联系。