我是WCF的新手。我在WCF服务中创建了两个重载的构造函数。我在客户端应用程序中添加了WCF服务的引用。我可以从客户端调用WCF方法。但我不知道,
如何从客户端调用重载的构造函数?有可能吗?。
我搜索了同样的东西,我看了一些答案,但我不能清楚地理解这些事情,因为我对此不熟悉。我正在寻找直接简单的例子来调用WCF构造函数。
如果有人提供示例链接供参考,将会很有帮助。
答案 0 :(得分:1)
SOAP服务永远不会公开它特定于.NET平台的任何内容。这包括构造函数。
请记住,SOAP服务公开的任何内容都是通过在WSDL中描述它来公开的。无法在WSDL中描述:
等
答案 1 :(得分:0)
正如我所说,服务是由框架在服务器端实例化的。您只能访问引擎盖下连接到服务的生成代理。
无论如何,你想要的东西不能通过服务构造者来实现。如果您有业务对象,则将其传递给服务操作:
using(var serviceClient = new MyServiceClient())
{
serviceClient.SomeOperation(businessObject);
}
您在此处为MyServiceClient
看到的构造函数与您为服务契约定义的构造函数完全没有关系。
此外,您可能需要查看服务实例化模式,因为在我看来,您不希望采用每种通话模式。
答案 2 :(得分:0)
你应该能够做到。对WCF实例的管理方式有一点了解。
理论:
调用WCF服务时,服务调度程序默认为每次调用创建一个新实例(请参阅InstanceContextMode)。
根据InstanceContextMode调用GetInstance()和ReleaseInstance()(IInstanceProvider)分别实例化和释放服务对象(当InstanceContextMode为Single时除外)。
在上面的场景中,调用默认构造函数。
WCF提供了可扩展点,您可以在其中注入自己的实例提供程序(这样您就可以调用重载的构造函数)。
行动:
通过继承IInstanceProvider创建新的实例提供程序。重写GetInstance()和ReleaseInstance()方法。 on GetInstance()方法使用重载的构造函数返回一个新的服务实例。
创建一个新的服务行为(比如InstanceProviderBehavior)属性(通过从Attribute和IServiceBehavior中继承)以应用于服务合同,以便服务调度程序查找您自己的自定义实例提供程序。
这是一篇很棒的文章 - http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/31/wcf-extensibility-iinstanceprovider.aspx