用JavaScript编写业务逻辑?

原创 2016年07月13日 16:25:19

Web应用程序刚刚兴起并取代传统客户端应用程序时,技术热点在服务器端开发语言。从ASP、PHP到Java、ASP.NET,无论采用哪种技术,作为一个系统核心的业务逻辑都是用一种运行在服务器端的语言编写的。架构师习惯将一个应用系统分为多层,视图层、业务逻辑层和数据层等,而它们也都是以某种服务器端编程语言,结合html和sql等技术,在服务器上运行。JavaScript作为运行在浏览器中的语言,仅仅是用来完成校验、界面的零散修改等任务。那时候谁要是提出用这种辅助性的语言来编写业务逻辑,一定会被当成天方夜谭。然而时光流转,技术发展,Web系统越来越倚重JavaScript。JavaScript语言的能力和特性被彻底发掘,Ajax成为Web开发的常规,JavaScript框架层出不穷日新月异,昔日的天方夜谭越来越多变成现实。利用某个MVC模式的JavaScript框架,业务逻辑代码运行在浏览器中,通过RESTful服务和服务器交换数据,是越来越多功能丰富、外观华丽的Web应用的技术路径,推向极致便是所谓的单页面应用。
在这种趋势下,一个必然会产生的问题就是业务逻辑真的应该全部从服务器端移到浏览器端吗?
好处:
1. 更快的响应。Web应用系统响应所费的时间一大部分是用在网络传输上。传统的Web应用每当要执行业务逻辑时,哪怕是很简单的计算,都要提交到服务器,再等待返回整个页面。等到后来采用Ajax技术,服务器端可以只返回执行业务逻辑后的数据结果,性能就大大提高。更进一步地,如果一开始就将应用的模型数据传输到浏览器,后续的计算都用JavaScript完成,只有当需要更新数据库时才返回到服务器,网络传输就更少,系统响应也就更快。而且,应用程序会用到一些无需持久化保存的临时数据,比如和界面显示相关的或者计算时用到的中间数据,对这些数据的运算也都无需在服务器端进行再传输到浏览器。这些因素的共同作用就使得Web应用在很多时候的响应速度可以达到本地应用的水平。
2. 更简单的结构。一项功能通常既包括看不见的运算,也包括用户界面的变化。如果以传统的方式来实现,服务器端代码进行业务逻辑的计算,将结果传输到浏览器,JavaScript再修改html完成显示上的变化,分别用两种语言编写,服务器端发送数据前的编码和浏览器端接送数据后的解码也都需要专门的工作。将业务逻辑转移到浏览器端用JavaScript编写则会让代码变得更一致,结构更简单。
3. 更好的伸缩性。代码分散到各个用户的电脑上执行,自然减少了服务器的负荷。

坏处:
1. 用户环境的不确定性。不同用户的电脑配置、浏览器种类会给应用程序的表现带来不确定性。虽然说“万一用户禁止JavaScript运行怎么办?”这样的忧虑在如今显得有些杞人忧天,但JavaScript运行速度、浏览器对脚本的支持乃至缓存问题等用户环境上的差异导致的不确定性比起代码集中在可控的服务器端运行还是大得多。
2. 代码的隐私性和安全性。用JavaScript编写业务逻辑代码意味着你的系统暴露在大庭广众之下。除却安全性上的顾虑,单单曝露于众这一点,就会让长期以来习惯于要保护代码知识产权、千方百计隐蔽、加密、混乱化代码的软件公司和程序员觉得彆扭,和失去隐私的感觉一样。不仅如此,服务器端的数据接口也变得外人可见,因而它们编写的安全性也需要提高。
3. JavaScript。这一点实际上是见仁见智的。JavaScript与服务器端语言Java、C#、Python、PHP比起来是不是适合用于编写业务逻辑的复杂代码,你是讨厌它的没有编译时检查、难于调试测试、语言设计上的缺陷还是喜欢它的简洁、灵活、函数式编程?这一点或许是对于一个程序员来说,采用新旧哪种开发模式的决定因素。

曾经的客户端应用程序,被称为胖客户端,以此对比Web系统所用的浏览器是瘦客户端。风水轮流转,如今随着一个系统中越来越多的代码用JavaScript编写,浏览器又逐步变成富客户端。然而背后的动因和逻辑都是一样的,那就是用户是上帝。前一次转换是为了省去用户安装和更新的时间,后一次转换是为了让用户享受到更快的速度和丰富的功能。在手机开发领域,模式干脆又回到了客户端——App,因为本地运行的App不仅速度更快、可以离线运行,还能调用摄像头、地理位置、话筒听筒等手机硬件功能,总之就是让用户有更好的体验,而这背后的程序员们则或者啃书本更新技能,或者长江后浪推前浪。

[架构设计] 什么是业务逻辑

讨论设计时,专业词汇满天飞,每个人的技术背景、工作经验上的不同都会导致在理解上存在着差异。无论是SEI的定义、OMG UML的定义、还有各路大神的定义,都有从不同视角带来的差异。准备后面关注这些定义的...
  • HorkyChen
  • HorkyChen
  • 2015年04月15日 00:51
  • 5406

编程内功:业务逻辑抽象

用代码量衡量程序员的工作量大抵是世上最愚蠢的事了。 今天重构了一段年代久远的大约2000行的代码,目前剩下200行左右,这段代码的功用大致是这样的: 将一些数据,按照几个维度的规则填充到另一个表里面,...
  • liaoyundababe
  • liaoyundababe
  • 2016年10月17日 18:47
  • 840

js高级编程入门理解

1、js有对象吗,如果有对象,如何创建对象,对象里面的内容又是什么。 答:js有对象,通过 new 函数名创建对象,对象里面的内容是prototype上的内容下面我们案例测试window.onload...
  • u012316953
  • u012316953
  • 2016年09月26日 13:30
  • 2452

细说业务逻辑

细说业务逻辑     ...
  • fuuckwtu
  • fuuckwtu
  • 2011年02月17日 13:57
  • 8447

js中逻辑运算符&&||!

js中逻辑运算符在开发中可以算是比较常见的运算符了,主要有三种:逻辑与&&、逻辑或||和逻辑非!。 当&&和|| 连接语句时,两边的语句会转化为布尔类型(Boolean),然后再进行运算,具体的运算规...
  • qq545698514
  • qq545698514
  • 2016年12月14日 13:07
  • 3417

细说业务逻辑

前言 记得几个月前,在一次北京博客园俱乐部的活动上,最后一个环节是话题自由讨论。就是提几个话题,然后大家各自加入感兴趣的话题小组,进行自由讨论。当时金色海洋同学提出了一个话题——“什么是业务逻辑”。...
  • hjf19790118
  • hjf19790118
  • 2011年11月04日 09:34
  • 3556

开发业务逻辑

转自:http://www.uml.org.cn/zjjs/201008021.asp   前言 记得几个月前,在一次北京博客园俱乐部的活动上,最后一个环节是话题自由讨论。就...
  • ygygbk
  • ygygbk
  • 2015年07月21日 10:52
  • 1391

用JavaScript编写业务逻辑?

Web应用程序刚刚兴起并取代传统客户端应用程序时,技术热点在服务器端开发语言。从ASP、PHP到Java、ASP.NET,无论采用哪种技术,作为一个系统核心的业务逻辑都是用一种运行在服务器端的语言编写...
  • starrow
  • starrow
  • 2016年07月13日 16:25
  • 3855

校招季--献给前端求职路上的你们(JS)

JavaScript1、函数与数据类型[Undefined,Null,Boolean,Number,String,Object](1)var 预编译,当前作用域内的变量声明被提前到作用域顶部,但赋值保...
  • i10630226
  • i10630226
  • 2016年07月24日 12:03
  • 3077

vs---编写第一个JavaScript程序

创建网站项目 向Html嵌入Js文件把js文件直接拖放 声明类型 体验向网页输出内容F5键调试/或者直接右键(在浏览器中查看)document...
  • qq_36482772
  • qq_36482772
  • 2017年09月12日 20:11
  • 252
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用JavaScript编写业务逻辑?
举报原因:
原因补充:

(最多只允许输入30个字)