【问题标题】:For a multi platform client end, do I NEED WCF or can I get by with MVC 3?对于多平台客户端,我需要 WCF 还是可以使用 MVC 3?
【发布时间】:2012-04-06 11:18:49
【问题描述】:

我有一个 MVC 3(具有数据访问层的 3 层)中的 Web 应用程序,我想将其扩展到本机 iPhone 和 Android 等...作为演示设备。

我可以只使用相同的控制器并进行一些修改,还是将访问逻辑组织到 WCF 服务中更好?

在良好的可扩展性和性能方面,您有什么建议?

【问题讨论】:

    标签: wcf asp.net-mvc-3 mobile n-tier-architecture


    【解决方案1】:

    为了可扩展性,最好将您的业务逻辑放在您的 UI(MVC 站点、iPhone 应用程序、Android 应用程序)简单调用的服务中。我个人建议在 WCF 上使用 ServiceStack,因为它简化了对 POCO 对象的调用。这将有助于可扩展性和维护,因为它可以更清晰地分离您的关注点(我建议您阅读the SOLID principles)。如果您需要对 UI 进行更改,这些更改不会影响您的业务逻辑(这可能会导致您的 iPhone 应用发生更改)

    【讨论】:

    • 那篇 SOLID 原则文章很难理解,但我真的很感兴趣,您对其他阅读有什么建议吗?
    【解决方案2】:

    这一切都取决于。你当然可以走贾斯汀推荐的路线。不过,这方面有很多工作要做。

    MVC4 具有 WebAPI,它在类似 MVC 控制器的环境中为您提供 RESTful 服务。这使您可以轻松地将服务层添加到您的 MVC 应用程序中。

    对于任何大规模,您可能应该使用完整的 WCF 实现。

    仅供参考,MVC4 处于测试阶段,但有一个上线许可证,您可以在不安装 MVC4 的情况下安装 WebAPI,它可以通过 nuget 获得。

    【讨论】:

    • 因此,如果我当前有一个单元测试项目、域项目和 MVC 3 Web 项目,我假设添加 WCF,我会将其插入域和 MVC 之间。这样的 4 层架构有什么好的指导方针吗?
    • @MaxAlexander - 这取决于。您可以将 WCF 服务层集成到您的域中。如果这是访问它的唯一方法,那么这可能是最好的选择。但是,如果您希望您的域成为独立模型,那么可以。单元测试不是“层”的一部分。
    • 哦,好吧。因此,如果数据库连接到域模型中的实体,并且使用存储库来操作域实体,则 WCF 用作与存储库方法的通信端口。那么假设 MVC 专门使用严格的视图模型,那么将 MVC 与 WCF 连接起来的最佳方式是什么?
    • 对,但是如果我想在 WCF 和 MVC 之间公开 SOAP 对象怎么办? WCF 是否应该专门在视图模型中与其客户端进行通信?还是其他中间模型?我不希望客户知道域模型是什么(这不是很好的做法吗?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2013-11-29
    • 2022-11-07
    • 2012-10-24
    • 2013-03-15
    • 2011-08-03
    • 2016-02-14
    相关资源
    最近更新 更多