2010-06-09 44 views
0

我是一名asp.net开发人员,对模式和架构不太了解。如果您可以请在这里指导我,我将非常感激。什么模式是asp.net中的分层体系结构?

在我的web应用程序中,我使用4层。

  1. 网站项目(具有网络形式的背后CS文件+代码,后面的CS文件中的用户控件+代码,母版页后面CS文件+代码)

  2. CustomTypesLayer类库(具有自定义类型,枚举,DTO的,构造,获取,设置和验证)

  3. BusinessLogicLayer类库(其所有的业务逻辑,规则和所有调用DAL功能)

  4. DataAccessLay呃类库(只有类与数据库通信)。

- 我的用户界面只是调用BusinessLogicLayer。 BusinessLogicLayer会自行处理数据,并为数据调用DataAccessLayer函数。

-Web表单不直接调用DAL。

-CustomTypesLayer由所有图层共享。

请指导我这是一种模式吗?我虽然可能是MVC或MVP,但页面中有代码隐藏在文件中,这些都让我感到困惑。

如果它没有模式是靠近某种模式?

+1

您的CustomTypesLayer听起来像您的域名。这通常会根据您的设计跨越所有图层,通常不会自行考虑图层。 – JamesC 2010-06-09 07:41:49

回答

2

这不是四层,这是三层,所以它是一个普通的三层架构。

CustomTypesLayer根本不是图层。如果是这样,用户界面将仅使用自定义类型层,并且不会直接与业务层交谈,并且数据访问层不会使用自定义类型层。

的三层架构是一个Multitier architecture

1

看看实体框架或LinqToSQL。他们都可以从数据库自动生成数据访问层。这将为您节省很多(无聊)工作,并让您专注于有趣的层面。

代码隐藏与架构没有任何关系 - 它更像是一种编码风格。这是一种将逻辑与表示分离的方式。您提到的任何架构都可以使用或不使用代码隐藏。

您似乎在描述标准的三层体系结构。 MVC是一种描述你的图层和用户如何交互的模式。用户请求一个页面(由一个视图表示),该页面从控制器请求其数据。控制器与您的业务层(模型)进行通信,以提取正确的数据并将其传递给您的视图进行显示。如果视图是交互式的,例如它允许用户更新某些内容,那么这个用户操作行为将被传回给您的控制器,控制器会针对业务层调用相关方法以将更新保存到数据库中。

希望这会有所帮助。

+0

感谢Mikey的这么好的回复,但请让我在这里有两个连接问题,我希望你能指导。 1.实体框架和LinqToSQL哪一个更好,甚至Linq是LinqToSQL最好用? 2.通过使用Entity Framework或Linq进行分层是什么? 谢谢 – haansi 2010-06-11 09:38:21

+1

看看这个问题的意见,来自比我更懂行的人的意见... http://stackoverflow.com/questions/8676/entity-framework-vs-linq-to-sql 总之, LinqToSQL是一种快速(也许是肮脏)的方法,而EF则是一个庞大的,包含所有的ORM,它将实体引入为一个新的抽象层。这是非常强大的,但也可以是一个威胁。无论你选择哪一种,你仍然可以在查询中使用LINQ语句。 有人说LinqToSQL已经死了,未来在于EF。看起来,EF可以完成LinqToSQL可以完成的所有工作,等等。 – 2010-06-11 12:25:31

2

至于模式走,我建议得到认真处理这些:

  • 我biggets一英里最喜欢的是Dependency Inversion Principle(DIP),通常也被称为(或至少非常相似)Inversion of control (IoC)和依赖注射剂;他们很受欢迎,所以你应该没有问题找到更多的信息 - 例子。抽象出接口后面的数据访问实现真的很好。
  • Lazy Load也是有用的。有趣的是,有时你实际上可能想要做相反的事情 - 在一个巨大的爆炸中获得所需的所有数据。
  • Factory pattern是一个非常知名的 - 有很好的理由。
  • Facade pattern也帮助我摆脱困境。

如果您还没有看过,维基百科有一个相当不错的Software design patterns列表。

最后要注意的是,有三种基本类型的模式(加上第四类多线程/并发);它可以帮助刚刚知道这些类别,并承担他们记住,当你做这种事情,他们是:

  • 创力
  • 结构
  • 行为
2
+0

您好CodeToGlory, 我读过这篇文章,很高兴谢谢分享。但是,苏格兰人没有评论服务器端数据验证应放在代码后面的.cs文件中,在商业实体还是业务逻辑层中?你可以请指导。其次,他在图中显示了安全,运营管理和沟通层,他没有在文章中提到这些。 请在此指导。 – haansi 2010-06-11 09:34:49