Smart Client技术简要总结
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。
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/
Smart Client技术简要总结的更多相关文章
- Smart Client Software Factory安装
首先要安装 Visual Studio 2010 SDK 不然无法安装 Smart Client Software Factory 2010 然后按顺序安装 GAX 2010 http://visua ...
- Delphi revelations #1 – kbmMW Smart client on NextGen (Android) – Scope problems
Delphi 启示 #1 – kbmMW Smart client on NextGen (Android) – 作用域问题 以更高级的方式使用kbmMW smart client,在Android设 ...
- 基于Web的实验室管理系统技术简要报告
基于Web的实验室管理系统技术简要报告 Copyright 朱向洋 Sunsea ALL Right Reserved 一.网站架构 该网站使用C#语言,利用SQL Server2008数据库,采用V ...
- 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)
转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...
- Introduction To The Smart Client Software Factory (CAB/SCSF Part 18)
1. Shell This is the start-up project for the solution. It is very similar to the start-up projects ...
- 毕设1--利用Java实现网页的模板功能技术---简要了解
首先,关于我对自己的毕业设计题目的理解,其中没有接触过的技术有怎么用Java实现将原有的Word的模板上传到网页中,在网页中进行相关操作.之所以把这部分放在一开始来进行了解是因为没有接触过这一方面,比 ...
- JavaFX技术简要总结
最近,做一个桌面应用程序的项目,需要考察相关技术,对于经常使用Java的我们来说,很自然的找Java的桌面程序开发技术,发现JavaFX是比较合适的,简单熟悉了一下,写出来给大家做个参考. 一 Jav ...
- 漫谈 Google 的 Native Client(NaCl) 技术(二)---- 技术篇(兼谈 LLVM)
转自:http://hzx5.blog.163.com/blog/static/40744388201172531637729/ 漫谈 Google 的 Native Client(NaCl) 技术( ...
- .NET Web开发技术简单整理
在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...
随机推荐
- svn安装和配置
安装svn 参考http://blog.csdn.net/dl425134845/article/details/41978541 系统版本 uname -a # 查看内核/操作系统/CPU信息 he ...
- WPF中的动画——(四)缓动函数
缓动函数可以通过一系列公式模拟一些物理效果,如实地弹跳或其行为如同在弹簧上一样.它们一般应用在From/To/By动画上,可以使得其动画更加平滑. var widthAnimation = new D ...
- String.format("%0"+length+"d", arr)中的%0和"d"分别代表什么
public static void main(String[] args) { int a = 8; String s = String.format("%04d", a); S ...
- 生成SESSIONID
生成SESSIONID uses SynCommons procedure TForm1.Button1Click(Sender: TObject);var i: Cardinal;begin i : ...
- IOS Reachability判断所请求服务器是否超时?
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的. Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法. ...
- 剖析ASP.NET Core(Part 3)- UseMvc(译)
原文:https://www.stevejgordon.co.uk/asp-net-core-anatomy-part-3-addmvc 发布于:2017年4月环境:ASP.NET Core 1.1 ...
- html Frame、Iframe、Frameset 的区别 详细出处参考:http://www.jb51.net/web/22785.html
10.4.1 Frameset与Frame的区别首先讲解Frameset与Frame之间的区别. 用来划分框架,每一个框架由标记.必须在之内使用,代码如下: 在上面的例子当中,把页面分为左右两个部分, ...
- 解决安装mysqlclient出现问题:mysql_config: not found
解决安装mysqlclient出现如下问题: Complete output from command python setup.py egg_info: /bin/sh: : mysql_confi ...
- jQuery.toggleClass() 和detach()方法详解
一.toggleClass()函数: toggleClass()函数用于切换当前jQuery对象所匹配的每一个元素上指定的css类名.所谓"切换",就是如果该元素上已存在指定的类名 ...
- IntelliJ IDEA 创建 java Maven项目
1.下载安装Maven 下载官网:http://maven.apache.org/download.cgi 下载解压到当前目录并建立LocalWarehouse文件夹,该文件夹为自己的文件仓库做存储. ...