WCF服务从服务器获取GUIDS列表,我的合同应该是什么样的?

时间:2008-11-07 20:53:39

标签: wcf

我正在设计一个WCF服务,客户端将调用该服务从服务器获取GUID列表。

我应该如何定义我的终端合同?

我应该只返回一个数组吗?

如果是这样,那么数组是否会被WCF序列化?

3 个答案:

答案 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>