0

我正在启动一个新的移动应用程序,我想设置 web 服务和一个服务器数据库来使用。

我决定使用 .net WCF Web 服务和 SQL 数据库,因为我有这方面的经验。我还将使用实体框架 5。

该项目将有一个大数据库,一些表可能有数百万行。

我的问题是,我应该使用哪些最佳技术或模式?我做了一些研究,但我找不到关于什么是最好的选择的明确答案。

我应该将存储库模式与工作单元一起使用吗?代码优先还是数据库优先?

我不确定所有可用的东西,但一个简单的答案就足以让我开始,我会做剩下的研究(例如:使用这个和这个和这个)

4

2 回答 2

0

您应该明确地使用存储库和 UOW 模式,并从使用 EF 的代码优先方法开始。有很多关于此和领域驱动设计的书籍。此外,如果它是一个大型数据库,您肯定不会仅仅依赖实体框架,而是使用自定义,因为可能会出现性能问题。如果它不是一个原生的移动应用程序,而是一个网络,那么 REST 就是要走的路。还要检查移动休息服务。还取决于您的业务是否考虑云就绪应用程序(考虑 Windows Azure)。

于 2013-09-07T20:07:22.343 回答
0

WCF 支持带有 JSON 的 REST 服务,这是为移动应用程序构建 Web 服务的最佳方法。

但是,Microsoft 已决定将 WCF REST 与 WCF 的其余部分分开,因此它现在称为 Web API。

我给你的建议是学习 Web API 并使用它。您将失去对“添加服务参考”的支持,但如果您正在构建不基于 Microsoft 技术的移动应用程序,那无论如何也不会有多大好处。

至于存储库模式 => Entity Framework 的 DbContext 本身就是工作单元(将鼠标悬停在它上面并阅读它所说的内容)。无论您将使用 Code First 还是 Database First 更多的是偏好问题,而不是真正的优化问题。两者都应该为你工作。

由于您将拥有数百万行,我强烈建议您考虑一些缓存策略。如果您的行不会经常更改,您可以使用标准缓存方法。否则,如果您的行经常更改,您可能会使用一些代理缓存服务,该服务将与数据库同时更新,但通过将数据存储在内存中进行查询时会更快地提供结果。您可以使用自己的基于 WCF 的缓存,该缓存将通过命名管道与您的 Web API 进行通信,或者采用已经构建的解决方案,例如 MemCached 或 Redis。

于 2013-09-07T19:16:51.570 回答