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

时间:2014-08-07 07:36:08

标签: c# wcf constructor wcf-client

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

  

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

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

  

如果有人提供示例链接供参考,将会很有帮助。

3 个答案:

答案 0 :(得分:1)

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

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

  1. 构造
  2. 事件
  3. 索引
  4. 泛型

答案 1 :(得分:0)

正如我所说,服务是由框架在服务器端实例化的。您只能访问引擎盖下连接到服务的生成代理。

无论如何,你想要的东西不能通过服务构造者来实现。如果您有业务对象,则将其传递给服务操作:

using(var serviceClient = new MyServiceClient())
{
   serviceClient.SomeOperation(businessObject);
}

您在此处为MyServiceClient看到的构造函数与您为服务契约定义的构造函数完全没有关系。

此外,您可能需要查看服务实例化模式,因为在我看来,您不希望采用每种通话模式。

答案 2 :(得分:0)

你应该能够做到。对WCF实例的管理方式有一点了解。

理论:

  1. 调用WCF服务时,服务调度程序默认为每次调用创建一个新实例(请参阅InstanceContextMode)。

  2. 根据InstanceContextMode调用GetInstance()和ReleaseInstance()(IInstanceProvider)分别实例化和释放服务对象(当InstanceContextMode为Single时除外)。

  3. 在上面的场景中,调用默认构造函数。

  4. WCF提供了可扩展点,您可以在其中注入自己的实例提供程序(这样您就可以调用重载的构造函数)。

  5. 行动:

    1. 通过继承IInstanceProvider创建新的实例提供程序。重写GetInstance()和ReleaseInstance()方法。 on GetInstance()方法使用重载的构造函数返回一个新的服务实例。

    2. 创建一个新的服务行为(比如InstanceProviderBehavior)属性(通过从Attribute和IServiceBehavior中继承)以应用于服务合同,以便服务调度程序查找您自己的自定义实例提供程序。

    3. 这是一篇很棒的文章 - http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx