摘要: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/

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

  1. Smart Client Software Factory安装

    首先要安装 Visual Studio 2010 SDK 不然无法安装 Smart Client Software Factory 2010 然后按顺序安装 GAX 2010 http://visua ...

  2. Delphi revelations #1 – kbmMW Smart client on NextGen (Android) – Scope problems

    Delphi 启示 #1 – kbmMW Smart client on NextGen (Android) – 作用域问题 以更高级的方式使用kbmMW smart client,在Android设 ...

  3. 基于Web的实验室管理系统技术简要报告

    基于Web的实验室管理系统技术简要报告 Copyright 朱向洋 Sunsea ALL Right Reserved 一.网站架构 该网站使用C#语言,利用SQL Server2008数据库,采用V ...

  4. 漫谈 Google 的 Native Client 技术(一)---- 历史动力篇(Web 本地计算发展史)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172522313463/ 漫谈 Google 的 Native Client 技术(一)---- ...

  5. 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 ...

  6. 毕设1--利用Java实现网页的模板功能技术---简要了解

    首先,关于我对自己的毕业设计题目的理解,其中没有接触过的技术有怎么用Java实现将原有的Word的模板上传到网页中,在网页中进行相关操作.之所以把这部分放在一开始来进行了解是因为没有接触过这一方面,比 ...

  7. JavaFX技术简要总结

    最近,做一个桌面应用程序的项目,需要考察相关技术,对于经常使用Java的我们来说,很自然的找Java的桌面程序开发技术,发现JavaFX是比较合适的,简单熟悉了一下,写出来给大家做个参考. 一 Jav ...

  8. 漫谈 Google 的 Native Client(NaCl) 技术(二)---- 技术篇(兼谈 LLVM)

    转自:http://hzx5.blog.163.com/blog/static/40744388201172531637729/ 漫谈 Google 的 Native Client(NaCl) 技术( ...

  9. .NET Web开发技术简单整理

    在最初学习一些编程语言.一些编程技术的时候,做的更多的是如何使用该技术,如何更好的使用该技术解决问题,而没有去关注它的相关性.关注它的理论支持,这种学习技术的方式是短平快.其实工作中有时候也是这样,公 ...

随机推荐

  1. SpringBoot使用Gradle构建war包

    Spring Boot默认将应用打包成可执行的jar包.有时候需要打包成war包部署在tomcat等容器.下面简单介绍下打包的步骤. 一.修改gradle.build文件 1.1 添加如下配置 app ...

  2. C# 高德地图调用帮助类 GaodeHelper

    /// <summary> /// 高德地图调用帮助类 /// 更多详情请参考 高德api /// </summary> public class GaodeHelper { ...

  3. css一些我所不熟练的属性

    <hr />  表示一条横线 css的三种创建方式: 外部样式表 <head> <link rel="stylesheet" type="t ...

  4. Android学习进阶路线导航线路(Android源码分享)

                                                                                                       转 ...

  5. Log4j 日志级别

    转自:http://michales003.iteye.com/blog/1160605 日志记录器(Logger)是日志处理的核心组件.log4j具有5种正常级别(Level).: 1.static ...

  6. Ping Pod不通问题定位及Ingress验证

    Ping Pod网络问题不通定位记录 1.验证墙是否通 flannel默认使用8285端口作为UDP封装报文的端口,VxLan使用8472端口,下面命令验证一下确定其在8472端口 ip -d lin ...

  7. string c++ 转义序列

    std::string shaderVS = "\struct PSInput \{ \float4 position : SV_POSITION;\float4 color : COLOR ...

  8. http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

    http://blog.sina.com.cn/s/blog_546abd9f0101c6au.html

  9. Json.net说法——(一)修饰标签,日期序列化

    摘自: http://www.cnblogs.com/jams742003/archive/2009/12/24/1631587.html 通过属性标签自定义JSON序列化 JsonObjectAtt ...

  10. mysql 跟踪sql执行方法

    摘 自: http://bbs.jee-soft.cn:8086/showtopic-166.aspx 日志是调试程序非常有用的工具. 1  配置my.ini文件(在安装目录,linux下文件名为my ...