C# 如何在运行时添加wcf服务
如何在运行时在winform UI中添加wcf服务。C# 如何在运行时添加wcf服务,c#,.net,wcf,visual-studio-2010,C#,.net,Wcf,Visual Studio 2010,如何在运行时在winform UI中添加wcf服务。 我创建了一个wcf服务,它返回托管机器的运行进程。我想在我的winform应用程序中添加托管计算机服务。不确定您在这里要做什么。但要调用WCF服务,您需要知道两件事1)服务合同2)终点。现在,无法逃避服务契约,因为您需要知道可以使用哪些操作。但是,对于WCF 4,有一个称为WCF发现的新功能,可以帮助您在运行时动态确定端点。请参阅以下链接不确定您要在此处执行的操作。但要调用WCF服务,您需要知道两件事1)服务合同2)终点。现在,无法逃避服务契
我创建了一个wcf服务,它返回托管机器的运行进程。我想在我的winform应用程序中添加托管计算机服务。不确定您在这里要做什么。但要调用WCF服务,您需要知道两件事1)服务合同2)终点。现在,无法逃避服务契约,因为您需要知道可以使用哪些操作。但是,对于WCF 4,有一个称为WCF发现的新功能,可以帮助您在运行时动态确定端点。请参阅以下链接不确定您要在此处执行的操作。但要调用WCF服务,您需要知道两件事1)服务合同2)终点。现在,无法逃避服务契约,因为您需要知道可以使用哪些操作。但是,对于WCF 4,有一个称为WCF发现的新功能,可以帮助您在运行时动态确定端点。请参阅以下链接,您需要在运行时动态更改端点,因此需要 结构:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
WCF消费者WCF发现服务WCF服务
实施:
拓扑:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
- 启动发现服务[结构主干]
- 启动服务[每个服务将向发现服务宣布其启动]
- 启动客户端[每个客户端将从发现服务中发现(查找&解析)服务的终结点]
- 发现过程使用UDP(检查防火墙,它会阻止连接)
- 服务必须宣布它们的启动,因此自托管的服务是可以的,但是IIS托管的5/6服务不是因为它们在第一次调用发生时自动启动李>
- 借
您也可以使用 兄弟提示:
不要过分追求无服务器(无主干、无BootleNeck、完全分布式等)的理想拓扑,这会让你大吃一惊,让你发疯:D
对于初学者,我建议您学习本教程[]您需要在运行时动态更改端点,因此您需要 结构:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
WCF消费者WCF发现服务WCF服务
实施:
拓扑:
WCF Consumer(s) <---> WCF Discovery Service <---> WCF Service(s)
- 启动发现服务[结构主干]
- 启动服务[每个服务将向发现服务宣布其启动]
- 启动客户端[每个客户端将从发现服务中发现(查找&解析)服务的终结点]
- 发现过程使用UDP(检查防火墙,它会阻止连接)
- 服务必须宣布它们的启动,因此自托管的服务是可以的,但是IIS托管的5/6服务不是因为它们在第一次调用发生时自动启动李>
- 借
您也可以使用 兄弟提示:
不要过分追求无服务器(无主干、无BootleNeck、完全分布式等)的理想拓扑,这会让你大吃一惊,让你发疯:D
对于初学者,我建议您学习本教程[]如果我正确理解您的问题,您需要一些代码来在运行时添加服务,而无需使用*.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();
}
uribaseaddress=新的Uri(“http://localhost:8080/hello");
//创建ServiceHost。
使用(ServiceHost主机=新ServiceHost(typeof(HelloWorldService),baseAddress))
{
//启用元数据发布。
ServiceMetadataBehavior smb=新ServiceMetadataBehavior();
smb.HttpGetEnabled=true;
smb.MetadataExporter.PolicyVersion=PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
//打开ServiceHost以开始侦听消息。自
//没有显式配置端点,运行时将创建
//实现的每个服务契约的每个基址一个端点
//通过服务。
host.Open();
WriteLine(“服务在{0}处准备就绪”,基地址);
控制台。WriteLine(“按以停止服务”);
Console.ReadLine();
//关闭ServiceHost。
host.Close();
}
它在控制台应用程序中创建自托管服务
这是你问的吗 如果我正确理解您的问题,您需要一些代码来在运行时添加服务,而不使用*.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();
}
uribaseaddress=新的Uri(“http://localhost:8080/hello");
//创建ServiceHost。
使用(ServiceHost主机=新ServiceHost(typeof(HelloWorldService),baseAddress))
{
//启用元数据发布。
ServiceMetadataBehavior smb=新ServiceMetadataBehavior();
smb.HttpGetEnabled=true;
smb.MetadataExporter.PolicyVersion=PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
//打开ServiceHost以开始侦听消息。自
//没有显式配置端点,运行时将创建
//实现的每个服务契约的每个基址一个端点
//通过服务。
host.Open();
控制台。WriteLin