SmartClient学习(二):智能客户端的安全性和VS2005调试代码
SmartClient的WebCast系列教程中,第二讲:使用Visual Studio 2005和_NET Framework 2_0创建专业Windows Forms应用程序,主要讲的是怎样用VS2005建立Windows Forms应用程序,略过; 而第三讲:使用Visual Studio 2005构建智能客户端应用程序,主要将的是用VS2005怎样发布成智能客户端,属于工具的使用,也略. 第四讲:Windows Form中的智能客户端部署,主要为SmartClient的安全性第五讲:托管代码的增强调试功能
SmartClient的安全性
一 ClickOnce应用程序缺省状态下运行在沙箱(与其他程序进程完全隔离)中:
1.基于初始状态的权限 (internet,intranet,或者完全信任).
2.确保应用程序安全运行.
3.与IE和JiavaScript很相似.
二 以下情况,应用程序需要较高权限:
1.调用非托管代码(比如一些API).
2.访问文件系统或者注册表.
3.连接到数据库.
4.调用WS.
三 确定权限的要求:
1.用Project属性窗口的Security面板可以手动配置权限
2.Project属性窗口还能进行权限计算(VS2005计算出做少需要的权限)
3.在沙箱中调试 (采用部分信任调试应用程序,异常处理等)
4.MicrosoftIntelliSense运行于沙箱中(基于安全性上下文过滤)
四 可信的应用程序部署
1.建立部署认证(配置可信任许可证)
2.信任许可证(通过权威机构发布,随应用程序部署)
3.应用程序开发者任务(获得信任许可证,设置部署凭证属性)
五 用户认可模型,由用户来确认权限
1.始终由用户来建立信任决定(甚至可以从CD-ROM安装软件)
2.对于没有确定目标的计算机适用(internet或者非管理intranet,用户是管理员)
3.要求必须的权限(当应用程序需要比沙箱更高的权限时)
4.管理员能够通过策略关闭提示
六 更新的安全
1.ClickOnce清单已签名
a.XMLDSIG(XML数字签名)
b.在部署更新时需要发布者密钥
c.确保更新来自原始发布者
d.保证唯一的应用程序识别符
2.只有原始发布者能够更新(防止某种病毒的自动更新)
七 System.Deployment.Application 命名空间
在视频课程中,还学到了测试部署程序的更新等操作. 以下来自MSDN的命名空间介绍:使用 System.Deployment.Application 命名空间可以将自定义升级行为编程到 ClickOnce 应用程序中。
此命名空间中的关键类为 ApplicationDeployment。可以使用 CheckForUpdate 或 CheckForUpdateAsync 方法测试您的部署是否有可用更新;CheckForUpdateAsync 方法在成功完成后引发 CheckForUpdateCompleted 事件。CheckForDetailedUpdate 返回有关更新的重要信息,如更新的版本号以及更新对当前用户是否为必需更新。有可用更新时,可以通过使用 Update 或 UpdateAsync 安装更新;UpdateAsync 方法在更新安装完成后引发 UpdateCompleted 事件。对于大型更新,可通过 CheckForUpdateProgressChanged 和 UpdateProgressChanged 事件接收进度通知,并使用 ProgressChangedEventArgs 中的信息通知用户下载状态。
还可以使用 ApplicationDeployment 根据需要下载大型文件和程序集。必须在部署的应用程序清单中将这些文件标记为“可选”,这样在安装时就不会下载这些文件了。可以通过使用 DownloadFileGroup 或 DownloadFileGroupAsync 方法在应用程序持续时间的任意时刻下载这些文件。可以通过为 AppDomain 类的 AssemblyResolve 事件提供事件处理程序,在程序集加载到内存之前下载这些程序集。
托管代码的增强调试功能
一 VS2005调试的时候
1.缺省的数据视图:(增强的数据窗口)
a.图标:直观给开发者,对象的类型
b.intelloSense
c.选择评价,实时观察对象
2.代码:
a.数据过滤和分组
b.分级
3.数据浏览(放大镜):
a.默认支持text,xml和html,DataSet(以前在vs2003不行)格式
b.还不够丰富,需要提供扩充(图片等,可自己编程实现).
二 自定义数据视图(许多框架类型都已经被属性化)
1.System.Diagnostics属性:
DebuggerBrowseable – 调试时隐藏成员(放于方法属性等前)DebuggerDisplay – 改变数据变量的显示值(放于对象定义前)
DebuggerTypeProxy – 不同类型视图(用其他的类来制定,放于对象定义前)
DebuggerVisualizer – 自定义视图
2.ToString 描述对象信息
3.使用属性(指名目标和在程序集级别)
4.部署目录
My Documents\Visual Studio\Visualizers
三 多线程程序的调试(Tracepoints)
VS2005还提供了线程调试窗口,对于断点:
1.消息语法(断点命中时在outPut现实)
任何字符串,任何合法的表达式{firstName},如$FUNC, $TID等预先确定的消息,将上述几种语法类型整合在一起:ID = {this.ID} in function $FUNC
2.断点过滤
对于分布式应用程序有着很大必要,可以使用以下方法过滤断点(断点的属性?):线程ID或者名称,进程ID或者名称,机器名称.
四 XSL转换能够被调试和DTEE(调试时直接赋值)
(略)
总结:
智能客户端有多种安全需求,而VS2005基本上也提供了上述各种安全性需求的十分强大的支持.
VS2005的调试功能更好更强大了,具体的在调试的时候就能发现,最主要还能提供自定义视图,有些不能直接看到的数据也能自己编写代码实现查看.