C# 如何在客户端调用WCF服务重载构造函数

C# 如何在客户端调用WCF服务重载构造函数,c#,wcf,constructor,wcf-client,C#,Wcf,Constructor,Wcf Client,我是WCF的新手。我在WCF服务中创建了两个重载构造函数。我在客户端应用程序中添加了WCF服务的引用。我可以从客户端调用WCF方法。但是我不知道 如何从客户端调用重载构造函数?可能吗? 我寻找同样的答案,我寻找了一些答案,但我不能清楚地理解这些事情,因为我对这一点还不熟悉。我正在寻找直接的简单示例来调用WCF构造函数 如果有人提供一个示例链接供参考,这将很有帮助 正如我所说,服务是通过框架在服务器端实例化的。您只能访问生成的代理,该代理在后台连接到您的服务 无论如何,您想要的不是通过服务构造函数

我是WCF的新手。我在WCF服务中创建了两个重载构造函数。我在客户端应用程序中添加了WCF服务的引用。我可以从客户端调用WCF方法。但是我不知道

如何从客户端调用重载构造函数?可能吗?

我寻找同样的答案,我寻找了一些答案,但我不能清楚地理解这些事情,因为我对这一点还不熟悉。我正在寻找直接的简单示例来调用WCF构造函数

如果有人提供一个示例链接供参考,这将很有帮助


正如我所说,服务是通过框架在服务器端实例化的。您只能访问生成的代理,该代理在后台连接到您的服务

无论如何,您想要的不是通过服务构造函数实现的。如果您有业务对象,则将其传递给服务操作:

using(var serviceClient = new MyServiceClient())
{
   serviceClient.SomeOperation(businessObject);
}
您在这里看到的
MyServiceClient
的构造函数与您为服务合同定义的构造函数完全没有关系


此外,您可能需要查看服务实例模式,因为在我看来,您不需要每次调用模式。

您应该能够做到这一点。需要对如何管理WCF实例有一点了解

理论:

  • 调用WCF服务时,默认情况下,服务调度器会为每次调用创建一个新实例(请参见InstanceContextMode)

  • 调用GetInstance()和ReleaseInstance()(IInstanceProvider的)分别实例化和释放服务对象(InstanceContextMode为单实例时除外),具体取决于InstanceContextMode

  • 在上述场景中,将调用默认构造函数

  • WCF提供了可扩展性点,您可以在其中注入自己的实例提供程序(以便能够调用重载构造函数)

  • 行动:

  • 通过从IInstanceProvider继承创建新的实例提供程序。重写GetInstance()和ReleaseInstance()方法。在GetInstance()方法上,使用重载的构造函数返回新的服务实例

  • 创建一个新的服务行为(比如InstanceProviderBehavior)属性(通过从属性和IServiceBehavior导入)应用于服务契约,以便服务调度器查找您自己的自定义实例提供程序


  • 这是一篇很棒的文章-

    SOAP服务从不公开它特定于.NET平台的任何内容。这包括构造函数

    请记住,SOAP服务公开的任何内容都是通过在WSDL中描述来公开的。无法在WSDL中描述:

  • 建设者
  • 事件
  • 索引器
  • 仿制药

  • 等等。

    服务由框架在服务器端实例化。您希望将哪些参数传递给这些构造函数?如果它们与身份验证/授权无关,那么您应该将它们传递给服务操作(方法)