【问题标题】:WCF N-Tier ArchitectureWCF N 层架构
【发布时间】:2012-02-13 23:50:34
【问题描述】:

我正在开发一个相当简单的多层应用程序(WPF、WCF、EF 4 和 SQL)。就架构而言,我们计划包含一个“通用”项目,其中将包括实体和服务合同。

将实体和服务合同放在单独的程序集中有什么优点/缺点?还是将它们放在一起通常很好?

我很想听听别人的意见。

谢谢!

【问题讨论】:

    标签: c# wcf entity-framework architecture


    【解决方案1】:

    在单独的程序集中拥有合同,通过将合同程序集提供给开发人员,您可以通过将合同程序集注入到不同程序集中的不同实体,他将实现它并为您提供一个 dll,您可以将其放入项目文件夹并使用 IoC 框架(如 StructureMap)注入其中,无需重建,

    将合同放在包含实体的同一程序集中,将合同与实现联系起来......

    【讨论】:

    • 感谢您的回复。如果合同和实体在同一个程序集中,它们肯定会紧密耦合。
    【解决方案2】:

    如果您与其他 .NET 平台使用者一起使用 RESTful 架构 - 将服务合同放在单独的程序集中(共享)会很有帮助,这样您就可以轻松地与 RESTful 使用者共享您的操作和数据合同,而不会暴露任何不必要的数据访问您的客户的组件。

    因此,我建议您将数据访问和服务合同隔离开来。

    【讨论】:

      【解决方案3】:

      这正是我为我设计的电子商务 n 层应用程序构建设计的方式。

      有两个通用库 - 一个用于 DTO,另一个用于接口。

      然后客户端和服务器包含这些库,并使用通用类型生成服务代理。

      这里的主要优点是易于编译 - 更改接口时无需重新创建代理,客户端和服务器会自动更新。

      我还有一个实用程序应用程序,其中包含我需要的所有帮助类型的东西。

      编辑:抱歉,请重新阅读您的问题。就我而言,我有多个接口库 - 一个用于工作流库(具有组合接口),另一个用于服务(组合成工作流操作的东西)

      所以在我的情况下,将它们分开是有意义的。

      如果您只有一组接口,并且这些接口都使用您的 DTO,则没有理由将它们分成两个库 - 一个就足够了。考虑一下,如果您将来可能需要在更多接口库之间共享您的 DTO,在这种情况下,请从一开始就将 DTO 与接口分开。

      【讨论】:

        猜你喜欢
        • 2011-02-01
        • 2011-05-14
        • 1970-01-01
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多