我们在开发程序的时候,往往会在B/S和C/S模式之间摇摆不定,因为这两种模式在特性上各有千秋,常常想如果能够结合两者的优点就好了,呵呵。Smart Client正是结合两种模式的一种尝试,它构建于Web Service提供的功能之上,同时具有B/S模式通过网络服务器集中发布的优点,和C/S模式可以离线工作的优点,并可以按照不同的终端设备进行裁减。M$的.NET产品架构按Don Box的说法可以分为两部分:CLR和Web Service,而MS提出的Smart Client概念正是链接这两者的桥梁。
下面这两篇文章从整体架构上介绍了Smart Client的概念:
Smart Clients: Combining the Power of the PC with the Reach of the Web
Smart Client Application Model and the .NET Framework 1.1
就发布方式来说,Smart Client可以通过网络服务器发布:以 http://RemoteWebServer/myExe.exe 形式提供直接下载运行;或者通过程序在后台调用System.Reflection.Assembly.LoadFrom自动加载。
例如下面代码从服务器上直接载入一个模块并使用之:
以下为引用:
Assembly downloadedAssembly;
Type formType;
Form downloadedForm;try
{
//download and load the assembly
downloadedAssembly = Assembly.LoadFrom("http://RemoteWebServer/CSharpForm2.dll");// find the type in the assembly for the object we want to create
formType = downloadedAssembly.GetType("CSharpForm2.Form2");//Create an instance of the desired type and show it
downloadedForm = (Form) System.Activator.CreateInstance(formType);if (downloadedForm != null)
{
downloadedForm.Show();
}
}
catch (Exception exc)
{
MessageBox.Show(exc.ToString());
}
而因为.NET架构的支持,这种发布方式无需担心“Dll Hell”问题,真正做到XCOPY的分发策略。
与传统的B/S模式程序相比:Smart Client程序可以离线运行,随时随地进行工作;并可以完全利用本地机器上的强大能力,如调用本地API,使用打印机等等。与传统的C/S模式程序相比:Smart Client程序可以使用透明的Web Service调用服务器端功能,穿透防火墙,同时无需象C/S程序那样通过CD/DVD介质分发,真正做到移动代码的概念,呵呵。
下面这篇讨论中,MS里主管Smart Client的几位老兄回答了使用者关于 Smart Client 的一些问题:
Smart Client Development Platform
同时MS还在开发新的客户端软件发布技术ClickOnce,让Smart Client的发布更方便、安全。
Introducing Client Application Deployment with "ClickOnce"
Smart Client虽新,但其使用的概念和技术并不新,呵呵。这正是微软为人诟病的一贯风格,等概念和技术发展到一定程度,然后加以整合,出一系列技术和产品,将还没站稳的先行者一网打尽 :P
比如离线工作的概念,Borland早在几年前的 Delphi 4 就加入了TClientDataSet支持数据的离线操作,并逐渐增加自动同步和XML支持等功能;再比如ClickOnce的概念,怎么看也象 Sun 为Java客户端程序分发推出的 Web Start的概念,只是更为人性化。
而就通用软件整体计算架构的发展来说,我认为可以根据其计算重心的转移,分为几个时期:
Long long ago, 在传说中的Mainframe时代,计算重心稳固在计算能力高度集中的服务器端,客户端只是完成最简单的控制操作;
然后是PC机的黄金时代,逐渐强化的台式机使得计算重心开始转移到本地机器上,摆脱主机的桎梏,单机软件迅猛发展;
但PC机的发展速度无法完全满足IT应用的需求,因此C/S模式开始大行其道。通过文件服务器或数据库服务器的大规模应用,计算重心又一次向服务器端偏移,但客户机上仍占用相当的比重,可以说计算重心跨越两者;
而随着Internet的飞速发展,以及终端数量的迅猛增长,C/S模式暴露出其固有的弱点,网络穿透性差以及发布和维护复杂等。瘦客户端程序和B/S模式逐渐抬头,计算重心又一次向服务器端回归;
而今随着跨平台跨网络跨应用的需求增加,以Web Service为基础的分布式计算思想,以及网格思想的发展,使得“网络就是计算机”的概念逐渐实际化。计算重心逐渐分布在整个网络之上,用户使用时无需知道服务实际上是由谁提供的。
而Smart Client概念的诞生,可以说正是整体计算架构发展到一定阶段后应运而生的,将会作为B/S和C/S模式的有力补充,并将随着 Web Service 的发展,以及客户端设备广泛化的趋势,逐渐侵蚀部分B/S和C/S的势力范围。 :P