2011-07-27 54 views
0

我最近开始学习ASP.Net MVC及其各种功能MVC_3_MUSIC_STORE + CODE
它看起来非常结构化和简单易懂。将ASP.Net MVC转换为N层

我读到有关企业应用程序以及它们是如何分层/分级在不同的部分
(逻辑/物理)

我想知道(学习)怎么办分离(转换)上述MVC_3_MUSIC_STORE成n - 层或3层应用程序(因为我们已经有一个工作示例)为了有一个清晰的关注点分离。 我没有太多的经验。

需要做什么改变?

将会需要哪些不同的DTO或POCO? 以上示例使用从控制器到视图周围的POCO实体。 假设使用EF代码,它会保持不变。

另外我想知道如果WCF Webservice作为数据访问层引入将需要什么更改。即,取代从DAL检索数据,客户端将向WCF Web服务请求数据。客户端可以是Web应用程序或WinForms或Sliverlight应用程序。
[DAL < - >WCF WS] < - >N个客户端

很想知道的各种方法。

示例代码会有帮助和/或相同的示例。

编辑1 - 增加
一个我注意到的事情是,当我移动模型类从模型文件夹复制到新的项目“基于myModel”我将不得不重新添加引用“System.ComponentModel.DataAnnotations”和新模型项目中的“System.Web.Mvc”?

这怎么可以避免?这些验证如何移到业务层?

References will be lost if moved to new project

编辑2
寻找类似于将需要此 Advice For A Newbie About N-Tier Applications

回答

2

通常情况下,唯一改变的东西是,你会提供存储库(DAL层)的实现,其将调用WCF Web服务来获取域模型,而不是直接与数据库交谈的EF DataContext。对控制器和视图完全透明的更改。

+1

这并不是“使其成为N层”,这使得它面向服务(这本身就是一个超载的术语)。 UI层+业务层+数据存储层= 3层架构。该任务中没有任何要求Web服务。 –

+0

@Eric J.,虽然我对这些术语并不熟悉,但我绝对会这样做。 –

+0

根据什么要求设置?与直接访问数据库相比,WCF速度较慢(与本机HTTP处理程序相比,WCF速度也较慢)。在许多情况下,通过Web服务公开功能是有价值的,但也有成本。应用解决方案而不质疑问题会导致糟糕的架构选择。我们的解决方案每天可以处理数十亿次请求,如果我们将WCF作为附加层引入,则硬件几乎需要两倍。有关术语的定义,请参阅http://en.wikipedia.org/wiki/Multitier_architecture –