新ASP.NET Web应用程序的体系结构

时间:2010-05-21 17:19:39

标签: c# asp.net-mvc architecture asp.net-ajax

我正在维护一个当前只是一个Web服务(使用WCF构建)和一个数据库后端的应用程序。 Web服务是分层构建的,具有linq-to-sql数据访问部分,其中核心功能位于自己的程序集中,并且包含WCF代码的Web服务程序集。核心程序集还处理所有业务逻辑规则(实际上很少)。

客户现在需要应用程序的Web界面,而不是仅通过使用Web服务的其他应用程序访问它。我对现代Web应用程序设计很遗憾,所以我想就Web应用程序使用的体系结构和框架提出一些建议。 Web应用程序将使用具有业务规则的相同核心程序集,并将linq-to-sql数据访问层用作Web服务。

我想到的一些概念是:

  • ASP.NET MVC(或MVC-2)
  • Web表单
  • AJAX控件 - 可能允许AJAX控件通过JSON访问现有的Web服务。

我还应该考虑更多的概念吗?哪一项最适合新项目?

开发工具是面向.NET 3.5的Visual Studio 2008 Team Edition for Developers。如果它可以带来任何好处,则可以升级到Visual Studio 2010 Premium(或者甚至是Ultimate)。

5 个答案:

答案 0 :(得分:11)

绝对深入研究 ASP.NET MVC2

我们现在正在使用ASP.NET MVC2开发所有项目。它不仅仅是高度可扩展的。它也是高度可测试的。从长远来看,这会带来更好的可维护应用程序。

WebForms vs. MVC2积分 - (说出经验):

<强>可扩展性:

在我们公司,我们有很多使用WebForms的应用程序,然后由我们根据客户的需要进行更新和更改。

我认为您的客户将在不久的将来要求对应用程序进行更多更改。打电话给其他服务,也许你必须修改最终产品的部分内容以符合他们的意愿。

使用即将推出的Cloud ComputingWindows Azure平台,您可能需要跟上代码。

ASP.NET MVC绝对支持能够随时扩展应用程序的概念。

我记得我们的一位客户走在我身边,要求我为他们的应用程序提供扩展程序(他们有一个会员管理系统),该功能将包含一些链接,用于将当前视图导出为csv文件,所以他们可以用它做办公室的东西(主要是连续字母)。

设置该功能并不是一个大问题。 (花了大约2个小时,包括编写测试) - 让我们去测试:


<强>可测性:

使用WebForms我们并没有太多兴趣编写测试,因为这样做真的很痛苦。 我记得写过一些测试至少有一些证据,但让我们放弃那个话题..(:p)

我们对自定义类进行了测试,但我们无法真正测试WebForms中的所有EventHandler。

由于这个可测试的环境,我们的CodeBase更清洁,更安全。我只是查看一些代码,修改它,运行所有测试并且:哦,它打破了奇怪的行为! - 让我们再次解决这个问题。早些时候,我记得和我的同事一起调试并试图找出这些错误数小时。

使用ASP.NET MVC2,我们现在缺乏测试! 我们要求所有类型的人(甚至是非Web用户)提供我们可以提供给TestSuite的测试用例。

是的,也有一些AJAX控件:


<强> AJAXability:

您询问了AJAX控件,并结合ASP.NET MVC我强烈建议您查看Telerik ASP.NET MVC UI Controls

如果这不适合您,我们也会广泛使用jQueryjQuery UI

使用ASP.NET MVC和HTML视图,这些库不仅仅是一种乐趣,它们看起来非常漂亮。

不再有random-html-tag-id-value自动生成了!

但我最喜欢的是:你终于可以重新使用你的代码了。


除了那些框架之外,还有更多的东西,还有T4模板系统。使用Html.EditorFor()方法为 ViewModels / DomainModels 自动支架,当然有一种简单易用的方法可以使用IoC和{ {3}}范例。

假设您主要使用.NET Framework相关标签提出问题,您可能会坚持使用它。

为了保持帖子的完整性,还有其他框架同样好(甚至更好):

CakePHP

答案 1 :(得分:1)

如果您需要对数据进行简单的CRUD访问,还可以使用DynamicData

答案 2 :(得分:0)

Web Service Software Factory (WSSF)可能会在您的情况下派上用场。

这将允许您在使用WCF(或标准Web服务通信协议)设计服务器/客户端通信时定义合同(返回的XML实体(如果选择XML)等)。

WSSF赞成ASP.NET MVCASP.NET MVPMVP架构的简单示例显示为 here ,以及 this article

就我而言,我经常使用类似混合的架构来使用MVCMVP,因为两者都有不同的强点,它们组合起来填补了彼此的改进点。

答案 3 :(得分:0)

我也建议调查Silverlight。

http://www.silverlight.net/learn/

答案 4 :(得分:-1)

我认为在管理页面(站点)内的客户端站点和WebForms上使用MVC