2010-01-21 99 views
0

我目前正在我的工作地点创建公告系统。这个系统的作用将是取代所有用户的电子邮件,因为人们滥用它并且通常滥用该设施。该系统将包括:WPF C#客户端/服务器公告系统

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

的SQL Server 2K5 DB:将持有的公告与工作人员的记录一起,如果他们读过的公告等

前端:创建在WPF & C#这已接近完成,它会向用户显示通告。

网页:客户将联系每隔一段时间,它会返回一个XML文件,客户端阅读。

但是我的老板现在已经转移了球门柱和希望的公告一旦被写入到数据库中,而不是等待客户端上的联系网页显示给用户。

所以现在我有点不确定如何去做这件事。我有一个想法,我会创建一个小型服务器应用程序来监控新公告,然后联系客户,让他们通过网站获取他们需要的信息。但我只是想看看是否有更好或更有效的方法来做到这一点,或者如果别人有更合适的想法或建议。

+0

伤心的是,你的同事不能使用电子邮件:( – 2010-01-21 15:35:15

回答

1

嗯,你可以尝试使用WCF双工Web服务(http://msdn.microsoft.com/en-us/library/ms731064.aspx),以满足信息需求是一个有趣的项目 - 一种方式

它应该是这样的 - 一个WCF服务托管中心的应用服务器上,与DB会谈。所有客户端都使用双向双向绑定来订阅此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); 
} 
+0

只是想知道,例如说我想以这种方式发回XML数据,这将有可能吗? – manemawanna 2010-01-21 15:06:06

+0

好吧,当然 - 如图所示,你可以定义你的回调签名然而你喜欢(无论你想要什么类型的参数像),所以也许对象会更合适 - 但如果你需要发送XML,你也可以这样做(作为一个字符串)。 但是,请记住这些Web服务(取决于您的绑定/端点配置)是否已通过XML格式发送SOAP。 – Bobby 2010-01-21 15:30:23

+0

非常感谢我会去调查更多,需要了解如何维护连接,因为服务器理想地需要知道谁的客户端正在运行,因此它知道联系谁。 – manemawanna 2010-01-21 15:41:53