首页 文章

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

提问于
浏览
5

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

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

我想到的一些概念是:

  • ASP.NET MVC(或MVC-2)

  • Webforms

  • AJAX控件 - 可能允许AJAX控件通过JSON访问现有的Web服务 .

Are there any more concepts I should look into? Which one is the best for a fresh project?

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

5 回答

  • 11

    绝对深入 ASP.NET MVC2 .

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

    WebForms与MVC2点 - (说出经验):

    Scalability:

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

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

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

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

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

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


    Testability:

    使用 WebForms 我们没有't really have much interest writing tests because it was a pure pain to do so. I remember writing some tests to have at least some proofs but let'删掉那个话题..(:p)

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

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

    使用ASP.NET MVC2,我们现在进行了 lacking 测试!我们要求所有类型的人(甚至是非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() 方法为ViewModel / DomainModel自动支架,当然有一种非常简单的方法可以使用IoCDI范例 .

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

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

    And many many more!

  • 0

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

  • 1

    在你的情况下,Web Service Software Factory (WSSF)可能会派上用场 .

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

    WSSF 赞成ASP.NET MVCASP.NET MVP . MVP 架构的一个简单示例显示为 here ,另外还有 this article .

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

  • 0

    我也推荐看着Silverlight .

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

  • -1

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

相关问题