摘要: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. HDU 4664 Triangulation(2013多校6 1010题,博弈)

    Triangulation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. System.Object 基类

    System.Object在.Net中是所有类型的基类,任何类型都直接或间接地继承自System.Object.没有指定基类的类型都默认继承于System.Object. 基类特性 正由于所有的类型都 ...

  3. Netty游戏服务器二

    上节我们写个server主类,那么发现什么事情都干不了,是的,我们还没有做任何的业务处理. 接着我们开始写处理客户端连接,发送接收数据的类ServerHandler. public class Ser ...

  4. 将图片转换为Base64字符串公共类抽取

    public class ImageToBase64 { //图片转化成base64字符串 public static String GetImageStr(String path,int width ...

  5. String格式化参数整理

    Java String格式话参数整理如下: conversion:转换格式,可选的格式有: d 整数型(十进制) c Unicode字符 b Boolean值 s String f 浮点数(十进制) ...

  6. Linux驱动虚拟地址和物理地址的映射

    一般情况下,Linux系统中,进程的4GB内存空间被划分成为两个部分------用户空间和内核空间,大小分别为0~3G,3~4G. 用户进程通常情况下,只能访问用户空间的虚拟地址,不能访问到内核空间. ...

  7. C# 中的单精度与双精度区别

    单精度浮点数(float)与双精度浮点数(double)的区别: (1)在内存中占有的字节数不同 * 单精度浮点数在机内占4个字节 *双精度浮点数在机内占8个字节 (2)有效数字位数不同 *单精度浮点 ...

  8. 用java源代码学数据结构<七>: BST

    /* * 以int类为例 * 其它的类必须能够比较 * */ //二叉搜索树的节点点 class BSTNode{ int item; BSTNode lc; BSTNode rc; BSTNode ...

  9. Zend Guard Run-time support missing 问题的解决

    Zend Guard是目前市面上最成熟的PHP源码加密产品了. 刚好需要对自己的产品进行加密,折腾了一晚上,终于搞定,将碰到的问题及解决方法记录下来,方便日后需要,也可以帮助其他人. 我使用的是Wam ...

  10. 安装程序集'' policy.8.0.microsoft.vc80.atl,type=''win32-

    ThinkPad Bluetooth with Enhanced Data Rate II 软件 在Windows 7 64-bit 下无法安装完成,弹出窗口提示 :安装程序集''policy.8.0 ...