ASP.NET MVC 3是否适用于业务应用程序

时间:2011-05-25 12:41:28

标签: c# asp.net asp.net-mvc razor

我必须决定我们将在未来几年开发的新的大型商业应用程序,问题是我们是否应该开始使用MVC 3或Web表单。

这已经在SO中进行了讨论,但我已经看到了这样一个问题:2008年被问到ASP.NET MVC ready for business applications (integrating 3rd party controls/components)?,现在很多事情都发生了变化。

我主要关注的是听说MVC适合渲染网格或列表等内容,而不适合数据输入和用户交互。

我们的应用程序将有很多控件,用户可以在其中输入数据并使用列表和文本框,复选框等。

在MVC中也是绝对可能的,或者经典的Webforms和视图状态模型会更合适吗?

感谢。

3 个答案:

答案 0 :(得分:26)

  

ASP.NET MVC 3是否已为业务应用程序做好准备

     

在MVC中也是绝对可能的一切

以我的拙见;绝对是100%是的。实际上,我认为MVC框架在功能和生产力方面都领先于WebForms。

答案 1 :(得分:8)

自从1.0 beta和MVC 1,2和3以来,我已经使用了每个版本的WebForms,并且相信MVC绝对可以用于生产。

你必须考虑到2的发展方法是完全不同的:

MVC要求您了解基本Web技术的更多低级细节:HTML,CSS,JS,HTTP(我相信如果他们还没有使用您的技能,我相信您应该这样做)。

WebForms尝试抽象大部分内容,并且可以将一些简单页面放在一起被认为更有效率。但是这是一个漏洞的抽象,缺乏控制可能会让你感到沮丧,因为你越来越熟练 - 如果你不熟悉Web开发,那么在开始时会更容易;在获得经验时更难弯曲。 当页面变得更复杂时,生产力的提高开始消失。抽象更有可能导致性能问题并破坏自动测试页面的能力(使用Selenium或等效工具进行单元和UI级别测试)。

示例1:在MVC中,您很可能需要了解如何处理表单字段以使用application / form-url-encoded组成使用HTTP的POST,否则您可能会遇到模型绑定。在WebForms中,您可以构建大型应用程序而无需担心。

示例2:在MVC中,您需要跨请求管理大部分页面状态。在WebForms中,框架可以轻松地为您完成。

MVC应用程序倾向于更多地依赖客户端javascript组件来获得可重用的小部件,例如绑定JSON数据。 WebForms鼓励使用服务器端控件,因为它们可以很好地集成到框架状态管理工具中。

与其他人不同,我不相信MVC比WebForms更具生产力。不要低估WebForms快速交付数据驱动的业务应用程序的能力。管理了很多人同时使用两者,我认为MVC需要更多熟练的程序员才能提高工作效率。但如果这是你的情况,你可能会发现MVC在那些熟练的手中是一个更有趣和更强大的平台。

答案 2 :(得分:6)

是的,ASP.NET MVC 3 Razor绝对可以用于商业应用程序。我正在使用MVC 3 Razor C#构建一个大型的企业级Web应用程序,而我在MVC和Entity Framewor中的复杂性越高,它们就越能处理它。我来给你一个代码示例。让我们说我们想要创建一个动态表,将HTML与Razor C#代码和数据混合在一起。使用Web表单和ASP.NET Web控件

这不是一项小任务
<table>          
    <thead>
        <tr>
            <td>Date</td>
            <td>Name</td>
            <td>Price</td>
            <td>Quantity</td>
            <td>Shipper</td>
        </tr>
    </thead>
    @foreach (eStore.Models.Product p in Model.Products)
    {
        <tr>
            <td>@Html.Hidden("Date", p.Date.ToString())
                @Html.Hidden("productId", p.ProductId)
            <td><input type="submit" name="submitButton" value="@p.Name"/></td>
            <td>@Html.Label("Price", p.Price)</td>
            <td>@Html.Label("Quantity", p.Quantity)</td>
            <td>@Html.Label("Shipper", p.Shipper)</td>
        </tr>
    }
</table>

我创建了一个包含产品列表的动态表,其中包含一个按钮,可以通过productId访问列表中每个产品的更多信息。这需要最少量的代码和工作量。代码清晰,易懂,易于编辑。现在想象一下传统Web表单和Web控件执行相同任务所需的内容。

MVC 3有一个学习曲线,但在我看来这是值得的。