如何在运行时添加 wcf 服务
本文关键字:wcf 服务 添加 运行时 | 更新日期: 2023-09-27 18:36:06
如何在运行时在我的winform UI中添加wcf服务。我创建了一个wcf服务,它返回托管机器的运行进程。我想在我的 winform 应用程序中添加托管计算机服务。
您需要在运行时动态更改终结点,因此需要 WCF 发现。
结构:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
实现:
- 如何:实现发现代理
- 如何:实现向发现代理注册的可发现服务
- 如何:实现使用发现代理查找服务的客户端应用程序
拓扑学:
- 启动发现服务 [ 结构主干 ] 启动服务 [每个服务
- 都将向发现服务宣布其启动]
- 启动客户端 [每个客户端都将从发现服务发现(查找和解析)服务的端点]
笔记:
- 发现过程使用UDP(检查你的防火墙,它可以阻止连接) 服务
- 必须宣布其启动,因此自托管服务是可以的,但 IIS 托管的 5/6 服务不是因为它们在第一次调用发生时自动启动!
解决 IIS 托管的 5/6 问题:
- 通过使用ServiceHostFactory扩展托管
以便您可以手动启动 IIS 承载的 5/6 服务,而无需首次调用
还可以使用 WCF 路由服务。
兄弟提示 :
不要为无服务器(无骨干,无靴颈,完全分布式等)理想的拓扑走得太远,这会让你大吃一惊,让你发疯:D
对于初学者,我建议您使用本教程 [ WCF 教程 ]
不确定你在这里想做什么。但是,要调用 WCF 服务,您需要知道两件事:1) 服务协定 2) 终结点。现在无法从服务协定中转义,因为您需要知道可以使用的所有操作。但是,在 WCF 4 中,有一项称为 WCF 发现的新功能,可帮助您动态确定端点,即在运行时。请参阅以下链接 http://msdn.microsoft.com/en-us/library/dd456791.aspx
如果我理解您的问题正确,则需要一些代码来在运行时添加服务,而无需在 *.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
这是你问的吗?