世上没有B/S系统,只有B系统和S系统.

翻译|其它|编辑:郝浩|2007-09-26 10:50:47.000|阅读 880 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

随着  prototype DWR    ajax  框架的流行服务器端生成  js  代码返回客户端,由客户端调用(直接调用或  eval)似乎已经成为了一种很正常的做法(是否流行我不知道)

这种做法(其实是一种设计)本身无可厚非但是常常被人错误的理解和应用(此处所谓的"错误"是基于我的立场也许更多的人会认为我的观点才是错的 呵呵)

用过  DWR  的人都知道,实际上  DWR  传给客户端的  JS  并不是包含了很复杂的业务逻辑和表现逻辑他只不过是向客户端发送了一些信息这些信息告诉了客户端如何调用服务端暴露出的服务。这些信息本质上只是一些数据,确切的说只是一些参数DWR  实现的  web remoting,只是对下面这种做法的一个变种

代码

1.      ajax.request("service  对应的  url","service  需要的参数","service  调用结束后要做的事情")   

DWR  传过来的  JS实际上的只是扮演着"service  对应的  url""service  需要的参数""service 调用结束后要做的事情"这些参数所扮演的角色对于真正的业务逻辑还是包含在服务端的  service 

所以我不止一次的说过"没什么事情是必须要用  DWR  那种方式来做而用  prototype + servlet  做不了或是做起来很困难的"因为两者都能够做到而且也都正做着同样的事情

但是  DWR  的这种做法有时候会产生一些不良暗示服务端生成  js  供客户端调用是一件很不错的事甚至容易让人把这种做法和  JSF  的事件机制混为一谈于是通过  ajax  请求返回的信息变得丰富多彩其中最可怕的就是返回复杂的HTMLJS脚本

现在还有一种可怕的事情是客户端提交  js  脚本服务端用  rhino  运行(我曾就就做过这种可怕的事呵呵但是那个系统尤其客观性,不过其实完全可以避免的,只是当时懒了)

在一个  ajax  的请求与响应中服务端与客户端交互的信息应该只是作为数据载体的字符串(xml json序列等)这些数据会告诉对方要去做什么以及为对方提供必要的参数,而不应该包含告诉对方怎么做传递  js  语句也可以但是这些  js  语句一定要是能够和  json  划等号的任何夹杂了  if for = 等操作的  js  都是应该极力避免的

在服务器端生成  HTML  的做法实在是为了照顾羸弱的浏览器而做出的让步其实这种做法本身完全是个错误不过在相当长一段时间内我们还将继续错下去

当然我这里说的完全是  ajax  相关的东西JSPtag  不在讨论范畴之内但我还是要补充一句我虽然曾大量是使用和开发  tag但我对它是非常厌恶的使用上也许还比较愉快,但是开发起来真够恶心的我讨厌一切在服务器端生成  html  代码的行为关于  tag  这是另外一个很大的话题了以前在  javaeye  上的相关讨论并不少在这里就不再多废话了

好了现在该说些和标题有关的东西了()我先问几个问题当你要整合两个分别使用  j2ee    php  编写的系统时当你要在一个  j2ee  系统中使用  php  系统中的一部分功能时当你要从一个  j2ee  系统向另一个.net  系统中传递数据时你会怎么做会变态的用  java  重写另外一个系统会更变态的将  j2ee  系统用  php/.net  重写吗会用  j2ee  生成  php/.net  可以理解的代码让对方运行吗

不会的,你首先想到的会是  WS会是  MQ,会是  REST,会是  SOA.....

其实服务端与客户端就是两个独立的系统,而且是两个独立的异构系统处理他们之间的关系和处理两个大型的异构系统的关系非常类似应该咬住"服务"二字不放所谓"服务"应该是生产者提供,消费者享用.而不是你告诉我我每一步要怎样做然后我再一步步的做给你看这不叫服务这叫"奴役"任何企图在一端生成另一端代码的做法都是欠妥当的

因为世上没有  B/S  系统只有  B  系统和  S  系统

多说一句GWT  如果设计成是在运行期生成最终  html/js  代码的那么他将是愚蠢的幸好他们没那么但是现在的他离愚蠢也不远

这篇文章同样比较凌乱也不知道我说明白我想说的没其实我只是想告诉大家(主要是新手)应该站在服务的角度来看待系统的层次和结构每一层只是向其他层提供服务并享用其他人的服务而无权干涩别人提供的服务的细节也不应该让别人干涉自己有了这样的认识如何传递数据如何做到系统层次件的解耦就是很自然的事情了

当然本着"世事没有绝对凡事都有例外"的原则,我这些观点不适用于所有系统


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:csdn

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP