我正在使用fsharp wsdl类型提供程序生成客户端类以使用wcf服务。但是,我无法在服务器端使用相同数据协定的不同服务之间重用相同的数据协定。
我使用svcutil阅读了一些讨论C#wcf项目的材料,但是在使用wsdl类型提供程序机制时如何实现呢?
这是我的问题的一个例子:
因此,以下数据对象不能由两个不同的服务共享(实际上),如:
[<DataContract>]
type QuantityUnit () =
[<DataMember>] member val Quantity = 0. with get, set
[<DataMember>] member val Unit = "" with get, set
此数据对象由以下人员使用:
[<ServiceContract>]
type IQuantityUnitService =
inherit IDataProviderServiceContract
[<OperationContract>]
abstract member NewQuantityUnit: quantity: float * unit: string -> QuantityUnit
和
[<ServiceContract>]
type ICalculationService =
inherit IDataProviderServiceContract
[<OperationContract>]
abstract member CalculateQuantityUnit: quantity: QuantityUnit -> QuantityUnit
但是,必须为每个服务生成两个服务的生成类QuantityUnit,并且不能从一个服务传递到下一个服务。
答案 0 :(得分:1)
鉴于这个问题没有得到回应而且同时我无法提出解决方法,我认为可以假设事实上,在Fsharp中实现的Wcf服务之间的类型重用是不可能的。 因此,由于其他原因,我切换到ServiceStack。投资最值得。它更简单,更快速,重用是一个非问题,因为您可以直接引用和重用您的数据协定。