扩展ASP.NET 2.0资源提供程序模型(2)
们针对本地化 API 编程即可。这表明我们应该使用 ASP.NET 2.0 技术来访问资源,方法如下:
• 页面对象方法。 • HttpContext 方法。 • 本地化表达式。 母版页、网页及用户控件均共享常见基本类型 TemplateControl。此基本类型为资源访问提供两个我先前提过的重载操作:GetLocalResourceObject() 和 GetGlobalResourceObject()。这些操作使用缓存资源提供程序通过提供程序的 GetObject() 实现来检索资源。如果还未缓存提供程序,则 ResourceProviderFactory 通常使用 CreateLocalResourceProvider() 或 CreateGlobalResourceProvider() 来创建提供程序。该方法的好处是您可以很方便地编写页面代码来检索资源值。
事实上,在编译期间会根据隐式和显式表达式为每个页面生成非常相似的代码。 也可以通过 HttpContext 类型的静态方法访问本地和全局资源,这在编写不属于页面部分的代码时很有用。
实际上,本地化表达式是一种访问资源的更便捷方式。本地化表达式提供的声明性模型可以通过本地化 API 自动生成访问资源的代码。因此,所有路径均指向本地化 API 和经过配置的 ResourceProviderFactory。 数据库资源:优点和缺点 向数据库移动资源有很多好处,包括如下几个方面: • 您可以为资源引入复杂的层次结构要求而不影响调用代码,例如,允许客户或部门自定义默认字符串,同时仍允许每一方转换这些字符串。 • 因为可以对内容进行组织,因此可以更加轻松地在数据库层管理更大的 HTML 内容块;并且由于缓存和内存的使用,对其管理起来也更具灵活性(请记住,在默认情况下,附属资源及其所有的嵌入内容均载入应用程序域中,而使用更良好的算法则可以缓存数据库资源或将资源从缓存中释放)。 • 在单独位置(数据库)而非多个 .resx 文件中存储信息可以改进本地化应用程序的整体可管理性。也可以简化使用转换器的方法。 数据库存储也有一些缺点: • 必须有附加的预见和安排。如何将资源组织到表之中?它们应该全在一个单独的表中吗?它们应该按类别划分吗?为在各表之间提供随后的分发,是应该通过单独的存储过程还是通过 SQL CLR 组件来访问资源? • 为将 Visual Studio 2005 的高效功能与您的数据库资源相集成,您必须要做一番工作。就是说,您无法利用“生成本地资源”在数据库中自动生成资源,或在“表达式对话框”中查看数据库信息等等。此级别的集成需要您为开发人员构建与设计时体验相集成的自定义组件,这点我将在下文中讨论。 尽管需要进行将高效功能与数据库资源相集成的工作,但还是会有人认为利大于弊。并且,必须计划资源的结构和组织是我们份内之事,即使是默认的资源分配结构也是如此! 从外部程序集访问资源 还可以使用资源提供程序模型从预编译的外部程序集访问资源。这样便可在 Web 应用程序和 Windows 应用程序之间共享公用资源,同时提供一体化的版本控制和部署。在本节中,我将解释如何应用刚刚讨论的概念来访问此类型外部资源程序集。 图 6 显示了组成此外部资源提供程序模型的组件。 图 6. 外部资源提供程序模型的组件层次结构 您 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |