WCF KnownTypes引用生成

时间:2016-01-15 12:38:29

标签: c# wcf known-types

我有一个WCF服务有一个BaseForm,它继承了很多次(100+),一些(10+)也有多层继承。所有派生形式都列为KnownTypes。

我遇到的问题是服务启动和生成客户端引用所需的时间。使用WCF测试客户端作为测试,它需要大约10分钟才能完成。如果我没有引用KnowTypes(或只列出一对),则需要大约1.5分钟才能完全完成。

有没有看到发生了什么,为什么这么长时间?还是有比标准更好的方法?

干杯

1 个答案:

答案 0 :(得分:0)

为您的服务生成的WSDL有多大?根据这些已知类型的大小,您可能会在“服务引用”或代理中包含大量数据。

作为KnownType包含的每个对象都将添加到WSDL或服务元数据中。这将至少包括

  • 对象的完全限定名称(包括命名空间和xml命名空间)
  • 对象上所有属性的列表
  • 所有类型的所有属性的描述,即非简单类型可以有大量描述。

当您连接到服务以请求元数据时,正如WCF测试客户端在您提供服务URL时所做的那样,它将需要

  1. 要求服务生成此元数据文档,该服务将调查所有对象及其属性
  2. 通过网络发送此内容 - 这不是什么大不了但不是免费的
  3. 反序列化为代理;在WCF测试客户端中,这意味着在表单上生成与每个对象的每个属性类型相关的字段。
  4. 你能做些什么?你可能不需要做任何事情。这是一次性操作 - 一旦您的服务客户端知道可以发送和接收的类型,它就会存储它们(作为生成的代码)并重用它们。

相关问题