WINSTC(windows remote server/run time/remote client)自己想的b/s方案

经过长期的MES平台开发工作,整个对B/S ,C/S 的理解越来越模糊了.

2000年的时候第一次听到B/S系统的感觉,觉得很神秘和高科技,然后知道了,B/S就是(Browser/Server),而C/S就是(Client/Server).

工作2年后,感觉B/S和C/S各有长处,两者结合发挥是最好的.

现在,再次和一个学生讨论到B/S,C/S的架构时,忽然发现我对B/S的理解感觉总是怪怪的,难道说,任何能在浏览器里运行的程序,都是B/S吗?还是任何用HTML展现的UI都是B/S的?(这是对我自己提的问题)

关于B/S,我自己每次被自己的观点打败,如 TestDirector ,它是DELPHI写的测试平台,但它是B/S 的,为什么呢,因为它写成了ActiveXForm ,就是在浏览器内运行,通过DCOM访问服务.那如果它去掉IE那个壳,直接用OLE容器装入运行,那不就得叫做C/S程序了?但我觉得这样的逻辑好象很可笑.

最后,让我可以欺骗自己的一个观点就是,B/S程序的核心逻辑都是到SERVER端,CLIENT很瘦,这个就是B/S;不过自己还是给自己再增加一个反驳观点,C/S程序一样可以让CLIENT很瘦,也可以通过HTML来展现,并且交互的很好...

没办法了,还是从部署上来说....IE每个WINDOWS上都有...但这样,又还是回到原来的观点:在浏览器里运行的程序就是B/S,否则就是C/S..??

那派生出来的问题还有;

比如:如果作到C/S程序和B/S都是同一套?只是运行模式不同?用WinFX?可这又不太现实,因为它目前离我还太遥远了.

那根据WinFx 的思路自己做一个吧,那还不如等一年...

最后还是自己动手做了个,超级弱智的,就是假冒IE,下载远端的DLL到本地,并执行.

这个是我的思维导图.


根据这个思路,写了一个工程.实现了基本模式;

测试的时候,请注意 WINRC 的 webservice 的Url 属性是否指向正确的webservice地址;
/Files/Chinasf/WinRC.rar[include full sources]

不要笑我为什么做这个,我是比较笨的那种人,因为我知道B/S的很多缺陷,至少它不能完美的实现当前这个应用需求。难道非的用ASP.NET做出来的才叫B/S吗?
posted @ 2006-06-11 23:49 萧寒 阅读(3488) 评论(24)  编辑 收藏 网摘 所属分类: C# WinForms.NET WebForms

  回复  引用  查看    
#1楼2006-06-12 04:44 | C# hack      
面向市场的命名,而非面向技术的命名
  回复  引用  查看    
#2楼2006-06-12 08:02 |       
您的想法和智能客户端、ClickOnce部署很接近哦!
  回复  引用    
#3楼2006-06-12 09:05 | kw2006[未注册用户]
楼主需要的是当头棒喝 + 油锤灌顶: ;-)
“假刀非刀,假剑非剑!!”
“当妖有了人的心,就不再是妖,而是~~~”


我想,这里关键词不是 B 或 C,而应该是 deployment 和 security。
运行纯 html 所需要的 permission是什么?
运行 html + javascript 所需要的 permission是什么?
运行 html + javascript + xmlhttprequest 所需要的 permission是什么?
运行 active X control 所需要的 permission是什么?
运行 smart client 所需要的 permission是什么?(在浏览器中,和 network shared folder 和本地)

等等等等。


  回复  引用  查看    
#4楼2006-06-12 09:09 | 風語者·疾風      
是的,请看.NET 2.0里的WinForm发布方案:ClickOnce。自动对WinForm包装为自动更新,也可以让WinForm只能在IE上执行。
  回复  引用  查看    
#5楼[楼主]2006-06-12 09:13 | 萧寒      
欢迎大家锤我!
  回复  引用  查看    
#6楼2006-06-12 09:15 | 双鱼座      
C/S架构:其中的S是指RDBMS,就是客户端直接连接数据库的系统。往往是直接利用RDBMS的功能来处理并发、负荷平衡等,系统间的连接也通过RDBMS交换来进行。这是最传统的一种方式。
B/S架构:其中的B是指浏览器,当然S就是指Web Server了。只要是通过浏览器来运行的都算B/S,包括ActiveX Form和很多RichClient应用(例如Flex也是ActiveX Form)。B/S架构是随着互联网的发展而发展的,由于突破局域网的限制而受到欢迎。
Web架构:特指采用Http类似协议的一种架构,客户端不一定是浏览器当然也可以是浏览器。ASP.NET就是这样一种架构。采用Html的Web架构并通过浏览器解释的Web架构当然也是B/S架构。目前的Web架构受广域网限制,采用Html+Javascript描述。当然SOA+RichClient的方式也是Web架构。将来Xaml也可以算Web架构,如果不仅仅运行在局域网内的话。
分布式架构:......

  回复  引用  查看    
#7楼[楼主]2006-06-12 09:21 | 萧寒      
@双鱼座
我这个算不算"Web架构",我越看越糊涂

另外请教各位,c#可以写 activexForm 吗?

  回复  引用  查看    
#8楼2006-06-12 09:25 | 双鱼座      
@萧寒
你这个类似Java Start,N年前就已经有了,更别说现在的ClickOnce了。

  回复  引用  查看    
#9楼2006-06-12 09:27 | 双鱼座      
@萧寒
C#当然可以写ActiveForm,并且非常简单。

  回复  引用  查看    
#10楼2006-06-12 09:36 | idior      
c/s也可以是分布式系统,"C/S架构:其中的S是指RDBMS" 这个是c/s的起源了,现在的定义肯定变了。
基本上Present Layer的物理分布可以决定是B/S还是C/S。

  回复  引用  查看    
#11楼[楼主]2006-06-12 09:40 | 萧寒      
@双鱼座
Java Start我知道;那ActiveXForm怎么写?什么工程类型?有资料吗?谢谢!

我试过" Internet Explorer 中使用 Windows 窗体控件 "http://chs.gotdotnet.com/quickstart/winforms/default.aspx">http://chs.gotdotnet.com/quickstart/winforms/default.aspx ,但是这个好象问题很多,我用了多个组件的control无法正常装载出来。另外需要activexForm 是ocx的.

@idior
我就是觉得定义有些不准确,越来越糊涂了;

  回复  引用  查看    
#12楼2006-06-12 09:57 | 双鱼座      
@萧寒
直接用C#写Native的ActiveX Form是不现实的,但是可以通过注册COM(注意Project属性中的“为COM Interop注册”)以及本地安装有.Net Framework的前提下将UserControl发布为ActiveX并由IE调用。这是王洪超的访谈:http://www.microsoft.com/china/community/chat/chatrecord/chat20020829.mspx">http://www.microsoft.com/china/community/chat/chatrecord/chat20020829.mspx

@idior
请教现在C/S的定义是什么?“基本上Present Layer的物理分布可以决定是B/S还是C/S。”不能支持。B/S和C/S无法囊括所有的系统。
而C/S这样的概念与分布式架构这样的概念其实并不是并列的,属于不同层面的概念。就象数字5,是奇数,但是也是质数,不能因为是质数了就不能是奇数。

  回复  引用  查看    
#13楼2006-06-12 10:35 | idior      
Client Server
最初的C/S如你所说就是基本上所有的业务逻辑都处在Client端,而Server端就是DB加SP.
后来由于该方案不够scalable。所以提出了三层架构(物理分层),这样Client基本上只负责UI,而通过分布式对象来调用BL,这样我们就可以用pool,web farmer等来增强我们的水平扩展能力。这就是进化了的C/S.
而B/S就是把UI的代码放在了Web Server上,Client就是一个浏览器,至于Web Server那边怎么搞分布式(是否分布BL.DAL),那就是他的事了(事实上EJB就是分布的过头了,而Spring也就是尽量避免分布式)

所以我认为基本上Present Layer的物理分布可以决定是B/S还是C/S,不当之处还请指出。

  回复  引用    
#14楼2006-06-12 10:38 | lovebanyi[未注册用户]
我的认为是你在浏览器里一放入com控件就不是B/S了..除了哪种非常流行每台都有的..flash控件外
  回复  引用    
#15楼2006-06-12 10:59 | lazylu[未注册用户]
楼主把浏览器和IE划了等号~~~IE能运行ACTIVEX,不代表其他浏览器都能运行ACTIVEX,楼主倒是试试LYNX上面跑跑ActiveXForm?嘻嘻
  回复  引用  查看    
#16楼[楼主]2006-06-12 11:08 | 萧寒      
@lazylu

我只是说一个方面;不能跑activex,至少可以跑java applet 啊

@lovebanyi
你的观点有点偏激我觉得,比如testdirector 就是一个很好的B/S的测试平台,但它就是基于activex.


@idior
我认同你的观点:Present Layer的物理分布


to all.
firefox,ie 不就是 webserver 的 client 吗?就是一个c/s;这b/s 是在它的基础上提出的;所以浏览器的应用=B/S 应用好象比较合理了。

  回复  引用  查看    
#17楼2006-06-12 11:12 | Lostinet      
BS还是CS,不是看客户端的形式,而是看通信方法。

例如如果用HTML写个IE的HTA,但是用WebService/XMLRPC或其他的方式和服务器通信,而不是用Form提交或者换Url , 那么这个 HTA 就是 C/S 程序。

以前公司写的程序都是混合着的,首先是个CS的外壳,一些是用VB来做C/S的应用。 而某些功能则内嵌一个浏览器做B/S应用。

一时之间这两种应用不需要合并,因为他们有各自的优点。


  回复  引用  查看    
#18楼[楼主]2006-06-12 11:13 | 萧寒      
@ 双鱼座

感谢;不过王洪超的访谈只是轻描淡写的提到;这个应用演示我在.net 1.0 的时候就学习过;至今没学会如何部署,比如多个程序集..呵呵.

@Lostinet

你的公司的做法,我也考虑过;所以和我写的那段演示也是一样,说简单点就是自己做个IE浏览器,集成起来;但这个做法带来的后果就是我文内的那些矛盾定义问题;

  回复  引用    
#19楼2006-06-12 12:28 | jjx[未注册用户]
csla .net 有个netrun ,在.net 1.1下工作的很好,你可以看看
csla.net 2.0不知道有没有,反正有clickonce 就够了

i love c/s,呵呵

  回复  引用  查看    
#20楼2006-06-12 12:57 | 双鱼座      
@idior
明白你的意思。不过我觉得3-Tier/N-Tier与C/S是两个对立的概念,因为C/S基本上就是2 Tier,只是从不同的层面上的View而已。
http://www.sei.cmu.edu/str/descriptions/clientserver_body.html">http://www.sei.cmu.edu/str/descriptions/clientserver_body.html
BTW:我没有觉得C/S的概念以什么为标志而发生了变化,所以我否认“进化的C/S”这一说。

  回复  引用  查看    
#21楼2006-06-12 13:04 | 双鱼座      
@Lostinet
B/S或者C/S我不认为非此即彼。在你看来Web中的Ajax也是C/S了。

  回复  引用  查看    
#22楼2006-06-12 18:51 | cnlamar      
B/S本身就是C/S的一个特例,极端点,你可以认为一切不仅仅包含HTML的都是C/S,LOSTINET大哥的观点我比较赞同。
  回复  引用    
#23楼2006-06-13 14:55 | longzx[未注册用户]
最同意kw2006的观点,这是一个关于“部署”和“安全”的问题。

对用户来说,无须冒安全风险(也称信任)的应用就是b/s,需要冒安全风险的应用是c/s。

对应用提供商来说,能立即可靠自动更新的应用是b/s,不能立即可靠自动更新的应用是c/s.

当java webstart和clickone能够达到上述要求时,也算是b/s应用了。

  回复  引用    
#24楼2006-07-09 01:28 | 怪怪[未注册用户]
@Lostinet
@双鱼座

感觉都有点问题。我觉得两点:

第一,这个Client是Browse性质(无论Browse的信息是什么具体形式如何),允许一定的Proccess,但不能发挥主要的处理数据的功能。

第二,除非上述特征非常明显,否则还应该尽量要求基于Http协议。其实这个第二条不必要,但如果要和大多数人对B/S的习惯出发各人有各人的想法,但能抽出来的共同点是至少Http承载B/S还是主流。

这样的应用叫做b/s。




发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 423463




相关文章:

相关链接: