如何在winform UI中在运行时添加wcf服务。 我创建了一个wcf服务,它返回托管机器的运行进程。我想在winform应用程序中添加托管机器服务。
答案 0 :(得分:2)
您需要在运行时动态更改端点,因此您需要WCF Discovery。
结构:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
实施:
拓扑:
注意:
解决IIS托管的5/6问题:
这样您就可以手动启动IIS-Hosted 5/6服务而无需首次调用
您也可以使用WCF Routing Service。
兄弟提示:
不要为无服务器(No-BackBone,No-BootleNeck,全分布式等等)理想的拓扑结构走得太远,这会让你头晕目眩,让你发疯:D
对于初学者,我建议您使用本教程[WCF Tutorials]
答案 1 :(得分:1)
不确定你在这里要做什么。但是你需要知道两件事来调用WCF服务1)服务合同2)终点。现在没有逃避服务合同,因为您需要知道您可以使用的所有操作。但是,对于WCF 4,有一个称为WCF发现的新功能可帮助您动态确定端点,即在RunTime。请参阅以下链接http://msdn.microsoft.com/en-us/library/dd456791.aspx
答案 2 :(得分:0)
如果我理解你的问题,你需要一些能在运行时添加服务的代码,而不使用* .config文件和* .svc文件中的任何配置。
见样本:
Uri baseAddress = new Uri("http://localhost:8080/hello");
// Create the ServiceHost.
using (ServiceHost host = new ServiceHost(typeof(HelloWorldService), baseAddress))
{
// Enable metadata publishing.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
// Open the ServiceHost to start listening for messages. Since
// no endpoints are explicitly configured, the runtime will create
// one endpoint per base address for each service contract implemented
// by the service.
host.Open();
Console.WriteLine("The service is ready at {0}", baseAddress);
Console.WriteLine("Press <Enter> to stop the service.");
Console.ReadLine();
// Close the ServiceHost.
host.Close();
}
它在控制台应用程序中创建自托管服务。
http://msdn.microsoft.com/en-us/library/ms731758.aspx
那是你问的吗?