Smart Client技术简要总结

摘要:Smart Client简称智能客户端,是Microsoft推出的一种将B/S(瘦客户端)和C/S(胖客户端)结合在一起的一种技术。Smart Client结合了B/S和C/S的优势,具有新的特点。

  1.Smart Client简介

  Smart Client简称智能客户端,是Microsoft推出的一种将B/S(瘦客户端)和C/S(胖客户端)结合在一起的一种技术。Smart Client结合了B/S和C/S的优势,具有新的特点。

  Smart Client的优点

  易于升级

  类似于B/S架构的程序,只要在服务器上更新软件,进行简单配置,客户端会自动进行软件的更新。比如在服务器的站点上建立一个虚拟目录,将客户端应用程序发布到该虚拟目录中,客户通过HTTP方式安装更新程序。

  富客户端,强大的用户界面,更好的用户体验

  Smart Client可以使用WinForm开发Client端程序,可以充分使用Winform上的各种控件和资源,突破B/S(瘦客户端)在表现能力上的限制,WEB如果实现某些功能可能必须通过ActiveX或Applet。

  充分利用Client端资源

  充分使用客户端的软件资源和硬件资源。

  可以支持在线使用和离线使用

  B/S程序需要实时的网络连接,数据交换和数据处理需要反复的请求响应,需要反复刷新页面。Smart Client允许用户将数据下载到Client端进行离线的数据处理,当用户重新连接网络时,可以手动或者自动向服务端提交更新数据。

  2.开发Smart Client需要解决的问题

  数据冲突

  Smart Client 允许将数据保存到Client端,离线处理数据,数据处理好之后向服务端提交,但是向服务端提交时会遇到并发的问题,用户离线处理的数据很有可能会出现数据冲突。Smart Client需要解决好并发数据冲突的问题。

  数据安全和应用程序安全

  离线处理意味着需要把数据存储在本地,需要防范敏感数据的非授权访问。我们上面提到Smart Client可以通过HTTP的方式安装部署和更新Client端程序,需要防范非授权的更新和程序运行。  

  3.Smart Client技术点简介

   Smart Client部署技术简介(OnceClick技术简介)

  OnceClick技术允许以三种方式发布应用程序,WEB方式、网络共享目录、媒体发布(如CDROM)等。WEB方式将应用程序发布到站点或虚拟目录,可以通过HTTP的方式安装、更新应用程序;网络共享目录将应用程序发布到网络中存在的公共目录中,用户可以通过共享目录安装更新应用程序;媒体发布可以通过CDROM安装应用程序,然后通过其他方式为应用程序通过更新。

  Smart Client离线数据处理

  Smart Client离线数据处理的方式有三种:数据库同步、隔离存储区、消息队列。数据库同步需要保持Client数据和Server端的数据库同步;隔离存储区需要在Client端开辟一块空间存储离线时的数据;消息队列是把数据处理提交给MQ,然后通过MQ提交到服务端(MQ只是一种提交数据的方式,并不能解决数据冲突的问题)。下面用一个例子介绍隔离存储区的实现方式:

隔离存储区就是在Client端开辟一块空间存储离线时的数据,在进行隔离存储区操作时,我们将会用到一个非常有用的命名空间 - System.IO.IsolatedStorage。

代码

using System.IO; using System.IO.IsolatedStorage; using System.Data;
namespace WaitHandleExample { class CacheHelper { /// <summary> /// 将数据写入本地文件 /// </summary> /// <param name="data"></param> /// <param name="fileName"></param> public static void WriteDataSetToIsolatedStorage(DataSet data, string fileName) { IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly(); using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(fileName, FileMode.Create, isoStore)) { using (StreamWriter writer = new StreamWriter(isoStream)) { data.WriteXml(writer, XmlWriteMode.DiffGram); } } } /// <summary> /// 从本地文件中读出数据 /// </summary> /// <param name="data"></param> /// <param name="fileName"></param> public static void ReadDataSetFromIsolatedStorage(DataSet data, string fileName) { IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForAssembly(); using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream(fileName, FileMode.Open, isoStore)) { using (StreamReader reader = new StreamReader(isoStream)) { data.ReadXml(reader, XmlReadMode.DiffGram); } } } } }

4.SmartClient的基本系统架构

系统架构简单介绍

  关键点说明:   出于降低复杂性的考虑,首先保证Client下载数据不落地,即Client端获取的原始数据不在本地磁盘上存储,对原始数据的处理结果发送给MQ,由MQ来完成最终的提交。   为了尽量避免数据冲突,通过业务协商和技术途径,尽量按用户分配原始数据,减少并发产生的数据冲突。   WinForm程序开发完成后,考虑使用微软的OnceClick技术发布到WEB站点上,所有的部署和后续程序更新通过WEB站点完成。   用户验证等数据交互工作由Client端调用Web Service来完成。

  5.选择合适的架构

  C/S架构和B/S架构虽然都有各自的缺点,但都有各自适合的应用场景,比如B/S架构如果碰到复杂的用户界面时,用户体验可能会比较差,但是在实际业务需求中,绝大部分的用户界面并不是非常复杂,少部分的复杂处理可以在业务需求允许的范围内使用JOB,SSIS或者自动处理程序来完成,所以选择B/S架构还是非常合适的。Smart Client提供了一种非常棒的开发思想,如果碰到收银机、简易手持设备系统时,离线处理可以带来很大的便利。从客观上来说,每种架构都自己的优势和不足,客观分析,根据需求、开发效率、成本、维护更新等因素选择合适的架构。

http://kb.cnblogs.com/page/78823/

时间: 2024-07-30 17:36:24

Smart Client技术简要总结的相关文章

MT7681 Smart Connection 技术分析

MT7681 Smart Connection 技术分析 第一次接触MTK7681芯片时在14年10月份,那时用的当透传模块用,配合手机端实现远程控制,很自然到要能够在手机上对模块的wifi进行配置,当时好像还不支持AP模式,但是支持一种SmartConnection技术,可以不在不连AP的情况下对wifi进行配置,在手机(Android)上调用MTK提供的库就能对配置了. 一开始以为调用了一些底层的驱动才实现了这个功能,心里还想着在iOS端应该是用不了的吧(大家都知道iOS App的权限很少,

Android应用程序UI硬件加速渲染技术简要介绍和学习计划

Android系统的流畅性一直被拿来与iOS比较,并且认为不如后者.这一方面与Android设备硬件质量参差不齐有关,另一方面也与Android系统的实现有关.例如在3.0前,Android应用程序UI绘制不支持硬件加速.不过从4.0开始,Android系统一直以"run fast, smooth, and responsively"为目标对UI进行优化.本文对这些优化进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注!

LVS集群中的IP负载均衡技术

章文嵩 ([email protected]) 转自LVS官方参考资料 2002 年 4 月 本文在分析服务器集群实现虚拟网络服务的相关技术上,详细描述了LVS集群中实现的三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR)的工作原理,以及它们的优缺点. 1.前言在 前面文章中,讲述了可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份).我们先分析实现虚拟网络服务的主要技术,指出 IP负载均衡技术是在负载调度器的实现技术中效率最高的.在已有的IP负载均衡技术

高可用的池化 Thrift Client 实现(源码分享)

本文将分享一个高可用的池化 Thrift Client 及其源码实现,欢迎阅读源码(Github)并使用,同时欢迎提出宝贵的意见和建议,本人将持续完善. 本文的主要目标读者是对 Thrift 有一定了解并使用的童鞋,如对 Thrift 的基础知识了解不多或者想重温一下基础知识,推荐先阅读本站文章<和 Thrift 的一场美丽邂逅>. 下面进入正题. 为什么我们需要这么一个组件? 我们知道,Thrift 是一个 RPC 框架体系,可以非常方便的进行跨语言 RPC 服务的开发和调用.然而,它并没有

【独家】终生受用的Redis高可用技术解决方案大全

最近很多朋友向我咨询关于高可用的方案的优缺点以及如何选择合适的方案线上使用,刚好最近在给宜人贷,光大银行做企业内训的时候也详细讲过,这里我再整理发出来,供大家参考,如有不妥之处,欢迎批评指正,也欢迎推荐更好的技术方案.不废话了,来看看方案吧- 总纲 Redis常见的几种主要使用方式: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 Redis各种使用方式的优缺点: 1.Redis单副本 Redis 单副本,采用单

视频管理软件技术分析报告(二)--商业VMS产品分析(Milestone)

1.公司简介 ??Milestone(麦视通)公司1998年成立于丹麦,是开放式网络型监控系统(全球领导品牌)的领导厂家.??Milestone是全球第一家开发出网络型开放式平台监控系统的公司.Milestone的VMS产品具有产品可靠.功能健全.系统稳定等特点,支持超过200 种以上品牌的4000多种网路摄影机.视频编码器.DVR.影像撷取卡,销售于全球超过200个国家. 2.VMS产品介绍 ??Milestone Systems 提供了各种类型的视频监控产品,XProtect? 视频管理软件

一窥kbmmw中的 smart service

在kbmmw 的新版中(还没有发布),将会有一个叫做smart service 的服务.这种服务的属性基于服务器端,并且可以自动注册服务名,下面就是一个简单例子代码.这个服务里面有有三个发布的函数:echostring,EchoReversedString和AddNumbers.这些函数使用一些声明变量,包括“魔法”参数变量,以便访问不同的客户端标识值. Attribute based server side code with auto registration. This example s

实操代码研究各种Java技术-java.toutiao.im

whatsmars https://github.com/javahongxi/whatsmars whatsmars-earth-web springmvc+velocitywhatsmars-earth-support-web earth工程的辅助工程whatmars-fs-web 用mongodb存储图片whatsmars-javase-example Java基础学习whatsmars-spring 研究springwhatsmars-tomcat 模拟tomcat实现whatsmars

Chromium网页渲染机制简要介绍和学习计划

作为一个浏览器,快速地将网页渲染出来是最重要的工作.Chromium为了做到这一点,费尽了心机,做了大量优化工作.这些优化工作是卓有成效的,代表了当今最先进的网页渲染技术.值得一提的是,这些渲染技术不仅适用于网页渲染,也可以应用在原生系统的UI渲染上.例如,在Android系统上,我们就可以看到两者在渲染技术上的相似之处.本文接下来就对Chromium的网页渲染机制进行简要介绍,并且制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Chrom