ASP.NET MVC 与 XSL
Posted
技术标签:
【中文标题】ASP.NET MVC 与 XSL【英文标题】:ASP.NET MVC vs. XSL 【发布时间】:2010-09-07 13:15:07 【问题描述】:任何人(可能是 XSL 爱好者?)都可以帮我找到使用 XSL over ASP.NET MVC 在网页上处理数据呈现的任何优势吗?
两种选择是:
带有 XSL 的 ASP.NET (MVC/WebForms) 从数据库中获取数据并将其转换为 XML,然后使用 XSL 模板显示在不同的页面上。
ASP.NET MVC 从数据库中获取数据作为 C# 对象(或 LinqToSql/EF 对象)并在 MVC 页面上使用内联代码显示它。
XSL 的主要优点是在许多不同的页面上一致地显示数据,例如 WebControl。所以,如果我错了,请纠正我,ASP.NET MVC 可以以相同的方式使用,但使用强类型对象。请帮我看看 XSL 是否有任何好处。
【问题讨论】:
【参考方案1】:我可以看到使用 XSLT 转换数据并将其显示给用户的主要好处如下:
数据已经是 XML 格式 数据遵循明确定义的架构(这使得使用 XMLSpy 等工具更加容易)。 需要将数据转换为多种不同的输出格式,例如PDF、WMP 和 html如果这是您数据的唯一输出,并且不是 XML 格式,那么 XSLT 可能不是最佳解决方案。
同样,如果需要用户交互(例如编辑数据),那么您最终还是会使用后端代码来处理更新,因此可能证明一种技术太过分了......
【讨论】:
【参考方案2】:在使用 XML 转换时,我总是发现两个主要问题:
首先,它们往往很慢,必须先对整个 XML 文件进行解析和验证,然后才能对其进行任何操作。作为 XML,它也过于冗长,因此比它需要的要大。
其次,转换的工作方式对编码来说有点麻烦 - XmlSpy 等自定义工具有所帮助,但与大多数开发人员习惯的模型不同。
目前 MVC 非常快速并且看起来非常有前途,但确实受到了传统 Web 开发缺陷的困扰,即在您的代码中到处都是 <%
和 %>
蜜蜂蜇伤。使用 XML 转换可以避免这种情况,但更难阅读和维护。
【讨论】:
随着 Razor 等替代视图引擎的出现,蜜蜂蜇伤现在应该减少。 @RobertHarvey - Razor 很棒,@
语法比<%
更好(至少对于简单的语句),但它仍然存在在输出和代码之间切换的基本问题。请注意,这是一个 3 1/2 年前的答案——当时 MVC 是“有希望的”,现在我认为你会疯狂地使用 XML 转换。【参考方案3】:
我过去曾使用过这种技术,并且在我目前的工作地点有一些应用程序可以使用它。 (我承认,我并不完全喜欢它,但我会扮演魔鬼的拥护者)真的这是主要优势之一,推动这个想法可能有点巧妙。您可以动态创建 xsl 并随心所欲地更改页面的外观。是否可以通过其他方法做到这一点...是的,但是构建一个程序来动态修改 xml/xsl 文档真的很容易。
如果您考虑使用 XSL 将一个 xml 文档转换为另一个并将其显示为 html(这正是您正在做的),那么您正在打开您的系统以允许其他程序访问页面上的数据通过 XML。您可以通过其他方法做到这一点,但使用 xsl 转换会强制它每次都输出 xml。
我会轻而易举地以这种方式创建系统。你会发现很多出乎意料的坑,如果你不是很了解 xsl,也会有一个学习曲线。
【讨论】:
【参考方案4】:如果您想使用 XSLT 和 ASP.MVC,请查看这里
http://www.bleevo.com/2009/06/aspnet-mvc-xslt-iviewengine/
【讨论】:
好吧,我真的不想。我只是想知道为什么有人会想要使用它。 嗯,我能想到使用它来分离数据和演示的唯一原因是在超高流量网站上节省 10-20% 会产生显着差异。【参考方案5】:Jafar Husain 在他的proposal for Pretty XSL 中提供了一些优势,主要是缓存样式表以增加页面负载并减小数据大小。 Steve Sanderson 提出了一种稍微不同的方法,使用 javascript 作为控制器 here。
另一种类似的方法是使用XForms,但最好的支持是通过JavaScript library。
【讨论】:
【参考方案6】:如果您只打算显示来自 DB XSL 模板的数据可能是一种方便的解决方案,但如果您要处理用户交互。嗯...我认为它根本无法维护。
【讨论】:
以上是关于ASP.NET MVC 与 XSL的主要内容,如果未能解决你的问题,请参考以下文章
Asp.net MVC 与 Asp.net Web API 区别