.net web api 前后端分离问题

「已注销」 2018-09-09 04:23:18
一开始不是很懂前后端分离的想法,现在有点理解了但是又觉得怪怪的,后端提供web api给前端js调用,前端获取数据去重新渲染页面,那一个实际的网站肯定是会有很多不同的页面的吧,也就是页面实际是存在前端去转换的而不是MVC那样都是存在服务器去获取的?希望大佬可以再讲讲前后端分离,总觉得没领会意思的精髓~~
...全文
1355 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2018-09-11
  • 打赏
  • 举报
回复
前后端分离是趋势,简洁很多。
独立观察员 2018-09-11
  • 打赏
  • 举报
回复
引用 11 楼 qq_29637191 的回复:
[quote=引用 9 楼 daixf_csdn 的回复:]
所谓前后端分离,从字面上可以解析:
即:前后端分离=》
即:后端做后端应该做的事情,前端做前端擅长的事情=》
即:后端废弃razor的模式,不要试图使用后端工具来生成HTML元素,那么后端不提供页面了,只需要提供数据;前端则广泛使用ajax,提升页面的操作性。

那请问后端是一种什么模式?一个js请求过来访问的是我的控制器,控制器里做逻辑判断并且返回js需要的数据,数据交互是使用json什么[/quote]

感觉ASP.NET的一般处理程序+前端的Ajax应该就是你说的。
gergeggregr 2018-09-11
  • 打赏
  • 举报
回复
前端页面只获取接口的数据,页面路由和后端无关了,算法在接口中,操作逻辑在前端。
「已注销」 2018-09-11
  • 打赏
  • 举报
回复
引用 36 楼 w19921004 的回复:
[quote=引用 11 楼 qq_29637191 的回复:]
[quote=引用 9 楼 daixf_csdn 的回复:]
所谓前后端分离,从字面上可以解析:
即:前后端分离=》
即:后端做后端应该做的事情,前端做前端擅长的事情=》
即:后端废弃razor的模式,不要试图使用后端工具来生成HTML元素,那么后端不提供页面了,只需要提供数据;前端则广泛使用ajax,提升页面的操作性。

那请问后端是一种什么模式?一个js请求过来访问的是我的控制器,控制器里做逻辑判断并且返回js需要的数据,数据交互是使用json什么[/quote]

感觉ASP.NET的一般处理程序+前端的Ajax应该就是你说的。[/quote]
嗯嗯对,现在就是在用一般处理程序
w76607536 2018-09-10
  • 打赏
  • 举报
回复
传统的服务器端编程之所以一遍遍地刷新 html,是因为 web 最初刚刚发明出来的时候就是这样的,也就是上个世纪90年代初就是那样的。可以说编程的“底线”没有什么巨大的变化。编程不需要精细到控件/组件控制层次(asp.net webform这方面是个伟大的尝试),而只需要一遍遍简单刷新页面就可以了。 那么 web 标准到了 html5 时代,发生了巨大变化。掌握了一套 web 开发方式,你就可以跨平台处理windows、平板系统、手机系统等等下的“移动优先的”开发。编程还是需要精细控制到控件/组件的层次,用户交互界面非常灵活高效,比传统的桌面应用的用户体验还要好。
stevenjin 2018-09-10
  • 打赏
  • 举报
回复
webapi还利于实现分布式实现,他就是远程的一个服务,想用就调用,返回你要的数据
  • 打赏
  • 举报
回复
只有伟大的 asp.net webform 曾经尝试做到所谓“后端开发模式”,但是它被时代打败了,被微软抛弃了。而跑开了 webform 那样的一大堆服务器端控件的开发思路之后,asp.net mvc 跟 jsp、php 相比也就是一样的东西,都不是 MVP 编程模式。

你看即使是 React 号称是 MVC 编程模式,其实它真正地开发时也是精细地按照 control(组件)来开发和事件编程的。所以真正的灵活的交互程序根本不可能粗糙地用什么 MVC 模式,起码也得是 MVP 编程模式,更精炼的方式是采用 MVVM 模式。因为采用什么模式,不是靠技术,而是靠用户体验来决定!那些号称是 MVC 模式的编程框架,要么是过于简单初级,要么是为了迷惑初学者去学习才这样说的。
  • 打赏
  • 举报
回复
传统的服务器端编程之所以一遍遍地刷新 html,是因为 web 最初刚刚发明出来的时候就是这样的,也就是上个世纪90年代初就是那样的。可以说编程的“底线”没有什么巨大的变化。编程不需要精细到控件/组件控制层次(asp.net webform这方面是个伟大的尝试),而只需要一遍遍简单刷新页面就可以了。

那么 web 标准到了 html5 时代,发生了巨大变化。掌握了一套 web 开发方式,你就可以跨平台处理windows、平板系统、手机系统等等下的“移动优先的”开发。编程还是需要精细控制到控件/组件的层次,用户交互界面非常灵活高效,比传统的桌面应用的用户体验还要好。
  • 打赏
  • 举报
回复
所谓富客户端web应用程序,实际上就是 c/s 程序,虽然所有资源文件(html/css/js/image等等)都是从 web 服务器上按需下载的文件,但是它本质上跟传统的 Flex、Silverlight 等一样,跟传统的桌面程序一样,是跑在客户端的。

没有什么“后端模式”这种说法。传统的宣传性的服务器端编程网页,是用来一遍遍生成下载用的 html 输出的机制,因此它只能做到非常简单、非常粗糙地所谓 web 交互体验。换句话说,传统的 asp.net、jsp 程序员不需要什么技术就可以做宣传性网页了。现在还是有不少 web 开发的初学者抱着 10 年前的 web 应用的开发方式不放,主要就在于现在的真正的前端开发人员还是比较缺乏,是一个技术还比较混乱的时期。
  • 打赏
  • 举报
回复
我给你提供一个简单直观的初步的检验标准:你就跟 Flex/Flash 应用做对比,凡是秒杀 Flex/Flash 的无刷新页面用户体验(更加轻量更加灵活)的 web 应用就是所需要的技术,而运行起来还是传统 web 网页那种用户体验的就根本不是我们要讨论的技术!
正怒月神 2018-09-10
  • 打赏
  • 举报
回复
就我个人认为,.net mvc也好 ,spring mvc也罢。
都只是为了迎合一个 mvc的概念,并且还方便程序员开发,制造了一个引擎可以让你在前台html页面调用后台的数据模型,进行绑定。这本质上和<%=%>并没什么区别,只是他的功能更强大,封装了更多的功能。
但是现在讲究的是前后端分离,后台开发不关心前端样式,我们只要和前端约定好接口和数据模型。
然后后天开发通过webapi提交数据给前端就好了。
而前端只要根据接口和数据模型,自然而然就会把数据模型通过前端框架,vue,angula,react等等来填充到前台表单。
这样的才叫前后端分离。
反过来,.net mvc只是服务器每次生成一个html呈现给用户。这和前端数据绑定的概念是不一样的
傲娇的芒果 2018-09-10
  • 打赏
  • 举报
回复
看看评论也有很大收获啊
正怒月神 2018-09-10
  • 打赏
  • 举报
回复
其实说白了,.net mvc那种依靠razor来绑定前台数据的方式,
会使得前后台还是没办法彻底分离。
换句话说,人家前端不认识你的@TextBoxArea等等标签。
人家只需要你通过webapi传递给他数据就好了。
当然,如果只是开发简单的页面,无所谓用户体验,那么你使用.net mvc完全没问题。
无痕的过往 2018-09-10
  • 打赏
  • 举报
回复
首先后端要返回一个完整的页面,之后的数据处理及显示交由JS框架处理。一般是这样的流程,楼主想问的可能是这个。
圣殿骑士18 2018-09-10
  • 打赏
  • 举报
回复
引用 11 楼 qq_29637191 的回复:
[quote=引用 9 楼 daixf_csdn 的回复:]
所谓前后端分离,从字面上可以解析:
即:前后端分离=》
即:后端做后端应该做的事情,前端做前端擅长的事情=》
即:后端废弃razor的模式,不要试图使用后端工具来生成HTML元素,那么后端不提供页面了,只需要提供数据;前端则广泛使用ajax,提升页面的操作性。

那请问后端是一种什么模式?一个js请求过来访问的是我的控制器,控制器里做逻辑判断并且返回js需要的数据,数据交互是使用json什么[/quote]
后端的模式,是另外一回事,可以做另外一个课题讨论。比如是不是分所谓三层(Controller+BLL+DAL)?还是分两层(Controller·+Service)还是在Controller中直接实现业务代码(一层)。最终都是返回json给前端。
  • 打赏
  • 举报
回复
#17 楼我应该引用 #14 楼的你的话。csdn 新改版了,布局位置无端端地改变了,造成了我操作错误。
「已注销」 2018-09-09
  • 打赏
  • 举报
回复
引用 19 楼 sp1234 的回复:
[quote=引用 16 楼 qq_29637191 的回复:]
你的意思是我在VS创建一个.net 项目时创建的web api 要访问的话也是创建一个Controller,所有发的controller都是继承一个APIController的类,其实这里的控制器其实是一个web api 的概念对么


我不管 asp.net mvc 怎么偷换概念,我只说本质。我们自然是对技术实现时越简单、直截了当越好。

MVC 原本是一个 UI 编程模式。当 V 都不存在了,C 还有什么用?如果硬要把 webapi 说成是 Controller,这其实是一个宣传伎俩,长不了。[/quote]
嗯嗯,认识清晰了许多,谢谢大佬的耐心教诲
  • 打赏
  • 举报
回复
引用 16 楼 qq_29637191 的回复:
你的意思是我在VS创建一个.net 项目时创建的web api 要访问的话也是创建一个Controller,所有发的controller都是继承一个APIController的类,其实这里的控制器其实是一个web api 的概念对么


我不管 asp.net mvc 怎么偷换概念,我只说本质。我们自然是对技术实现时越简单、直截了当越好。

MVC 原本是一个 UI 编程模式。当 V 都不存在了,C 还有什么用?如果硬要把 webapi 说成是 Controller,这其实是一个宣传伎俩,长不了。
  • 打赏
  • 举报
回复
当 # 号后边的标签改变时,浏览器不会发送消息给服务器去刷新页面。而你会看到页面”翻飞“,标签不断变化,但是单页面并不刷新。

这就是前端基础知识啊!
  • 打赏
  • 举报
回复
引用 15 楼 sp1234 的回复:
有很多流行的前端 UI 编程框架,你学会任何一种。然后再研究这个问题。

实际上,前端编程就好像你 winform 或者 wpf 编程一样,就是一个独立的 html/js 程序。只不过所有的 html、css、js 文件是从某个 web 服务器上下载过来的而已,根本不纠结于是不是用了 asp.net。


[quote=引用 11 楼 qq_29637191 的回复:]
那请问后端是一种什么模式?一个js请求过来访问的是我的控制器,控制器里做逻辑判断并且返回js需要的数据,数据交互是使用json什么


这个时候”控制器“这个词儿其实荒唐透顶。控制器原本是 MVC 概念(用来触发并且绑定 html 页面下载代码),但是被用来偷换概念成为 webapi 数据输出的概念了。[/quote]

是的,你提的问题很专业,这很棒!

前端页面导航是这样的,例如
http://abc.def.com/site1#zhangsan
这里的 zhangsan就是页面的名字,也就是说,锚定位置改变时,页面内容切换。从最初的 html 规范,一直到现在的 html5 页面导航,都是延续下来的。通过 # 号后边的标记来页面导航,这就是一个基础知识。没有这个基础知识,正好说明不是前端程序员!
加载更多回复(16)

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧