2016-01-15 75 views
1

我有一個WCF服務有一個BaseForm,它被無數次(100+)繼承,有些(10+)也有多層繼承。所有派生形式都列爲KnownTypes。WCF KnownTypes參考生成

我遇到的問題是服務啓動並生成客戶端引用所花費的時間。使用WCF Test Client作爲測試,大約需要10分鐘才能完成。如果我沒有引用知識類型(或僅列出一對),則需要大約1.5分鐘才能完成。

無論如何,看看發生了什麼,它爲什麼要這麼久?還是有比標準更好的方法?

乾杯

回答

0

爲您的服務生成的WSDL有多大?根據這些已知類型的大小,您可能會在「服務參考」或代理中包含大量數據。

作爲KnownType包含的每個對象都將被添加到WSDL或服務元數據中。這將包括在最低限度,

  • 對象的全名(包括命名空間和XML命名空間)的對象上的所有屬性的
  • 列表中的所有類型的所有屬性的
  • 描述,即非簡單類型可以有很大的描述。

當您連接到服務請求的元數據,作爲WCF測試客戶端的功能在提供服務的URL,它需要

  1. 要求服務產生元數據文件,以及服務將調查所有對象及其屬性
  2. 通過網絡發送此內容 - 不是一個大問題,但不是免費的
  3. 反序列化成一個代理;在WCF測試客戶端中,這意味着生成與每個對象的每個屬性類型相關的表單上的字段。

你能做些什麼呢?你可能不需要做任何事情。這是一次性操作 - 一旦您的服務客戶端知道可以發送和接收的類型,它就會存儲它們(作爲生成的代碼)並重用它們。