论坛首页 Java企业应用论坛

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

浏览 68294 次
该帖已经被评为精华帖
作者 正文
   发表时间:2007-09-13  
ray_linn 写道

当世界越多元,B/S的结合就越紧密。从这种意义上:server和client永远无法分割,因为只要是不同进程,就需要通讯协议。
你的公式是错的,BS之间包括了:
do what and format
what to do and format
S端提供的结果必然得以某种可以理解的格式呈现,所以B端总是从属于S端。client呼叫server都不是问题,问题是如何描述这种呼叫,所以有dcom,rmi,xml-rpc,soap...

再来说说这段

(我不是否定 或是辩驳 更不是争论 我只是希望在某个问题上充分的表达出自己的想法,而不是要证明谁对谁错 呵呵)

我从来没说过 server和client可以分割, 我也从来不认为 B系统 和 S系统 可以离开对方独立运行.(也许有人会说:那他们就应该是一个系统 呵呵 那只能说你对系统的理解比我的理解更宏观.)
虽然B系统 和 S系统一定要配合使用,但是两者应该做到: 我的B系统进行改造, S系统不用作改动,即使改动,也应该是配置级的,而不应该是代码级的.反之毅然. 理想的一个S端显然是 可以配合各种个样的B的.这个想法不是我首创的, 而且这个想法实际上就是 j2ee的一个使命啊.

另外,你说format, 还有s与b之间必须要有一个统一的协议,一个可以互相"理解的格式".
这个你说的完全正确. 但是不能因为有了这种协议,我们就要认为S与B是一个密不可分的整体.
两个异构系统进行 soa ws...时 也是要有一个协议的 ,也是要遵循某种规则的,但是你能说这时候他们两个是一个系统吗?

当然, 你可以把任何在一起协同工作 共同完成一个目标的 很多个系统看成一个系统, 那只能说是一个宏观上的概念,不在讨论范围呢.

不能因为两者合作做一件事 就认为他们是一个系统, 不能认为两者之间有协议 有约定 就认为他们是一个系统.

就好像 你不能把 手机制造公司 和 手机配件制造公司 看成一个公司.
他们之间用共同目的,他们之间有共同的协议,他们离开对方都不能存活,但是他们终究不是一个公司,不是一个系统,他们之于对方不是不可替换的.

0 请登录后投票
   发表时间:2007-09-13  
好文章!我想fins的意思是B系统与S系统是完全以数据为中心进行交互的,S只是负责提供数据(html,xml,json等),B负责接受数据并根据逻辑渲染然后处理页面操作逻辑,S不应该涉及与页面显示、操作有关的逻辑。
我甚至有这样的想法,B取得数据-->本地存储数据-->用户在B中对本地数据进行操作(会包括逻辑)-->操作完毕,B将数据送回S,S进行S端数据更新。
这样S会相当的simple,B会相应的膨胀。当然一次回送也会存在效率问题。
0 请登录后投票
   发表时间:2007-09-13  
ray_linn 写道

说实话,你的帖子真的很乱,我实在看不出是如何推出B系统和S系统这个结论。
所以我就跳过你所有的东西,直接讨论你的题目。


恩 确实, 有机会我重新排排版吧.

其实我的核心思想就是帖子最后那段话:

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

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

0 请登录后投票
   发表时间:2007-09-13  
引用
我不是否定 或是辩驳 更不是争论 我只是希望在某个问题上充分的表达出自己的想法,而不是要证明谁对谁错 呵呵

我倒是希望楼主有自己的观点,事情越辩越明,没有明确的观点是不可取的,最后的结果很可能沿着别人的思路走了,丧失了很多独立思考的成份,废话不多说,言归正传。
我认为b端和s端是可以分开的
抽象出来看b端和s端
b端----->发送数据包到服务端
s端----->处理b端数据包,结果返回b端
进一步抽象为
b端----->发送url
s端----->返回数据(数据格式可自定义)
就是一个调用 返回的过程。
跟普通程序里面的方法调用有什么区别吗?普通的方法是这样调用
User user = findUser(username);

而bs结构是这样调用
Browser result = getServerData( url );

有区别吗?没有
所有说我们的server端完全可以做成像方法一样,你发送url过来我就给你返回数据 管你客户端是新浪还是sohu,是中国还是美国。
说到这里还有一个不得不提的安全问题,服务端应该可以禁止或允许某些客户端的调用
0 请登录后投票
   发表时间:2007-09-13  
fins 写道
我从来没说过 server和client可以分割, 我也从来不认为 B系统 和 S系统 可以离开对方独立运行.(也许有人会说:那他们就应该是一个系统 呵呵 那只能说你对系统的理解比我的理解更宏观.)
虽然B系统 和 S系统一定要配合使用,但是两者应该做到: 我的B系统进行改造, S系统不用作改动,即使改动,也应该是配置级的,而不应该是代码级的.反之毅然. 理想的一个S端显然是 可以配合各种个样的B的.这个想法不是我首创的, 而且这个想法实际上就是 j2ee的一个使命啊.


两个异构系统进行SOA通讯的时候,从业务的角度上看,它们确实是一个系统,为了某个共同的业务目的,A系统和B系统是系统的两个组件,这点我们既然着眼点不同,那就不需在辩论。

你既然承认BS是一定要协同的,那何来B系统和S系统,二者本来就不可分,这是我对你题目的不解。达到你所描述的理性状态,无非就是用某种自描述协议来解耦合,但是从成本效果上分析并不具太大价值。


或者你应该开卷明义,先把你认为的B系统和S系统划个边界先,如果就某人提到的S端不应拼装javascript,那这点我同意,但我认为S端可以封装javascript---如asp.net ajax.
0 请登录后投票
   发表时间:2007-09-13  
xly_971223 写道

b端----->发送数据包到服务端
s端----->处理b端数据包,结果返回b端 ----->S端如何理解数据报文?
进一步抽象为
b端----->发送url
s端----->返回数据(数据格式可自定义)------->B端如何理解数据报文


所以B/S握手基于相同协议是不可或缺的,S提供Json,B就得服从Json,S从Json改成Soap,B端就得改。

这就牵涉到 编码/传输协议/系列化/反系列化,甚至还有压缩,认证等等问题,远不是这么简单。
0 请登录后投票
   发表时间:2007-09-13  
fins 写道
yyjn12 写道
Brower 最大的用途不就是把服务器发送过来的html代码展现出来吗?

避免一切在服务器端生成客户端代码的行为,那怎么玩啊?

b端发出一个请求,s端响应请求,传回一个文本,这个文本就是一段html吧,最常见的情况.这个html就是包含了数据和样式.数据肯定是在服务器生成的吧,样式难道让s端随意展现?

不太理解.

.本来没资格在这个有"门槛"的社区发言的.不过这个问题的思想话我的确想弄明白.


你和刚才那位一样, 对我所说的 "服务端" "客户端" "生成" 这三者和你们理解的不一样.

你把 服务端 理解为 那他为我们提供服务的那台机器了.

确实,我们按你的理解, B端看到的一切 接收到的一切 都是S端发出的.

但是 我这里的 服务端确切的说 是服务端的业务逻辑, 而不是服务器.
也就是说我的意思是 
你不应该试图在服务端的逻辑处理里 拼装出本该由客户端负责处理的逻辑.

不知道我说的 你明白没.


从历史方面看
能用js写重用的人少之又少
而用java写出重用的人还是比较多的
而且在服务端写这种拼装句的话
更灵活一些。

烂用的例子很多。。。我没说它们。
0 请登录后投票
   发表时间:2007-09-13  
ray_linn 写道
xly_971223 写道

b端----->发送数据包到服务端
s端----->处理b端数据包,结果返回b端 ----->S端如何理解数据报文?
进一步抽象为
b端----->发送url
s端----->返回数据(数据格式可自定义)------->B端如何理解数据报文


所以B/S握手基于相同协议是不可或缺的,S提供Json,B就得服从Json,S从Json改成Soap,B端就得改。

这就牵涉到 编码/传输协议/系列化/反系列化,甚至还有压缩,认证等等问题,远不是这么简单。

基于http协议这个是肯定的 否则我们在这儿讨论bs就没有意义了
另外我想提一点,服务端提供什么 客户端就使用什么这个毋庸置疑的,任何系统都是这样
但是在bs系统中b端并不是只能被动的接受服务端的数据格式,在http request头中有一个
Accept:text/xml, application/xml , application/xhtml+xml

通过对accept的设置可以定制s端的返回格式,这样不同的客户端就可以根据需要获取数据
ps:bs要实现分离确实远不是这么简单,现在也仅仅是探索阶段
0 请登录后投票
   发表时间:2007-09-13  
楼主的意思是好的,就是有一点点标题党。

当然,楼主说的不可能适用于所有应用。对于大多数企业应用来说,它最好别分什么BS,完成功能最重要。而对于mashup应用,当然B是B,S是S啦。甚至还有本地应用,例如……单机游戏!B为主,S为从的说……

回头说说服务器发送js这个事情。抛开应用类型不谈,偶赞同把js限制在有限的范围内。一个是json,即作为一种数据传送格式。另一个是push功能的协议,主要是为了comet,以及可以解决跨域的问题。
0 请登录后投票
   发表时间:2007-09-13  
楼主的意思就是,两个系统之间,传递的就应该是VO,不管这个VO是java的,xml的还是json的.
强烈鄙视楼主的标题!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics