2010-05-21 118 views
5

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

客户现在想为应用程序提供Web界面,而不是通过其他正在使用Web服务的应用程序访问它。我对现代Web应用程序设计很迷茫,所以我想就如何使用Web应用程序的体系结构和框架提出建议。 Web应用程序将使用与业务规则相同的核心程序集和linq-to-sql数据访问层作为Web服务。

我想过一些概念是:

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

有没有更多的概念我应该看看?哪一个最适合新项目?

开发工具是针对.NET 3.5的Visual Studio 2008 Team Edition for Developers。如果它具有任何优势,则可以升级到Visual Studio 2010 Premium(甚至可能是Ultimate)。

+0

我会建议使用.NET 4,如果它是在所有的选项。对WinForms和WCF进行了很多改进。 – R0MANARMY 2010-05-22 18:39:26

+0

@ R0MANARMY你会提供一个列出WCF/WinForms改进的源代码吗? – 2010-05-24 21:08:59

回答

11

内客户端的网站和的WebForms MVC绝对挖成ASP.NET MVC2

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

的WebForms与MVC2点 - (讲出来的经验):根据需要

在我们公司,我们有很多的使用,然后被我们更新和改变的WebForms应用:

可扩展性由我们的客户。

我认为您的客户将在近期申请更多的应用程序更改。打电话给其他服务,也许你将不得不返工部分最终产品以符合他们的意愿。

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

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

我记得我们的一位客户走过来问我为他们的应用程序(他们有一个会员管理系统)的扩展,该功能将包含像链接导出当前视图为csv文件,所以他们可以用它做办公用品(主要是连续字母)。

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


可测性:

使用WebForms我们真的没有太大的兴趣写作测试,因为它是一个纯粹的做痛所以。 (:p)

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

由于这个可测试的环境,我们的CodeBase使用起来更清洁和节省。我只是检查一些代码,修改它,运行所有的测试,并且:哦,它打破了奇怪的行为! - 我们再来修复一下。早些时候,我记得和我的同事一起调试,并试图在几个小时内找到这些错误。

用ASP.NET MVC2我们现在是测试! 我们要求各种各样的人(甚至是非网络用户)提供我们可以加入我们的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模板系统。为您的ViewModels自动脚手架/DomainModelsHtml.EditorFor()方法,当然,有一个伟大的和简单的方法来使用IoCDI范例。

假设您已经提出了主要与.NET Framework相关的标记的问题,您可能会坚持使用它。

只是为了保持后完整的,也有说是一样好(或更好)其他框架:

And many many more!

+0

+1为解释和动机的一个伟大的概述。 – 2010-05-24 06:41:15

1

也有DynamicData这可能是适当的,如果你需要简单的CRUD访问你的数据。

+0

DynamicData看起来很有趣,但不幸的是,在这个项目中,我的需求比基于数据库中确切实体的简单CRUD更加先进。 – 2010-05-22 08:25:42

-1

只是我认为用在管理页面(网站)

+0

如果您有任何输入/ html约定,您将无法在管理部分中使用它们。你也可能难以让你的CSS在这两个部分工作。如果你使用AuthenticationFilters进行安全性会怎么样?你将如何使用WebForms部分中的那些? (当然有可能,但使用MVC它“正常工作”。)最好选择一种技术并坚持下去,除非你有一个非常具体的用例需要不同的东西。 – Ryan 2010-05-25 18:32:10

0

The Web Service Software Factory (WSSF)可能会派上用场。

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

WSSF有利于ASP.NET MVCASP.NET MVPMVP体系结构的简单示例如图所示here,加上this article

对于我来说,我经常会使用混合式架构,使用MVCMVP,因为两者都有不同的优点,它们结合在一起填充彼此的改进点。