WPF C#客户/服务器公告系统

时间:2010-01-21 14:31:57

标签: c# wpf client-server

我目前正在我的工作地点创建公告系统。该系统的作用是替换所有用户的电子邮件,因为人们滥用它并且通常滥用设施。该系统将包括:

门户网站:允许员工输入任何重要公告(这将通过AD限制)。

SQL Server 2k5数据库:将发布公告以及工作人员的记录以及是否已阅读公告等。

前端:在WPF中创建& C#即将完成,它将向用户显示通知。

网页:客户端会经常联系,这将返回一个xml文件供客户端阅读。

然而,我的老板现在已经转移了目标帖子,并且希望在将用户写入数据库后向用户显示通知,而不是等待客户端联系该网页。

所以现在我有点不确定如何解决这个问题。我有一个想法,我将创建一个小型服务器应用程序来监控新的公告,然后联系客户,告知他们接近网站,以获取他们需要的信息。但我只是想看看是否有更好或更有效的方式来做这件事,或者其他人是否有更合适的想法或建议。

1 个答案:

答案 0 :(得分:1)

这是一个有趣的项目 - 您可以尝试满足消息传递需求的一种方法是使用WCF双工Web服务(http://msdn.microsoft.com/en-us/library/ms731064.aspx

看起来像这样 - 一个WCF服务托管在一个与数据库通信的中央应用服务器上。所有客户端都使用双工双向绑定订阅此WCF服务。然后他们可以有效地听取任何关于新公告的通知 - 你会得到一个很好的回调用args向他们发送祝酒词。

应该是一种有效的方法。

在双工绑定中,您提供了两个在客户端生成的接口,一个用于服务,一个用于回调类:

public interface ICalculatorDuplex
{
    [OperationContract(IsOneWay = true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
}


public interface ICalculatorDuplexCallback
{
    [OperationContract(IsOneWay = true)]
    void Equals(double result);
    [OperationContract(IsOneWay = true)]
    void Equation(string eqn);
}

所以我想象这样的事情:

public interface IAnnouncementServiceDuplex
{
    [OperationContract(IsOneWay = true)]
    void Subscribe(int userId);
}
public interface ICalculatorDuplexCallback
{
    [OperationContract(IsOneWay = true)]
    void SendNotification(AnnouncementData data);
}
相关问题