我正在开发一个内部网站。所有用户都应该从Web服务器获得桌面弹出窗口,每当在网站上发布新内容时。
我想制作自己的Windows服务,该服务将订阅服务器(利用类似SignalR的东西),然后这个服务会显示一个简单的弹出窗口,通知用户每当服务器发送消息时。
但是,我想知道是否已经有这样的东西存在,而不是自己构建。我已经四处寻找,但没有找到任何信息。
我主要是一名Web开发人员,从未构建过Windows服务或C#桌面应用程序,因此我更喜欢使用现有的代码。
有人知道这样的东西吗?
我正在开发一个内部网站。所有用户都应该从Web服务器获得桌面弹出窗口,每当在网站上发布新内容时。
我想制作自己的Windows服务,该服务将订阅服务器(利用类似SignalR的东西),然后这个服务会显示一个简单的弹出窗口,通知用户每当服务器发送消息时。
但是,我想知道是否已经有这样的东西存在,而不是自己构建。我已经四处寻找,但没有找到任何信息。
我主要是一名Web开发人员,从未构建过Windows服务或C#桌面应用程序,因此我更喜欢使用现有的代码。
有人知道这样的东西吗?
如果要构建Windows服务,请尝试使用Top Shelf:http://docs.topshelf-project.com/en/latest/。总的来说,这很容易,只需要三个步骤...
public class TownCrier
{
readonly Timer _timer;
public TownCrier()
{
_timer = new Timer(1000) {AutoReset = true};
_timer.Elapsed += (sender, eventArgs) => Console.WriteLine("It is {0} and all is well", DateTime.Now);
}
public void Start() { _timer.Start(); }
public void Stop() { _timer.Stop(); }
}
public class Program
{
public static void Main()
{
HostFactory.Run(x =>
{
x.Service<TownCrier>(s =>
{
s.ConstructUsing(name=> new TownCrier());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Sample Topshelf Host");
x.SetDisplayName("Stuff");
x.SetServiceName("Stuff");
});
}
}
对于SignalR服务器端,我建议您使用C# Winform。
对于客户端,您可以在任何HTML文件中使用JavaScript来“接收”来自SignalR服务器的消息,然后可以弹出警报消息或其他任何您想要的内容。但是,在这种情况下,您必须确保用户在浏览器中浏览该HTML文件,否则消息将无法接收。
由于SignalR支持不同类型的服务器和客户端,因此没有现成的代码可用。我相信您需要编写自己的代码。实际上,SignalR非常容易使用,编写自己的代码可能比使用其他方法更快。
你可以尝试使用DesktopToast: https://github.com/emoacht/DesktopToast 或者Growl: http://www.growlforwindows.com/