我目前正在开发一个C#Windows窗体应用程序,我打算让它与服务器进行交互。服务器将从我开发的移动应用程序接收发布,并且每当收到发布时,我的Windows窗体应用程序应该得到通知并给我通知。现在我开始为它创建一个WCF服务。
这是我的意思的示例场景,
E.g。我的移动应用程序将消息发送到我的服务器。一旦我的服务器收到消息,我的Windows窗体应用程序应显示一条新通知,显示收到的消息内容。
所以对于服务的合同,我应该输入什么类型的方法才能收到帖子?
e.g。
[OperationContract]
bool receivePosting(int n);
答案 0 :(得分:2)
我不太清楚你想要传达的方向:
或:
我将“server”放在引号中,因为在WCF世界中,这是一个用于特定角色的术语。
假设第一个选项,您需要这样做:
您的Winforms应用需要是WCF服务器 - 例如它需要定义服务合同,运营合同和数据合同 - 并实施那些
在这种情况下,您的“发布服务器”将是WCF 客户端;无论何时收到/存储发布,您都可以在Winforms应用程序中调用WCF服务来发送通知(实际上,在此设置中,您的角色是保留的 - Winforms应用程序是WCF服务器)
关于运营合同 - 您的Winforms应用程序需要了解新发布的内容?只是收到了新帖子这一事实?发布的全部内容,还是只是其中的一部分?
在任何情况下,您都需要在WCF服务上定义一个“发布服务器”可以调用并将所有相关信息传递给Winforms WCF服务器的方法 - 您不希望只需要进行两次或多次调用一个通知。
所以你的服务合同可能是:
[ServiceContract]
public interface IPostingService
{
[OperationContract]
void NotifyAboutPosting(Posting post);
}
并且您的Posting
类将是数据合同:
[DataContract]
public class Posting
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public DateTime PostingTimestamp { get; set; }
}
无论您需要在这两方之间发送什么 - 在您的数据合同中定义它,这是您的服务电话的参数