我正在设计一个WCF服务,客户端将调用该服务从服务器获取GUID列表。
我应该如何定义我的终端合同?
我应该只返回一个数组吗?
如果是这样,那么数组是否会被WCF序列化?
答案 0 :(得分:2)
如果您要使用面向SOA的服务,Guids将需要设置为字符串。客户将负责将它们变回任何东西。至于Guids的列表,它们将作为数组返回。如果您与此类
的常规Generics List Object of Guids签订了合同[DataMember] List<Guid> SomeGuidsGoInHere {get;set;}
然后你会得到一系列Guids。这可能会导致兼容性问题。你要做的是设置一个像这样的字符串列表。
[DataMember] List<String> SomeGuidsAsStringsGoInHere {get;set;}
答案 1 :(得分:0)
如果客户端应用程序有足够的东西来调用Web服务,为什么不使用内置API在本地创建UUID?
答案 2 :(得分:0)
在Visual Studio中进行开发时,Microsoft在为Guid作为参数或返回Guid的方法生成WSDL时提供了一些特殊的魔力;它对Guid施加了限制。
您可以在WCF和常规网络服务中将Guid归结为您的内心。
Guid Simple Type如下:
<s:simpleType name="guid">
<s:restriction base="s:string">
<s:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
</s:restriction>
</s:simpleType>
为一个以Guid作为参数的方法生成WSDL:
<s:element name="GetToken">
<s:complexType>
<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="objUserGUID" type="s1:guid" />
<s:element minOccurs="0" maxOccurs="1" name="strPassword" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>