SmartClient学习(三):分布式智能客户端应用程序开发最佳实践
SmartClient(智能客户端)笔记二,主要学习了第六讲:分布式智能客户端应用程序开发最佳实践.
教程主要讲解了分布式和实现方法.Remoting,Web Services和Web APP.后两种用的算多了,主要是Remoting.
所谓分布式就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,解决了网络中存在的数据异构、数据共享、运算复杂等问题,是信息系统技术的一大进步。
一 分布式设计
1.分布式应用程序具有很多优势:
a.客户端仅需较少硬件支持,共享高效的服务器硬件b.在客户端仅仅部署少量组件,因此易于应用程序更新
c.易于监视应用程序,备份数据
e.服务器为安全提供了额外的层面
2.分布式设计分为两类:同步和异步
异步虽然灵活性很好,但是设计,实现和测试比较困难,同步简单,因为基于传统编程模型,所以暂时只专注同步.
基于RPC的同步设计,RPC = 远程过程调用(Remote Procedure Call),proxy-stub对象使用同步调用,Proxy位于客户端, stub位于服务器端….
主要的几种同步设计:
Web service: 当主要需要数据和跨平台功能时
Web app: 平台无关GUI
二 Remoting
应用程序进行调用,等待专用数据返回,.NET需要同时在客户端和服务器端安装,最有效率的方法.
由于使用专用数据格式以及自定义网络协议,因此有着,更高的效率.
1.实现:
类需要继承自MarshalByRefObject 以便对象能够保持在服务器端—并且客户端能够维持对象的引用.服务器端(IIS作为主机):
a. 创建空的Web工程,命名为CalculatorServerb. 复制CalculatorComponent.dll, 添加引用,复制到C:\inetpub\wwwroot\CalculatorServer\bin
c. 编辑 web.config 映射到远程调用对象…
<configuration>
<!--Test: surf to http://localhost/CalculatorServer/Calculator.rem?wsdl -->
<system.runtime.remoting>
<application>
<service><wellknownmode="SingleCall" objectUri="Calculator.rem" type="CalculatorComponent.Calculator,CalculatorComponent" /></service>
</service>
</application>
</system.runtime.remoting>
...
客户端(初始化并且调用):
a. 复制并且引用CalculatorComponent.dll以便于.NET能够自动构建代理b. 添加引用 System.Runtime.Remoting
c. 一旦应用程序启动,配置remoting
d. 使用new创建远程calculator对象
using SRR = System.Runtime.Remoting;
...
SRR.RemotingConfiguration.RegisterWellKnownClientType(System.Type.GetType("CalculatorComponent.Calculator,CalculatorComponent","http://localhost/CalculatorServer/Calculator.rem");
...
calc = new CalculatorComponent.Calculator();
sum = calc.Add(x, y);
2.概要
a.Single-call,无状态,IIS-宿主设计:简单,可扩展,较为高效的方法b.SingleCall 与 Activated (每个客户端只有一个对象) 与Singleton (全局只有一个对象)
c.二进制格式消息, TCP/IP 通用通道
d.自定义处理宿主
e.最小化客户端部署(界面/系统兼容性修正程序 )
f.可以重新设计类以减少对服务器的调用次数(客户端类设计为可序列化的,作为参数传入服务器端,返回需要数据.)
三 Web Services(略)
应用程序发出请求,等待XML数据,客户端能够是任何平台—跨平台!有些思想类似remoting, 除了使用Web架构和XML来实现跨平台!
四 Web APP(略)
浏览器请求页面,等待HTML数据,平台无关的GUI,正是我们所期望的…
________________________________________
Q:Remoting和Web Service都是使用IIS服务器么?都是通过的Http协议?区别仅在于数据传输一个是专用的一个是通用的?
A:Web Service使用IIS作为Web服务器,通过HTTP协议进行数据传输和调用。而Remoting并不限制在IIS服务器上面,另外Remoting可以通过HTTP和TCP协议(数据传输更高效)进行数据传输
________________________________________