NPPYQ的学习笔记

每天进步一点点

导航

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
\Common7\Packages\Debugger\Visualizers

三 多线程程序的调试(Tracepoints)

VS2005还提供了线程调试窗口,对于断点:

1.消息语法(断点命中时在outPut现实)

任何字符串,任何合法的表达式{firstName},如$FUNC, $TID等预先确定的消息,将上述几种语法类型整合在一起:ID = {this.ID} in function $FUNC

2.断点过滤

对于分布式应用程序有着很大必要,可以使用以下方法过滤断点(断点的属性?):线程ID或者名称,进程ID或者名称,机器名称.

四 XSL转换能够被调试和DTEE(调试时直接赋值)
(略)

总结:

智能客户端有多种安全需求,而VS2005基本上也提供了上述各种安全性需求的十分强大的支持.

VS2005的调试功能更好更强大了,具体的在调试的时候就能发现,最主要还能提供自定义视图,有些不能直接看到的数据也能自己编写代码实现查看.

 

posted on 2008-04-18 12:55  NPPYQ  阅读(1048)  评论(0编辑  收藏  举报