我目前正在开发一个C#Windows窗体应用程序,我打算让它与服务器进行交互。服务器将从我开发的移动应用程序接收发布,每当收到发布时,我的Windows窗体应用程序都会收到通知并给我通知。
E.g。我的移动应用程序将消息发送到我的服务器。一旦我的服务器收到消息,我的Windows窗体应用程序应显示一条新通知,显示收到的消息内容。
我现在开始开发我的WCF服务,这是我到目前为止所做的
[ServiceContract(Namespace = "Posting")]
public interface IPostingService
{
[OperationContract]
void NotifyAboutPosting(Posting post);
}
[DataContract]
public class Posting
{
[DataMember]
public int ID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public DateTime PostingTimestamp { get; set; }
}
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost/");
ServiceHost selfHost = new ServiceHost(typeof(Posting), baseAddress);
try
{
// Step 3 of the hosting procedure: Add a service endpoint.
selfHost.AddServiceEndpoint(
typeof(IPostingService),
new WSHttpBinding(),
"Posting");
// Step 4 of the hosting procedure: Enable metadata exchange.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);
// Step 5 of the hosting procedure: Start (and then stop) the service.
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();
}
}
}
关于发布类,我想问的是用于从服务器获取信息的内部方法是什么?
如何在服务完成后从这里继续。 (我的winform应用程序已经完成,剩下的就是添加这个逻辑,以便在移动应用程序发送到服务器时接收发布。
并且似乎存在
的编译错误在服务'## .Posting'实施的合同列表中找不到合同名称'##。IPostingService'。
任何人都可以帮我这个吗?万分感谢!
答案 0 :(得分:2)
您的实际实施在哪里?你有合同(IPostingService
),数据(Posting
)......但是代码在哪里做工作?你似乎缺乏合同实施:
public class PostingService : IPostingService
{
public void NotifyAboutPosting(Posting post)
{
// do something with post here
}
}
在设置主机时注册实际的工人类(而不是数据):
ServiceHost selfHost = new ServiceHost(typeof(PostingService), baseAddress);
答案 1 :(得分:0)