我的主要工作是制作HTML应用程序。我的意思是,内部使用CRUD类型的应用程序,其中包含许多可编辑的Gridview,文本框,下拉菜单等。我们目前正在使用ASP.NET Web窗体,虽然确实可以完成工作,但是性能通常很差,而且通常您必须跳篮球才能获得所需的东西。吊在天花板上的铁环会燃烧。
所以我想知道将所有UI移到JavaScript端是否是一个好主意。开发一组强大的可重用控件,这些控件专门针对我们的需求量身定制,并且仅与服务器交换数据。是的,我喜欢“控件”(又名“小部件”)范例,它非常适合此类应用程序。因此,在服务器端,我们仍将具有与当前ASPX标记类似的基本布局,但是之后将仅发送给客户端一次,而Javascript部分将负责所有后续的UI更新。
问题是我以前从未做过此事,也从未见过任何人这样做过,所以我不知道会有什么问题。我特别担心:
- 性能依然。基准测试表明,当AJAX更新后浏览器尝试重新呈现大部分页面时,当前主要延迟在客户端。ASP.NET webforms生成的标记为“ web”一词赋予了新的含义,丰富的Devexpress控件在此之上添加了自己的Javascript复杂性层。但是,重新计算Javascript方面的所有必要更改然后仅更新需要更新的内容会更快吗?请注意,我所谈论的表单具有多个可编辑的gridview,许多文本框,许多下拉列表,每个下拉列表中都包含了半百万个可过滤项,等等。
- 易于发展。现在将有更多的Javascript,并且可能与页面的HTML标记混合。那或某种新的视图引擎将必须被生产。Javascript的Intellisense也比C#代码差很多,并且由于Javascript的动态特性,不能期望它会变得更好。编码实践可以使它有所改善,但幅度不大。另外,我们的大多数开发人员主要是C#开发人员,因此会有一些学习过程和最初的错误。
- 安全性。许多安全检查将必须进行两次(服务器端和UI端),并且数据处理服务器端将必须包含更多安全检查。当前,如果您在服务器端将文本框设置为只读,则可以依赖于其值在客户端往返过程中是否保持不变。该框架已经具有足够的代码来确保(通过视图状态加密)。使用纯数据方法会变得更加困难,因为您必须手动检查所有内容。另一方面,可能会更容易发现安全漏洞,因为您只需要担心数据。
总而言之,这将解决我们的问题,还是使它们变得更糟?有没有人尝试过,结果如何?是否有任何框架可以帮助这种工作(不包括jQuery和道德上的对等)?
So on the server side we would still have a basic layout simliar to our current ASPX markup, but that then would get sent to the client only once, and the Javascript part would take care of all the subsequent UI updates.
您正在确切描述什么是ASP.NET,这告诉我您可能未正确使用它。:)在ASP.NET应用程序中,如果将组件放置在更新面板中,则ASP.NET javascript库将执行异步回发到服务器端,并且仅重新呈现您指定的组件。