WCF服务上的对象返回类型

时间:2012-10-28 00:14:29

标签: wcf object return

我在我的应用程序中使用WCF服务。我的计划是设计服务合同如下:

[ServiceContract]
public interface IService
{

    [OperationContract]
    object ServiceCall(string typeName, string methodName,  object[] methodParameters);
}

我将通过客户端的给定参数调用ServiceCall方法。

然后在服务器端我将创建方法信息并调用指定的方法并将响应返回给客户端。 通过这种方式,单个方法将解决我所有的远程cals。因为WCF中的已知类型问题我无法创建这样的service.return类型和方法参数object [] methodParameters不能是对象类型

我该如何解决这个问题?或者我可以做什么?

1 个答案:

答案 0 :(得分:1)

定义明确的数据和服务合同的一些原因更可取,因为:

  • 它为您的消费者提供了明确的服务期望。如果没有它,您将增加文档要求
  • 使您的服务更容易被发现并且更容易消费
  • 允许WCF对消息进行类型检查
  • 允许详细控制对象(序列化)的方式

但是,如果您想要一个操作来统治它们,您可以尝试这样的事情:

[ServiceContract]
public interface IService
{

    [OperationContract]
    MyResponse ServiceCall(IMyRequest request);
}

你的IMyRequest会是这样的:

public interface IMyRequest{
    string TypeName {get; set}
    string MethodName {get; set;}
}

然后,您将使用每个调用所需的参数对象对其进行扩展,并使用KnownTypes对其进行修饰。你无法真正解决这个问题。由于WCF不允许您仅指定“对象”(并且它不应该因为双方都需要知道他们在谈论什么),因此您至少需要明确定义您的请求对象。可以使用单个OperationContract方法,但正如我上面提到的,我认为你最好使用显式操作。