ASP.NET MVC网站& WCF Web服务 - 共享功能

时间:2013-03-24 22:14:52

标签: c# asp.net-mvc wcf web-services architecture

我遇到以下情况:我必须创建一个网站和一个 share a part of the functionalities 的网络服务。

这就是为什么我不想两次编写代码。

我想到了以下架构:

MyApp.BusinessLogic - >这里我们将DataModels保存到数据库

MyApp.DataAccess - > DataModels&实体&映射


MyApp.UI.Models - >的ViewModels

MyApp.UI.ServiceLayer - >接受业务逻辑,为网站创建UI ViewModel,并将ViewModel转换回DataModel,以便在BusinessLogic Layer的帮助下进行保存

MyApp.WebSite


MyApp.WS.Models - > Ws Models,这些将是客户端和WS之间传递的对象

MyApp.WS.ServiceLayer - >访问业务逻辑,为Web服务创建WS模型,并将WS.Models转换回DataModel,以便在BusinessLogic Layer的帮助下进行保存

MyApp.WebService


架构是否过度杀伤?我会遇到什么问题?我是否会在ASP.NET MVC网站中遇到控制器问题?

2 个答案:

答案 0 :(得分:1)

当我设计我的应用程序时,我就是这样做的。我唯一的问题是模型的枯燥复制到视图模型。克服此问题的最佳方法是使用AutoMapper。

我会创建一些单元测试,因为在更改服务时存在破坏应用程序的高风险(反之亦然)。单元测试会在早期告诉你。

答案 1 :(得分:0)

基本定义:)

如果您想减少代码使用量,为什么不创建您的服务,那么只需在应用程序中使用它?

所以,如果你有类似的东西......

Foo.DataAccess
-Foo.BusinessLogic
--Foo.ServiceLayer

然后引用的是:
Foo.WebService(包括用于查看/更新的模型......但可能在外部进行简化)

然后使用
Foo.WebApp
让这个消耗Foo.Webservice代表它进行数据调用

使用UI和Web服务模型可以增加代码重复,您可以使用Fluent验证等服务来处理验证,并增强基本验证系统。