zoukankan      html  css  js  c++  java
  • 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种框架中都有相应类型的事件方法,以下代码主要演示独立存储的使用!):

    将数据写入独立存储:

    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揭秘》

  • 相关阅读:
    OAuth 2.0之授权码模式
    Rest和Restful & http
    HTTP1.1协议中文版-RFC2616
    Linux中安装Python2.7
    CvMat、Mat、IplImage之间的转换详解及实例
    ROS Node/Topic/Message/Service的一些问题
    ROS的tf_tree相关
    机器人路径规划(包括行人检测及动态避障总结)(长期更新)
    相关博客链接(长期更新)
    关于视觉里程计以及VI融合的相关研究(长期更新)
  • 原文地址:https://www.cnblogs.com/lsxqw2004/p/4571409.html
Copyright © 2011-2022 走看看