随着基于互联网的企业计算模型的出现,应用程序越来越多地由在不同地理区域运行的客户机和服务器组成。
这些差异对设计可靠的客户机/服务器基础结构这一任务提出了下列要求。
客户机和服务器可以位于具有不同的字节存储次序体系结构的计算机上:客户机可以位于一个采用小尾数法 CPU 的计算机上,而服务器代码在一个采用大尾数法 CPU 的计算机上运行。客户机可能想调用服务器上的一个业务方法,而服务器与客户机使用的代码集却不相同。
客户机/服务器基础结构必须定义准确的字节存储次序以及代码集跟踪和转换规则。Java 平台通过使用“Java 虚拟机”(JVM)这种独特技术几乎已经解决了上述问题。在 Java 虚拟机中,采用 UCS-2 格式来对所有字符串数据进行编码,但是采用大尾数法格式来显示所有信息。JVM 使用一组特定于平台的程序来与本机平台联系。这些程序将执行 UCS-2 与一个平台的本机代码集之间需要的任何代码集转换。
客户机和服务器可以使用不同的语言环境设置来进行处理。例如,采用“西班牙语”的客户机可以对采用“美国英语”的服务器上的对象调用业务方法。某些业务方法实质上是与语言环境相关的;例如,假定一个业务方法将返回已排序的字符串列表,采用“西班牙语”的客户机期望按照“西班牙语”整理顺序来对该列表排序,而不采用服务器采用的“英语”整理顺序。因为数据检索和排序过程是在服务器上运行的,所以,客户机的语言环境必须能够执行合理的排序。
如果服务器必须返回采用客户机在文化上所期望格式的包含日期、时间、货币和异常消息等内容的字符串,则应考虑类似的问题。
客户机和服务器进程可以在不同时区中运行。到目前为止,所有国际化文献和资源主要关心的都是与 代码集和语言环境相关的问题。它们通常都忽略了时区问题,尽管业务方法可能与时区和语言环境都密切相关。
例如,假定供应商声称在下午两点钟之前接收到的订单是在同一天下午五点钟处理的。当然,给定的时间是用于处理订单的服务器所在时区的时间。关键是要知道客户机的时区,以便为其他时区的客户提供正确的时间,从而在同一天进行处理。
其他与时区相关的操作包括:将带有时间戳记的消息记录到服务器中以及访问文件或数据库资源。如果使用了“夏令时”概念,则时区问题将变得更加复杂。
Java 2 Platform, Enterprise Edition(J2EE)支持在具有不同字节存储次序体系结构和代码集的计算机上运行的应用程序组件。但是,它对在具有不同语言环境或时区的计算机上运行的应用程序组件并未提供专门支持。
国际化服务解决了语言环境和时区不匹配所造成的问题,并且不存在传统技术所具有的局限性。国际化服务将系统地管理在 EJB 应用程序的各个组件(包括客户机应用程序、企业 bean 和 Servlet)之间分配国际化上下文。有关更多信息,请参阅 WebSphere Application Server Network Deployment 信息中心。