代码之家  ›  专栏  ›  技术社区  ›  Gabriel Isenberg

在对象模型设计中,您遵循哪些WCF最佳实践?

wcf
  •  12
  • Gabriel Isenberg  · 技术社区  · 16 年前

    这是一个不必要的抽象层次吗?使用DataContract信息检查和标记现有类库是否存在任何固有的缺陷?

    另外,顺便问一下,您如何处理错误条件?服务抛出的异常(InvalidOperation、ArgumentException等)是否被普遍接受,或者通常有一个级别?

    1 回复  |  直到 10 年前
        1
  •  17
  •   Ubiguchi    16 年前

    此外,在复杂的企业集成情况下,您通常有一个由多个应用程序共享的规范数据格式(数据和消息契约),这迫使每个应用程序将规范数据格式映射到其内部对象模型。

    如果您需要一个工具来帮助分离数据契约/消息契约等,那么请查看Microsoft的Web服务软件工厂 http://msdn.microsoft.com/en-us/library/cc487895.aspx

    对于异常,WCF会自动将所有异常包装在FaultExceptions中,这些异常被序列化为wire格式的错误。

    还可以抛出泛型故障异常,这允许您指定要包含在序列化故障中的其他详细信息。由于web服务操作引发的故障是其契约的一部分,因此最好在操作声明中声明故障:

    [FaultContract(typeof(AuthenticationFault))]
    [FaultContract(typeof(AuthorizationFault))]
    StoreLocationResponse StoreLocation(StoreLocationRequest request);
    

    throw new FaultException<AuthenticationFault>(new AuthenticationFault());
    

    如果你想要更多的细节,那就大声喊;这么长时间以来,我一直在生活和呼吸这些东西,我几乎靠做它谋生;)