说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。
对于WPF应用程序,独立存储不像在Silverlight与Windows Phone 7中那么重要(对于这两者独立存储可能是唯一存储应用程序数据的方式),如果权限允许,WPF可以将数据保存在本地磁盘,局域网共享目录等地方。但是独立存储仍然是存储WPF程序数据一种很有吸引力的方式,这种方式适用于所有托管代码的运行环境。
独立存储是针对用户进行的,其将所需存储的数据存储于当前用户Documents目录下一个隐藏的文件夹中。独立存储主要进行两种操作,很明显一个是读取,另一个是写入,且两个操作分别应该在程序初始化与程序退出时进行。独立存储的操作由位于System.IO.IsolatedStorage命名空间的IsolatedStorageFile与IsolatedStorageFileStream来支持。
提示:
结合Visual Studio,WPF还可以使用一种同样存在于WinForm程序中的自定义信息存储方式,即Settings。Settings是将设置数据存储于应用程序配置文件中(一般为App.config),同时支持强类型访问。
对于WPF,Silverlight与Windows Phone 7,独立存储的使用方式基本一致,下面是示例代码(为了演示读取与写入该在什么时候进行,代码中含有调用独立存储技术的代码所处的事件处理函数(斜线表示),但注意不能保证3种框架中都有相应类型的事件方法,以下代码主要演示独立存储的使用!):
将数据写入独立存储:
protected override void OnClosed(EventArgs e) { base.OnClosed(e); IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly(); using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("myFile", FileMode.Create, f)) using (StreamWriter writer = new StreamWriter(stream)) { writer.WriteLine(obj as string); } }
由独立存储加载数据:
protected override void OnInitialized(EventArgs e) { base.OnInitialized(e); IsolatedStorageFile f = IsolatedStorageFile.GetUserStoreForAssembly(); using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream("myFile", FileMode.OpenOrCreate, f)) using (StreamReader reader = new StreamReader(stream)) { string line = reader.ReadLine(); while (line != null) { //Processing... } } }
部署
对于WPF这种Windows客户端程序,有两种常见的部署方式。使用范围最广的一种是Windows Installer,通过Visual Studio的安装与部署类型的项目模版就可以建立Windows Installer安装项目。而且Windows Installer可以用于不限于WPF这类托管应用程序。另一种是随.Net Framework 2.0引入的最初主要用于WinForm的安装方式是ClickOnce部署(提示:也可用于有部分非托管代码的程序的部署,但非托管代码中如COM需不用注册),这种方式非常灵活,有点类似Web应用程序的发布。
这两种方式各自相对于另一个优势如下,Windows Installer较ClickOnce的优势:
-
支持自定义安装界面,显示EULA给用户。
-
对安装的文件进行控制。
-
在安装过程中,支持在自定义动做中添加自定义代码。
-
可以将程序集安装到GAC中
-
支持注册COM组件及文件关联
-
支持机器级安装(程序对于所有用户都可见)
-
支持通过光盘等媒介安装
ClickOnce相较Windows Installer具有的优势:
-
内建支持自动更新以及回滚操作。
-
提供两种安装模式:一种是通过Url来安装,类似Web一样的体验,安装完毕后程序运行,安装程序关闭,但不会在系统留下信息(安装程序会被浏览器缓存)。另一种类似Windows Installer安装,完毕后会在系统中生成快捷方式,在控制面板中添加卸载信息等。
-
ClickOnce安装的文件会被分开存放,不会影响其它程序,但也不能自定义注册(如文件关联等)。
-
安装过程中没有自定义代码,可以干净的卸载。
-
结合.NET代码访问安全(CAS),使用户可以运行不完全受信的程序。
本文完
参考:
《WPF揭秘》