一起谈.NET技术,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。

代码


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提供了一种非常棒的开发思想,如果碰到收银机、简易手持设备系统时,离线处理可以带来很大的便利。从客观上来说,每种架构都自己的优势和不足,客观分析,根据需求、开发效率、成本、维护更新等因素选择合适的架构。

时间: 2024-10-24 15:14:06

一起谈.NET技术,Smart Client技术简要总结的相关文章

再谈反病毒领域的工程化技术与科学方法的结合

问题描述 再谈反病毒领域的工程化技术与科学方法的结合--一次谈话记录的整理seak(在某高校与信安专业教师交流某次大学生信安大赛作品情况.和反病毒领域的人才培养等,当时讲的可能是语无伦次,感谢同事Emma进行录音整理.因部分内容东拉西扯跑题了有删节今天还是想谈谈工程经验和学术方法的结合问题,既然大家谈到了内容挖掘,我们就从内容挖掘开始.基于内容挖掘的思想,我印象中较早是从上世纪哥伦比亚大学的相关研究开始的,从其样本集来看基本是DOS下的COM文件,其中很大比例的样本都是用汇编语言编写的.COM文

[技术学习]浅谈MFC中超类化技术的实现 .

自 Panr 的 Blog // 关键词:// 面对对象编程.超类化.子类化.Superclassing// MFC.CWnd::SubclassWindow// 通用控件.CMNCTRL//// 主题:// 通过CWnd::SubclassWindow 函数的分析,浅谈MFC中超类化技术的实现////// 背景// 我在2002-12月见了mahongxi (烤鸡翅膀)(色摸)在CSDN上的一个帖// 介绍了MFC中窗体的超类化的概念,以下是对我个人回贴的总结//// 日志// 修改:Panr

随谈10年的技术生涯和技术成长

先简单分享自己这10年在技术上曾经感觉到明显迷茫的阶段: 阶段1:只会增删改查: 时间:大学期间(2005年-2006年) 学习的方式:看视频.看书.(学会了使用控件的增删改查,和写SQL语句). 自我感觉:XX管理系统已不在话下,反正网站弄来弄去也是增删改查,这大概就是无知者无畏. 如何破:(走出社会去就好了). 阶段2:能快速实现功能,却不会思考: 时间:(2006年-2009年) 学习的方式:看博客.大量的编码(第1年,封闭式开发(1天敲15个小时代码),第二年后:每周六天,每天到夜里3点

浅谈PHP的数据库接口和技术_php实例

1.php支持哪些数据库(拥有哪些数据库接口) Adabas D ,InterBase ,PostgreSQL ,dBase ,FrontBase ,SQLite ,Empress ,mSQL ,Solid ,FilePro(只读),Direct MS-SQL ,Sybase ,Hyperwave ,MySQL ,Velocis ,IBM DB2 ,ODBC ,Unix dbm ,informix ,Oracle(OCI7 和 OCI8),Ingres ,Ovrimos 以上数据库都支持,简言之

浅谈PHP的数据库接口和技术

1.php支持哪些数据库(拥有哪些数据库接口) Adabas D ,InterBase ,PostgreSQL ,dBase ,FrontBase ,SQLite ,Empress ,mSQL ,Solid ,FilePro(只读),Direct MS-SQL ,Sybase ,Hyperwave ,MySQL ,Velocis ,IBM DB2 ,ODBC ,Unix dbm ,informix ,Oracle(OCI7 和 OCI8),Ingres ,Ovrimos 以上数据库都支持,简言之

从在 Internet Explorer 中使用 Windows 窗体控件开始谈Smart Client

client|window|控件 首先引用Microsoft Windows 窗体快速入门教程上的文章"在 Internet Explorer 中使用 Windows 窗体控件":(如果引用的一些信息无法正常显示,请直接上面上的链接查看) 本主题描述如何在 Internet Explorer (IE) 内成功地执行 Windows 窗体控件.IE 内的 Windows 窗体控件无需用户提示即可激活,它不要求注册,而且利用公共语言运行库 (CLR) 代码访问安全性. 在 Internet

3.5G无线接入技术其它无线接入技术比较与分析

作为目前很热的接入技术之一,无线接入技术被各运营商尤其是新运营商所普遍看好,国家无线电管理机构也就此出台了具体的频率规划,足见大家对这种技术的重视和看好程度. 根据国家无线电管理机构的频率规划,我们的频率划分基本上是根据欧洲标准进行的.在有限的30MHz带宽内,如果按照1.75MHz带宽为单位划分,可容纳17个子带:按照3.5MHz带宽为单位划分,可容纳9个子带,明确了频率的划分才好谈利用3.5G无线接入技术来进行网络建设和运营. 目前,固定无线接入系统采用的空中接口种类大体分为三类:基于IP.

技术敏感度 — 基层技术管理者必备

一说到管理者的能力特质,我们马上会联想到沟通.授权.决策等能力.然而,对于软件开发活动中的基层技术管理者(team lead.line manager等),我想指出被极为忽视的另一种重要能力 - 技术敏感度. 对于基层技术管理者来说,何为技术敏感度?技术敏感度表现为:1)工程师解释技术问题时,能快速理解并切中问题要害: 2)面对多个技术方案做选择时,具备权衡能力,并能给出有建设性的意见和建议,甚至做出选择:3)工程师提出技术想法时,能敏锐地意识到对产品和团队的意义: 4)能根据团队成员的个体差异

什么是容器技术和虚拟化技术

问题描述 什么是容器技术和虚拟化技术 昨晚看到容器技术和虚拟化技术. 之前没研究过, 想知道什么是容器?什么是虚拟化技术?有好的文章或者图书推荐看看,谢谢~ 解决方案 广义上说,容器是虚拟化的一种,但是狭义上,我们说虚拟化,一般是操作系统虚拟化.也就是一个计算机上运行多个操作系统.容器(比如docker)指同一个操作系统中通过api虚拟化隔离不同的应用.因此容器拥有更好的性能. 解决方案二: http://www.linuxidc.com/Linux/2011-06/37350.htm