WPF,Silverlight与XAML读书笔记第十四 - 独立存储&部署
说明:本系列基本上是《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种框架中都有相应类型的事件方法,以下代码主要演示独立存储的使用!):
将数据写入独立存储:
1 2 3 4 5 6 7 8 9 10 11 | 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 ); } } |
由独立存储加载数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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揭秘》
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异