我的开发背景是ASP .NET webforms。我一直在阅读各种SPA教程,但它们总是涉及特定的javascript库。
我只是想了解在带有.NET中间层的SPA中会发生什么。
具体地说:
域模型是否同时存在于.NET和javascript中?
javascript模型更像是一个视图模型而不是一个完整的域模型吗?
这是否消除了在ASP.MVC上下文中对视图的需求?即。制作SPA是否基本上将ASP.MVC转化为ASP MC?
.NET层是否只向客户端发送数据(JSON/XML)?没有标记?
是否所有的ASP.MVC路由配置在很大程度上变得无关?是否所有路由处理客户端?
发布于 2015-11-26 17:53:13
因此,我在PHP和Python方面更有经验,但我的答案也应该适用于ASP .NET,因为您的问题更多的是关于MVC结构,而不是语言/框架本身。
首先,选择javascript库可能是回答问题的关键。例如,如果您选择完整的MeteorJS堆栈(在服务器和客户端之间共享模型),或者仅仅选择一个前端库,比如Angular (或两者的组合)。
域模型是否同时存在于.NET和javascript中?
它可能:取决于图书馆。数据通常通过XMLHttp调用(或websocket,用于Meteor )作为JSON对象接收,或者直接从本地存储区访问。实现一个模型可能有助于保持代码的整洁(在类型记录中,您可以使用一个接口),但是对于处理CRUD操作,它实际上取决于您选择的JS库。
javascript模型更像是一个视图模型而不是一个完整的域模型吗?
在SPA中,通常有控制器(或“组件”或“指令”),而不是视图模型。同样,它确实依赖于JS框架/库。在最新的角2.0迭代中,组件既是视图又是控制器。有关更多信息:https://www.youtube.com/watch?v=g9GgByAy80s
这是否消除了在ASP.MVC上下文中对视图的需求?即。制作SPA是否基本上将ASP.MVC转化为ASP MC?
是的,如果您计划使用RESTful作为JSON端点,您仍然需要控制器进行路由,并为CRUD建立模型:理想情况下,“视图”只是一个JSON。
.NET层是否只向客户端发送数据(JSON/XML)?
是的,但它还应该能够处理CRUD操作的请求(GET、POST、UPDATE、DELETE for REST,其他用于DDP协议的请求)
没有标记?
您想发送什么样的标记?
是否所有的ASP.MVC路由配置在很大程度上变得无关?是否所有路由处理客户端?
如前所述,您仍然需要路由来处理REST / DDP业务逻辑。其他一切(如用户可以在浏览器栏中与之交互的URL路由)都由SPA管理(当然,使用情况取决于您的库选择)。
https://softwareengineering.stackexchange.com/questions/303663
复制相似问题