主要是思维方式的不同:
显然,RPC是以方法调用的方式描述WebSerivce的,也就是说,你要说清楚调用的那个方法,以及各个参数的名称和值。要描述这些东东,SOAP消息就要有一个统一的规范,指出那一部分是方法名,哪个部分是参数,哪个部分是返回值。换句话说,RPC方式调用的SOAP消息格式是有章可循的,固定的。(比如说,每个Parameter必须对应一个Part,Part的name必须和参数名一致)。
而Document则是以文档传输的方式描述WebService,只要你的SoapBody里面是一个可以用Schema描述的合法的Xml文档就行了,对具体的格式没有什么要求(Schema要在WSDL里面写)。
可以看出,Document形式要更加灵活——尤其是需要传输特定格式的Xml文档的时候,而RPC的Soap消息实际上也可以用Document形式模拟(只要Schema定义得当)。所以目前Document方式应用更广泛一些(也是.NET里面的缺省方式)。
对Namespace,我觉得两者应该没有明显的区别。主要是RPC通常与Encoding模式结合使用,这就要引用Soap的namespace了;而Document只要引用XmlSchema的Namespace定义类型就成了。