与WCF Web服务数据库一起使用的最佳模式和技术

时间:2013-09-07 14:28:16

标签: .net wcf entity-framework design-patterns

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

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

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

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

我应该使用存储库模式和工作单元吗?首先是codefirst还是数据库?

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

2 个答案:

答案 0 :(得分:0)

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

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

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

至于存储库模式=>实体框架的DbContext本身就是工作单元(将鼠标悬停在它上面并阅读它所说的内容)。无论您是使用Code First还是数据库优先,更重要的是优先选择而不是优化。两者都适合你。

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

答案 1 :(得分:0)

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