MS RFC 35:标准合规执行

日期

2007/10/16

作者

Frank Warmerdam、Daniel Morissette

联系

在pobox.com上的warmerdam,在mapgears.com上的dmorissette

最后编辑

2007/12/07

状态

撤销(2007/12/07)

概述

这个RFC引入了一种机制,告诉MapServer强制执行OGC标准遵从性,或者是允许的。MAPServer应该继续尽可能紧密地执行这些标准,但是已经发现,在某些情况下,严格的遵从性会降低互操作性,而不是增加互操作性。

其中一个例子是WMS GETMAP请求中对Styles参数的要求,该要求已在MapServer 5.0.0中强制执行。实施此要求有效地阻止了许多WMS客户机实现连接到MapServer,因为它们的getmap请求中没有包含必需的样式参数。此RFC还详细说明了对MapServer5中Style=Required参数处理的短期调整。

OWS合规性元数据

这将通过引入一个新的映射级元数据项来实现,该项名为“OWS_compliance”,可能的值为“pedantic”和“permitive”,如果未指定,则默认值为“permitive”。特定协议的变化也将以OWS元数据的常规方式得到支持(即WMS U合规性、WFS U合规性、WCS U合规性、SOS U合规性)。

如果这个关键字值是“允许的”,那么在实际和明确的情况下,MapServer可能会尝试原谅丢失的或不符合要求的请求和输入,以提高MapServer在实际互操作性场景中的可用性。这可能包括允许在OGC规范所需的请求中省略协议参数,允许服务运行,即使映射文件中缺少元数据,也可以在功能中填充所需字段。

如果这个关键字值是“pedantic”,那么在实际范围内,如果输入(wxs协议请求、mapfile不完整等)不完全符合ogc规范的要求,mapserver将尝试生成错误。

可以预见,希望在客户机中鼓励良好的标准遵从行为,并确保他们不会意外地使用元数据不完整的Web服务的用户将使用“迂腐”模式。预计当MapServer通过ogc cite和类似的测试套件运行时,也将使用“迂腐”模式。

可以预见,“许可”模式将被那些希望确保其服务能够被最广泛的可能的客户访问的人使用,即使他们没有严格按照标准操作。

开发人员应该记住,在许可模式中添加更多的异常不应该轻而易举,因为这会导致规范的误用,并且会在不必要的异常中夸大代码。

msowslookupmetadata()。

在实际代码中,可以使用msowsLookupMetadata()以类似于以下方式测试遵从性关键字:

if (stylesfound == 0 && sldfound == 0)
{
  if( strcasecmp(msOWSLookupMetadata(&(map->metadata),"MO","compliance"),
                 "pedantic") == 0 ) {
    msSetError(MS_WMSERR, "Missing required parameter STYLES",
               "msWMSLoadGetMapParams()");
    return msWMSException(map, nVersion, "MissingParameterValue");
  } else {
    msDebug( "WMS request missing STYLES parameter, permissively ignoring." );
  }
}

MAPServer 5.0.1

对于MapServer 5.0.1,代码中预期要做的唯一更改是上面的示例,仅在迂腐模式下需要Styles参数。

如果发现其他标准实施问题不必要地干扰了MapServer在现实互操作性中的使用,那么也可以在5.0.x中更改这些问题,使其基于此关键字。

地图服务器5.1

在MAPServer 5.1和未来,如果发现其他标准实施问题不必要地干扰了在现实互操作性场景中使用MAPServer,则也可以将这些问题更改为基于此关键字。

再一次,开发人员应该记住,在许可模式中添加更多的异常不应该轻而易举,因为这会导致规范的误用,并且会使代码膨胀,产生不必要的异常。

作为此RFC实现的一部分,作者将审查所有“警告:”在mapwms.c等地方的功能文档中发出的条目,以查看它们在以“迂腐”模式操作时是否应变成致命错误。

文档

OWS U Compliance关键字将添加到MapServer 5参考文档中。

实施

Frank Warmerdam和/或Daniel Morissette将在MapServer 5.0和MapServer 5.1中对5.0.1版本进行更改。希望所有的OWS服务开发人员将来都能根据需要和出现的问题在OWS服务中应用许可/迂腐的测试。

MapScript

mapscript中没有预期的更改,因为它已经有元数据设置方法。

向后兼容性问题

此功能的实现应恢复MapServer 5和MapServer 4.x中向后兼容的默认行为。不存在其他兼容性问题。

臭虫识别码

https://github.com/MapServer/MapServer/issues/2427

投票历史

2007/11/08年左右的第一次投票被否决了…在进一步讨论之后,为了简单地恢复MapServer 4.10关于Styles=参数的行为,已经撤销了RFC(也就是说,让它再次成为可选的)。见票2427。