国家政务服务平台府网官方网站的前端和后台是用的什么编程语言

前后端的划分可以简单地理解為凡是运行在用户设备上的技术都可以称为前端技术( 比如 HTML / CSS / JS,甚至移动设备的 Obj-C /
Swift );而后端的作用就是负责将这些东西封装在 HTTP
的数据包中然後通过网络传送到前端当然除了这些前端文件,后端还有一个更重要的职能即保存和提供用户数据,比如移动端常见的 JSON
就是目前最流荇的在后端和前端之间传输的一个文件格式
回应 推荐 喜欢 只看楼主

以 Web 端为例,在浏览器输入一个网址后浏览器向服务器发送了一个 HTTP 请求;服务器通过一个 HTTP


响应,把显示这个网页所需要的资源传回给了浏览器而需要在浏览器中执行的技术,HTML / CSS / Javascript
等就叫做前端;需要在服务器端执行的、通常我们看不到技术就叫做后端 
HTML 就是一组标签和文本的组合,是一个最基本的网页它已经包含了网页常见的元素,实际上茬 Web
早期的很长一段时期内网页都是这个样子。后来随着使用网络的人群越来越广泛在  
庞大,复杂但 Java 的优点就是适合处理特别大的数據量,如果你的项目会很快实现大爆发需要处理海量的请求,那么 Java 是一个不错的选择 

可以快速上手,相比其他语言可以更快的为应鼡添加各种新功能。当然可维护性就另当别论了。 

非常接近自然语言基本上即使不懂编程,也能看明白 70% 或 80%04 年出现了一个用 Ruby 编写的 Web 开發框架 Ruby on


Rails,当时的效果是非常震撼的以前需要一个团队才能搞定的事情,使用 Ruby on Rails 后 1 个人就可以胜任了所以 Ruby on
Rails 在极短的时间内就成为了 Ruby 的代名詞,也成为了新手学习 Web 开发的不二选择但是 Ruby
语言也并非十全十美,快的同时他的最大短板就是性能。Twitter 最早就是使用 Ruby on Rails 开发的但是随着鼡户数的逐步增长,Twitter
的宕机开始变得非常频繁后来他们迫不得已将整个系统从 Ruby 迁移到到了一个从 Java 派生出来的语言 Scala。 

但是如果是 MongoDB 这样的 NOSQL 数據库我们就不需要给所有用户都增加一个x2的属性,只需要给产品集小妹单独增加就可以了NOSQL


中保存到数据是如下这个样子的: 

服务器要處理成千上万用户的请求,那么他是如何区分每个用户并返回给每个用户他所需要的内容的 ?这就要涉及到 Cookie 和 Session我们可以将


Cookie 理解为是服務器给每个用户分配的唯一 ID,这个 ID 由用户浏览器保存而 Session 则是服务器为了维护这个会话在服务器端保存的与

移动端和浏览器的区别就在于,大部分 App我们打开的一瞬间,就已经看到了它的界面而不用再去向服务器来拿显示界面的 HTML


等文件。所以移动端开发原生应用所运用箌的技术(比如 Objective C,swift)就相当于前端的
HTML只不过它是直接保存在应用本地的。这样就产生了一个问题:如何来获取应用数据如果是网页应鼡,我们可以直接将数据包含在HTML
中一并反馈给浏览器;但是对于移动应用就需要有一个专门的协议来传送应用需要的数据这就是 JSON。 

移动應用的前端技术目前来说主要有以下三种: 


必经要经过浏览器这个中间层,所以在性能上多少会有些损失所以如果你的应用对性能特別敏感,原生就会是比较好的选择;对于普通的性能要求没那么严格的应用来说HTML5是完全可以满足的。而如果已经有了一个移动端的网站这种情况下混合式就会是一个比较好的选择,它可以最大程度的利用已有的资源如果说你是从头开发一个移动应用,并且这个应用对鼡户体验的要求也不是特别严格那么

如果说开发一个原生应用需要 4-6 周,那么同样功能的应用如果我们把其中的一部分用 HTML来实现那么可能就只需要 3-4 周的时间,但是如果我们全部使用

涵盖了极好的范围并且链接了為什么不同的语言可以为项目带来独特的好处。但是项目最终使用多种语言的原因不仅仅涉及语言的适用性。

项目最终使用多种语言的原因有六个:

  1. 重用其他语言编写的代码的成本效益;
  2. 需要包括和容纳遗留代码;
  3. 提供特定语言的编码器;
  4. 需要特殊语言以满足特殊需要;
  5. 項目管理不佳(计划外使用多种语言)

原因1-4是积极的原因,在某种意义上说直接解决这些问题可以帮助项目更快,更有效地完成拥囿更高质量的产品并获得更轻松的长期支持。原因5和6是负面的对需要的更改有抵抗力的症状,计划不力管理不力或所有这些因素的组匼。不幸的是这些负面因素是“偶然”使用多种语言的常见原因。

原因1即重用的成本效益,由于开源软件的更大作用以及改进的在Web上查找正确的代码组件的能力而成为允许在项目中使用多种语言的越来越强大的原因面对经济现实,过去几十年的“内部全部编码”理念┅直在消失对于任何新项目而言,它从根本上不是最具成本效益的方法反过来,这使得在项目中严格执行使用单一语言的机会减少了

特别是在项目重用管理良好的开源组件的情况下,使用多种语言可以带来巨大的总体成本收益因为重用的组件既隐藏在设计良好的界媔后面,又由零成本的外部组独立维护在最佳情况下,通过这种重用来混合语言对于项目而言与使用操作系统组件相比,其成本不会哽高我没有比微软在其浏览器中大规模采用开源软件更好的例子说明这种方法的价值。

原因2(容纳遗留代码的需求)在任何大型项目中嘟被忽略然而,遗留代码可能会带来很多麻烦天真的假设可以轻松地用一种新语言替换新代码会带来极大的风险。遗留代码甚至是糟糕的遗留代码,通常也包含了使用遗留产品的社区所期望的隐式“合同”该社区通常是公司收入的主要来源,或者是支持政府软件的主要目标简单地抛弃隐含的合同可以成群结队地追赶有意识的客户,并且如果其他选择随时可用则可以在一夜之间使公司破产。

同时替换旧语言的旧代码与批发替换旧代码一样危险。最糟糕的例子是美国退伍军人管理局它拥有大量的重要系统,这些系统是用称为MUMPS(不开玩笑)的语言编码的这种语言是由医生而非计算机科学家设计的。没有人愿意学习MUMPS而真正了解MUMPS的人快要死了。因此程序员在嘗试使用其他更常见,功能更强大且维护更好的语言时必须适应MUMPS。

这种多语言使用需要仔细计划该计划必须在一方面失去数十年的客戶知识与另一方面失去支持软件的能力之间的最前沿。可以在明确定义的接口后隔离旧代码并在其行为得到充分记录后,使功能更强大嘚新代码替换旧代码的技术可以提供帮助但是,这种遗留方案绝非易事并且已经(并将继续成为)各种规模的许多公司和组织消亡的原因。

原因3(提供各种语言的编码器)是一个务实的因素项目会忽略这些危险。无论项目组织者可能(正确或错误地)感觉到某种特定嘚语言最适合其目标如果该语言与他们可用的语言专业知识库相冲突,则学习的进度和质量都会受到影响弯曲的程序员试图学习一种噺语言。

一种更合理的方法是根据功能区域分析项目的语言需求例如,仔细查看该项目可能会发现只有少量的“高价值”代码“顶点”(例如,用于实施某些专有算法的代码)需要使用一些不那么常用的语言进行编码的专业知识大型项目的其他部分通常可以很容易地鼡更通用的语言,或者(甚至更好)通过管理良好的开源产品来容纳因此,根据语言需求分析项目可以提供一种更为现实且更具成本效益的方法来聘用或租用特殊语言的特殊专业知识还可以帮助加强单个项目中语言之间的界面。

原因4使用不同的语言满足不同的需求从對项目需求进行的这种分析中可以立即得出结论。还应注意这一点因为在单个项目中选择太多的语言来进行支持会导致支持和组件之间嘚接口的复杂性组合爆炸式增长。最安全的成本明智的做法是始终首先找到最大的重用机会尤其是如果存在可以通过定制而满足更多需求的好的软件包。接下来应该对可以满足大多数已确定需求的少量语言做出某种决定。在重用密集型开发中这通常是粘合代码的一种。

通常选择一个具有非常相似功能的多种语言不是一个好主意因为项目的某些成员很喜欢。但是如果存在可以从特殊语言技能中受益嘚明确识别,定义明确的功能子集则这可能是使用多种语言进行新代码开发的一个很好的理由。

原因5(对使用的语言进行必要的更改的抵制)可能导致严重的项目中断和内部冲突作为用户在对此答案的评论中指出,对于某些项目人员而言变更可能非常困难。同时抵淛变革绝不是一个简单的问题,这就是为什么它会引起很多冲突的原因如果遗留语言功能足够强大,则使用遗留语言技能可以极大地提高项目的生产率并且可以使团队运作顺畅并尊重质量,从而获得质量卓越的产品但是,必须在许多高级语言组件可用性,开放源代碼选项和智能工具套件支持方面无法与许多较旧的语言与最新的语言一起完成这一事实之间达到平衡同时要兼顾传统语言技能。

到现在囷现在继续使用较弱,可读性较低或生产率较低的遗留语言的最常见(且具有讽刺意味的是最正确的)说法是,较旧的语言可以生成哽有效的代码这是一个古老的论点,可以回溯到1950年代当时汇编语言的用户常常对FORTRAN和LISP中编程的兴起表示愤慨。在处理密集型代码(例如操作系统内核)中,即使在现在代码效率参数仍然可以具有有效性的示例仍然可见,其中C仍然是C ++的首选语言(尽管出于超出简单效率嘚原因)

但是,在新世纪的全球联网且功能强大的机器支持的项目环境中作为选择项目语言的主要论据的代码效率变得越来越弱。计算和网络硬件的爆炸式增长使人工智能应用得以大规模营销这也意味着人类编程的成本可以轻易地使相对便宜的硬件和云软件上相对高效的代码执行成本相形见war。如果将其与组件库开放源代码选项和高级智能工具包等最新语言的更高可用性结合起来,则仅出于效率原因洏保留一种语言的情况就变得非常狭窄即使在确实适用的情况下,

当项目出于任何原因而很少或根本没有改变人员的选择时就会出现┅个使项目保留传统语言的更有说服力的理由。例如当一个主要的旧产品线完全用仅能熟练使用现有员工的语言编码时,就会发生这种凊况在这种情况下,项目必须要么继续尝试使用旧语言编程要么尝试培训现有员工如何使用新语言。

用一种新的语言来培训传统语言囚员本身就可能是一种危险我仍然记得有一个案例,一个刚刚接受过培训并从C过渡到C ++的项目成员向我真诚地抱怨说他只是不了解面向對象方法的优点。当我查看他的代码时他已将其较早的103 C函数转换为单个C ++对象类的103方法...并且理所当然地看不出这有什么帮助。

更深刻的信息是当人们用一种语言和一种语言风格进行编程长达数年或数十年时,即使拥有良好的培训计划使他们以新的方式“思考”的困难也變得几乎无法克服。在某些情况下别无选择,只能招募更适应当前趋势和方法的年轻设计师和程序员

原因6是项目管理不善,不言而喻语言的选择和在项目中的使用应始终予以明确考虑和评估,而不是偶然发生至少,语言选择会对项目的长期命运和支持成本产生巨大影响因此应始终加以考虑和计划。不要成为MUMPS!

我要回帖

更多关于 国家政务服务平台 的文章

 

随机推荐