关于html、asp、php模板引擎、aspnet mvc、REST的一点思考
先看我对REST的 一点 认识,下面是《rest实战》 这本书的序言文字: 在我刚刚开始从事解决计算问题的时候,业界就有很多人有一个愿望:将系统设计为能够被自由组合的组件。互联网(Internet)无远弗届的广泛连接为这个愿望推波助澜,并且增加了一个新的愿望:
先看我对REST的一点认识,下面是《rest实战》 这本书的序言文字:
在我刚刚开始从事解决计算问题的时候,业界就有很多人有一个愿望:将系统设计为能够被自由组合的组件。互联网(Internet)无远弗届的广泛连接为这个愿望推波助澜,并且增加了一个新的愿望:使得组件在引入了延迟和不可靠性的网络之上也能正常工作。人们尝试了这个世界上的很多系统,其中的许多系统都失败了——通常伴随着悲伤的啜泣。
一个伟大的成功案例是WWW(WorldWideWeb,万维网)。它的成功既渗透进了商业运转之中,也渗透进了流行文化之中。它为人们提供了一个机会:在全球范围内以几乎任意预先安排的协作方式从很多来源获取信息。
正如我们现在所知道的,Web并非是计算问题的全部或者终极的解决方案,但是有很多人相信Web给我们上了重要的一课,即如何构造一个由网络化的组件组成的系统。很多人利用了Web的协议——HTTP来连接系统。但是有一些人认为我们应该更进一步,不仅仅将HTTP作为一种便于使用的数据通道,而是拥抱Web本身正常工作的方式,将其作为系统协作的基础。
这种思想集合在“REST”这个名字下,它所指的是RoyFielding的博士论文,这篇论文被提及的次数远远超过了它真正被阅读的次数。追随REST的原理成为了日益增长的共识,它为网络化的组件正常工作开辟了一条硕果累累的大路,而这条大路正建立在Web自身的巨大成功之上。
这个愿景是很有吸引力的,但是为了达到目标还需要做很多事情。我们必须理解REST的原理,并且思考如何将其应用到系统集成每天所要解决的问题之上。这就是本书的作者所承担的任务:将REST从一个有吸引力的愿景变成一个已经实现的系统。他们已经做了很多,教会了我如何从资源的角度思考,如何使用HTTP的惯用语(idiom),以及超媒体控件(hypermediacontr01)的重要性。作为阅读的结果,本书将为你应用REST思想的核心元素打下坚实的基础。
REST”是一种思想,运用到开发上就是一种架构风格。
1)而使用“REST”的目的是什么了?
通过上面这段文字可以得出就是用来开发大量的网络化组件,这样以后一个系统的设计就只要对这些网络化组件进行自由组合就可以了。
比如:现在大部分的互联网公司,阿里、百度、腾讯、优酷、新浪等都开发了自己的开发平台,对公布了很多业务接口提供给开发者进行二次开发,我们可以想象成这些接口就是我们系统中的组件,自己开发一个系统的时候直接用这些组件就可以了;当然现在这些网络组件还不是很多,不能完全满足支撑一个系统,但只要以后各个公司都遵循这种思想去做的话,系统的组件化是迟早的事。
2)互联网早就有了,那为什么REST现在才被提出来了?
这我们就要回过头来看一下整个Web开发过程,从中寻找我们需要的答案。
互联网刚开始只是大家用来对文件、文字、图片等资源进行分享的,所以那时候的网页基本都是用HTML编写的静态页面,每一个url地址都是对应着一个唯一的资源,可能是一篇文章,也可以是一张图片。用现在的REST来看那时候的互联网是完全符合这种思想的。
让互联网紧紧做资源的分享,是不够的,我们还要在上面进行交互,业务处理等,那么动态脚本随之产生,代表就是现在还存在的asp 、php、aspnetmvc等。
现在重点讨论asp、php模板引擎、aspnet mvc三者产生的原因,从而解答上面提出的问题。
asp是微软为了迎合市场推出的动态脚本语言,在自家的IIS服务器运行。原理也很简单,就是发送url请求后,IIS接收对地址中指定的asp文件进行编译,把里面的asp脚本代码转换为html代码再返回给浏览器。这样我们通过编写asp脚本就可以实现与前端的交互了,但是后来发现编写这种动态脚本是很痛苦的,调试麻烦,代码阅读性差,功能不好重用等。要解决这个问题就得把界面代码与动态脚本代码进行分离,那么就出现了模板引擎、MVC等程序结构。
个人觉得看php代码就是要先弄清楚代码中使用了什么样的模板引擎,把这个弄清楚后下面的代码就很顺畅了,不然总感觉云里雾里,找不到程序的脉络。
觉得MVC应该是在模板引擎之后出现的,模板引擎只是解决了后台业务代码与前台界面代码直接的分离,而MVC对这些内容做了更明确的定义,把前台界面代码定义为View、后台业务代码定义为Model、再就是对界面的交互控制用Controller来处理。所以MVC成为了如今开发大一点的web系统的主流框架;
我们从语言谈到了程序结构,这跟我们想说明的REST又有什么关系了?
很有关系,前面我说html时代其实是完全符合REST思想的,而到后面的asp、php、mvc就反而脱离了REST思想了。REST要达到组件化的目的,资源必须唯一标识,而动态语言,更确切的说是模板引擎、MVC完全打破了这种原则,因为他们是从业务功能的角度来设计程序的,这种设计使资源的访问动态化了,而这种动态的规则又只有程序设计者清楚,所以要想把这种功能组件化是不可能的;而现在Web系统原来越多,也离当初的设想原来越远所以重新提出REST这个概念,让我们不要在岔路上越走越远;
总结:系统组件化在桌面时代一直没能够实现,而在互联网时代是完全有可能成功的,因为互联网的精神就是“开放、平等、协作、分享”。
本文章只是一个即兴所想,拿出来和大家分享一下,里面的观点不一定正确,请大家指正~~
整过过程就是这样的,互联网刚开始的时候还是符合REST的,随着动态脚本的技术发展,设计的程序原来越偏离REST,所以现在重新提出REST,但不可能回到老路,那么就要把现在MVC技术改造为支持REST的一种新架构。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.
