InfoQ

新闻

用新一代.NET技术构造N层Web应用

作者 王翔 (Vision Wang) 发布于 2008年2月26日 上午5时33分

社区
.NET
主题
故事和案例分析,
架构
标签
LINQ

近期,Dan Wahlin在其博客上发表的一篇名为《Building an N-Layer ASP.NET Application with LINQ, Lambdas and Stored Procedures》的文章颇引人注目,该文使用.NET 3.5版本新引入的LINQ、Lambda表达式实现了一个基于Northwind数据库的在线电子商务应用,该文同时也勾起.NET社区对如何设计下一代N层应用的思考和讨论。

该应用被划分为4个层次,除了表现层(Presentation Layer)、业务逻辑层(Business Layer)和数据访问层(Data Access Layer)之外,抽象了一个业务模型层(Model Layer),该层用XSD(XML Schema)定义了与具体数据访问技术无关的业务实体模型,目的是保证无论底层数据访问技术采用LINQ to SQL设计器生成的类型、还是自己组织Lambda表达式或者是直接通过访问存储过程的方式,都可以向上层应用提供模型层定义的标准动态业务实体。该示例应用的逻辑分层如下:

 

说明:

  • 展现层采用非异步方式的标准ASP.NET;
  • 业务逻辑层基于模型层的对象实体,借助数据访问层ORM之后的关系对象完成与持久层的交互;
  • 数据访问层采用LINQ方式,通过访问LINQ设计器生成的关系对象、自定义Lambda表达式生成的关系对象以及借助存储过程生成的关系对象,所有关系对象按照模型层的要求生成匹配的业务实体;

 部署上,业务层、模型层和数据访问层的程序集部署在Web服务器上,供ASP.NET页面的数据绑定服务端控件调用。

从技术使用上,这个示例比较适合作为LINQ的动手实验项目,不过如果再次审视这个项目,似乎更应该称之为“玩具”应用:

  • 计算扩展能力相对薄弱,整个体系的计算全部集中在Web服务器部分,而且Business、Model、Data Access三层间没有抽象出代理类型,因此如果不做改造的话无法把相关计算部署到其他进程或服务器内;
  • 虽然是一个业务示例,而且也牵涉面向数据的CRUD操作,但欠缺了有关事务性控制的内容;
  • 作为一个面向Web的开放式应用,在Model定义部分一直在采用.NET自己的类型定义业务实体,阻滞了其他平台(J2EE、Ruby、PHP…)与之互操作的能力;
  • 因为采用标准ASP.NET访问二进制程序集的方式,并没有开放的服务接口,影响外部应用的进一步扩展,以及B2B操作的协同;考虑到Customer表、Country表结构相对简单的特点,如果每个Web操作都需要提交,可能用户体验要逊色些,因此可以考虑增加异步处理能力;
  • 还有一个就是如果要扩展为面向实际生产的系统,可能需要增加全程的运行监控、维护和安全控制措施;

相关赞助商

InfoQ中文站.NET社区,关注.NET和微软的其他企业开发解决方案,通过新闻、文章、视频访谈和演讲以及迷你书等为中国.NET社区提供一流资讯。

没有回复

回复

独家内容

从卓越工程角度看微软中国开发团队的成长

开发团队的成长离不开优秀的人才,简捷有效的流程和高效率工具这三个卓越工程系统中的重要因素。本文作者从这三个因素分析了微软中国开发团队是如何“从优秀到卓越”的。

利用Ruby简化你的Java测试

本文是Productive Java with Ruby系列文章的第一篇,我将从单元测试这个话题开始,让Java的开发人员能够在实际工作中利用Ruby提高工作效率。

与赵进聊SaaS

InfoQ中文站有幸与阿里软件的首席架构师赵进在一起探讨了SaaS的相关话题,包括SOA和ASP与SaaS的异同、云计算、SaaS的前景、它的关键技术、技术瓶颈等等。

在ESB中选择路由还是编配?

在这篇文章中,Adrien Louis和Marc Dutoo在一个典型的ESB场景中讨论了编配和路由的区别和优缺点。他们讨论了几种连接服务的方法,从使用如自定义路由这样的低级别方法,到使用如工作流和编配这样面向业务的高级别方式,并总结说不存在“一边倒”的解决方案。

分布式系统中的一致性和可用性

本文是根据7月26日InfoQ中文站在杭州举行的QClub活动(第三期)后半程小组讨论总结而成。主要内容包括如何在SOA系统中实现服务编排,如何保证分布式系统中的一致性和可用性,以及如何在实施SOA的过程中控制接口的粒度等。

虚拟化导论

人们很容易想当然的以为虚拟化技术仅仅应用于服务器。而在现实中,虚拟化这一苏醒的概念正被运用于各个层面,其中包括网络,存储以及应用基础架构。在这篇导论中,InfoQ将深入每个方面,详尽向您描述虚拟化技术的运用以及其优点与不足。

用户故事估算技巧

作为开发者,同时也是ThoughtWorks的咨询师,Jay Fields总结了自己估算用户故事的有效技巧。

InfoQ案例研究:纳斯达克市场回放

在这篇案例研究中,InfoQ对Adobe AIR和Amazon的简单存储服务(Simple Storage Service ,S3)在NASDAQ市场回放程序(NASDAQ Market Replay)中的应用进行了详细的分析。