是[HTML5+;jQuery](无ASP.NET)和#x2B;WCF是企业级web应用程序的有效解决方案吗?

是[HTML5+;jQuery](无ASP.NET)和#x2B;WCF是企业级web应用程序的有效解决方案吗?,jquery,asp.net-mvc,wcf,html,webforms,Jquery,Asp.net Mvc,Wcf,Html,Webforms,为了获得一些观点,我们已经使用ASP.NET web表单很多年了 我们也意识到MVC相对于web表单的好处,但是另一种选择是绕过所有这些抽象层,从纯.HTML页面转到WCF服务 No.ASPX、No.cshtml/.vbhtml,只是纯.HTML文件,以避免服务器端的逻辑和渲染。这是一些人提出的想法,HTML5及其功能正变得越来越吸引人。通过完全控制HTML来瞄准更多设备的能力也是一个驱动因素 我知道从技术角度来看这是可行的——特别是jQuery让事情变得更简单了——但我担心,通过抛开整个服务器

为了获得一些观点,我们已经使用ASP.NET web表单很多年了

我们也意识到MVC相对于web表单的好处,但是另一种选择是绕过所有这些抽象层,从纯.HTML页面转到WCF服务

No.ASPX、No.cshtml/.vbhtml,只是纯.HTML文件,以避免服务器端的逻辑和渲染。这是一些人提出的想法,HTML5及其功能正变得越来越吸引人。通过完全控制HTML来瞄准更多设备的能力也是一个驱动因素

我知道从技术角度来看这是可行的——特别是jQuery让事情变得更简单了——但我担心,通过抛开整个服务器端抽象(web表单中的代码、MVC中的控制器和视图绑定),我们最终会做更多我们以前不必担心的事情

问题归结为:

  • 这是一个合理的担忧吗?如果是的话,我们最终会做什么
  • 如果抛开整个ASP.NET框架(从web应用程序的角度)而仅仅依靠纯HTML页面与WCF服务的直接通信,我们到底会失去什么
  • 注:我用“企业级”一词来强调,这不是一个简单的web应用程序,它只有几个页面,而底层架构的最终决定与此无关,我们这里说的是大屁股应用程序:)

    编辑:为了更清楚,我们在这种方法中关注的主要领域包括:

    • 身份验证和授权-->MVC通过属性(例如)以非常简单的方式处理此问题,但这种“静态”方法意味着WCF必须处理令牌,加密/解密令牌,并自行决定由谁来做什么,同时在每次调用中维护所有这些信息。这是唯一的解决办法吗

    • 关注点分离-->MVC显然做到了这一点,我想补充一下,它做得非常好。但是,这种方法强制您在HTML中显式编写需要的WCF函数调用。因此,不仅是您的表示层处理要绘制的内容,它还将调用什么来获取其数据以及如何在页面中分发数据的逻辑嵌入其中。这可能没什么大不了的,但相比之下,MVC中的ViewBag提供了将WCF服务URL作为动态属性的选项,这意味着逻辑现在是控制器的一部分,而不是HTML页面。改变这种逻辑可以省去浏览HTML页面的麻烦

    • 绑定和验证-->我把这两个放在同一个篮子里,因为最终一旦WCF服务响应一个JSON对象,该对象包含我的页面运行所需的所有信息(包括验证规则),就必须有人将其绑定到那些空闲控件上


    希望这个想法足够清晰,并提前感谢。

    您可以查看一些更高级的js库,例如,它将为您完成管道的大部分工作。您可以享受一些非常酷的特性,ASP.NET开发人员使用这些特性处理服务器端代码,只处理客户端代码。该框架仍在开发中,您可以期待更多的酷特性出现

    dislaimer:我在Telerik工作,虽然不直接参与该产品,我们也在内部使用它。我既不是销售团队的成员,也不是开发团队的成员,我只是认为这正是您所需要的。

    您没有“抛弃整个服务器端抽象”,而是将功能划分为不同于标准web应用程序的部分。服务器端抽象现在来自向表示层提供数据的WCF服务

    您将需要使用Web样式的API返回JSON以使其易于使用——我建议使用新的Web API,因为它可以对HTTP交互进行细粒度的控制,而在以前的WCF REST实现中,HTTP交互是隐藏的

    显然,走这条路并不是万能的——您仍然需要关心往返和延迟(让web UI的复合部分单独调用后端以获取数据非常容易,最终导致页面呈现速度非常慢)。但在架构上,没有理由认为这种方法比传统的web应用程序限制更小


    可能有一个缺点是,对于每个页面,至少会有两次往返-一次是获取HTML+JS,另一次是JS获取数据-对于传统的web应用程序,只有一次往返可以实现相同的效果,因为在呈现页面时,数据首先加载到服务器端肯杜伊和森查也是。然而,这只回答了问题的UI部分,我们并没有真正的问题,有很多很棒的框架,就像你提到的那些。没错,抽象现在驻留在WCF中。至于新的Web API,它已经被我们关注了一段时间了,是这个解决方案的一个非常好的工具。我们不太担心整个“如何与WCF通信以及使用什么”而是更像是“既然我们正在编写静态页面,我们需要担心什么?”一些问题:涉及安全性,比如授权和身份验证。。。。验证、会话管理、可能的本地化等。。。我并不是说这些都不可行,当然WCF可以很好地处理它们,但这样做不是“我们发明了轮子”吗?可能一个缺点是每个页面至少有两次往返-如果所有标准的用户交互都是嵌套的,这不是一个问题