词条 | 资源后备进程 |
释义 | 用于打包和部署资源的轮辐式模型使用后备进程来定位合适的资源。如果一个应用程序的用户请求不可用的 ResourceSet,则公共语言运行库搜索该区域性的层次结构,以查找与该用户请求最为匹配的适当的后备资源,并且只在最后迫不得已的情况下才引发异常。在层次结构的每一级别,只要发现了适当的资源,运行库就使用该资源。如果未找到合适的资源,则继续在下一个级别进行搜索。 步骤(1.检查全局程序集缓存 2.检查当前执行的程序集的目录 3.再次搜索全局程序集缓存 4.检查当前执行的程序集的目录 5.可能的级别搜索父程序集 6.使用默认(后备)区域性的资源 7.引发异常未能找到资源) 步骤资源后备进程将在下面的步骤中说明: 1.检查全局程序集缓存运行库首先检查全局程序集缓存,以找到与为应用程序请求的区域性匹配的程序集。 全局程序集缓存可以存储由许多应用程序共享的资源程序集。这使您免去不得不在您创建的每一应用程序的目录结构中包括特定资源组之苦。如果运行库找到了对程序集的引用,则它将搜索该程序集以找到请求的资源。如果它在程序集中找到了该项,将使用请求的资源。如果它没有找到该项,将继续搜索。 2.检查当前执行的程序集的目录运行库接下来检查当前执行的程序集的目录以找到与请求的区域性匹配的目录。如果它找到了匹配的目录,它将搜索该目录以找到请求的区域性的有效附属程序集。然后运行库搜索该有效附属程序集以找到请求的资源。如果它在程序集中找到了该资源,则使用这一资源。如果它没有找到该资源,将继续搜索。 3.再次搜索全局程序集缓存运行库接下来再次搜索全局程序集缓存,这一次是为了找到请求的资源的父程序集。如果在全局程序集缓存中存在资源的父程序集,则运行库搜索该程序集以找到请求的资源。 父程序集被定义为合适的后备区域性。将父程序集视作最适合的候选;提供任意资源要比引发一个异常更可取。此进程还允许您重复使用资源。只有在子区域性不需要本地化请求的资源时,您才需要包括父级别的特定的资源。例如,如果您提供 en(非特定英语)的附属程序集:en-GB(英国英语)和 en-US(美国英语),则 en 附属程序集应包含公共术语,并且 en-GB 和 en-US 附属程序集可能只对那些不同的术语提供重写。 4.检查当前执行的程序集的目录运行库接下来检查当前执行的程序集的目录,以查看该目录中是否包含父目录。如果存在父目录,则运行库搜索该目录以找到父区域性的有效附属程序集。如果它找到了有效附属程序集,则运行库搜索该程序集以找到请求的资源。如果它找到了该资源,则使用它。如果它没有找到该资源,将继续搜索。 5.可能的级别搜索父程序集运行库接下来在许多可能的级别搜索父程序集(如前面步骤中所述)。每一区域性只有一个父区域性,但一个父区域性可能还有其自己的父区域性。 6.使用默认(后备)区域性的资源如果对最初指定的区域性以及所有父区域性都进行了搜索但仍然未找到所需资源,则使用默认(后备)区域性的资源。 注意 默认资源是由主程序集编译的唯一资源。它是绝对后备(最终的父级)。因此,强烈建议您始终将默认的资源组包括在您的主程序集中。这有助于确保不会引发异常。通过包括默认的资源文件,您可以为所有资源提供后备,并且确保对于该用户始终提供至少一个资源,即使该资源不是特定于区域性的。 7.引发异常未能找到资源最后,如果运行库没有找到默认(后备)区域性的资源,则将引发异常,指出未能找到资源。 例举下面举例说明如何搜索请求的资源,假定用户请求本地化为墨西哥西班牙语所需的资源。与上述资源命名规则相符,运行库首先搜索全局程序集缓存以找到与请求的区域性“es-MX”相匹配的程序集。如果没有找到该程序集,则运行库搜索当前执行的程序集的目录以找到“es-MX”目录。如果也没有找到该目录,运行库再次搜索全局程序集缓存以找到反映适当的后备区域性,在此例子中为“es”(西班牙语)的父程序集。如果没有找到父程序集,则运行库搜索所有潜在的父程序集级别以找到“es-MX”区域性,直到找到相应的资源为止。如果还是没有找到一个合适的资源,则运行库使用默认区域性的资源。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。