我们正在着手进行一个新的中间层服务,让内部客户端系统中的一些基本的数据存储创建和更新和查询记录。该服务将聚集多达3独立的底层数据存储。对于这个问题的目的,假设:

数据存储#1:专有XML数据库搜索。 数据存储#2:现成的关系数据库的结果。 数据存储器#3:平面文件存储(文件存储为二进制)

在客户端将不知道(也没有护理),该数据存储他们正在查询/ udpating。这项新服务将作出这样的决定。我的问题是这样的:如果我的API暴露XML或对象?例如。新的API将有一个add方法。假设我们的系统是一个汽车的存储系统,则API的添加方法可以是这样的:

AddNewCar( CarObject car )

,或者它可能是这样的:

AddNewCar( string carXml )

现在,即使第二方法在条目弱类型中,XML将立即被针对模式作为最低验证。

在新的服务将在C#要被写入(未哪个版本尚未决定,但可能3 / 3.5与WCF)。 API的客户机可以是C#/ VBA / VB.Net / C ++ /爪哇)。

任何详细信息,请让我知道。感谢


更新:请注意,API也将通过消息总线发布XML。例如。当添加新车车内XML将公布使任何人谁在新车有兴趣将被通报。

有帮助吗?

解决方案

我说暴露的对象的API。尽管未在上述的另一篇文章中提到的原因 - 那暴露XML导致固定格式是更难以改变的

可以说,强类型的业务对象的API是很难改变为XML - 两者都将需要重新编译和重新建设。所以这不是你为什么要抛弃XML的原因。

的原因 - IMNSHO - 是抽象水平的。在API级别,你在说什么的业务对象或服务,可以在哪些其他业务对象执行何种措施条款。因此,API必须以业务对象的方面讲。

由于在这里另一篇文章中已经提到,您可以随时备份与XML表示的业务对象。在抽象的较低水平保持你的业务对象和服务的XML表示,你的API将提供XML的全部灵活性,而在同一时间让你建立具有良好的语义更高级别的API。

其他提示

您不应该让XML,因为这解决您的格式和未来的任何决定,你可能面对有关的基础设施。我总是会去强类型的路线,以确保您正确抽象的实现远离使用。

如果你把XML路线,并找出,通过发展一部分的方式,该XML必须改变出于某种原因,这将是更加难以改变你的API的所有使用来纠正这个问题比你强类型API和藏在对象后面的XML的细节。

您应该使用对象和杠杆WCF如果需要的话提供一个XML API创建API。

您应该创建一个使用对象的API,然后围绕该API Web服务接口(例如,对于Java中,你将使用的Java2WSDL在界面上,然后WSDL2Java的创建骨架服务器端执行或客户端实现我敢肯定,等效方法在WCF存在),所有其他系统可以查询。

当你拥有多语言的客户端,我认为Web服务是您最佳的选择,(忽略了业务逻辑的实现),只在你的API上工作几分钟。您可以将WSDL或XSD文件分发到所有的客户端软件的开发者,他们就可以使用简单快速的接口连接至系统。

当然,stongly输入方法将是最容易从最终用户开发人员的角度这是我宁愿。然而,如果最终都被转换成XML在幕后或者你不确定至极接近你的客户会拿,我肯定会推荐你支持。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top