Web应用程序仅返回XML的最佳方法?

时间:2009-04-02 09:14:48

标签: c# .net web-services

我正在构建一个Web应用程序,它将根据特定模式从数据库生成XML,并且取决于查询字符串上携带的某些输入参数(例如日期或搜索项)。

编写返回所需XML的Web服务或编写输出XML的ashx处理程序的最佳方法是什么?

我是否能够在每个实例中完全按照我的意愿指定XML?

4 个答案:

答案 0 :(得分:2)

我会在这样的情况下做ashx。根据您的描述,它听起来像一个搜索工具,一个表(或单个数据库中的有限表组)和相对有限的范围。所有MVC的东西可能都是矫枉过正的。不要过度设计它。

只需创建一个实现IHttpHandler的类(或者只是在Visual Studio 2005或更高版本中执行通用处理程序),解析查询字符串,创建动态SQL字符串或将参数传递给存储过程,以及然后使用XmlTextWriter创建输出。您可以将XmlTextWriter指向响应的输出流或内存流。我使用内存流方法,因为它为我提供了更好的错误处理选项。然后将内容类型设置为application / xml并将结果流式传输。

我喜欢这种方法,因为它易于理解,易于实施,易于维护,并且可以让您完全控制。缺点是,如果应用程序的范围随着时间的推移而增加,它与数据库紧密绑定,可能不如基于Web服务框架的方法灵活。

答案 1 :(得分:1)

考虑使用WebHttpBinding编写REST样式的WCF服务。

答案 2 :(得分:1)

我找到了开始做这类事情的最快方法,特别是如果它是一个简单的REST类型服务 - 例如。使用简单的HTTP GET - 是使用ASP.MVC。我确信你已经读过了,这让你可以完全控制HTML,但这也意味着你可以完全控制你返回的HTML是否正确。您甚至不需要视图,只需返回ContentResult即可。

它有点像MVC的“浪费”,但它是一个非常快速的方式来推动球。我使用了类似的方法,但最后用我自己的HttpHandler和RouteHandler对它进行了形式化,这基本上允许我基本上将URL映射到一大块代码,几乎没有额外的设置。

答案 3 :(得分:1)

从Ch00k回答以下博客(不,不是我的:-))有他的发现使用ASP.MVC并使Restful Web服务返回XML,JSON等。也许这对你来说是一个有用的读物...... Blog link

要记住的主要事情是你想要返回xml字符串而不是实际的.net XmlDocument类型(我可能错误地理解了问题中的要点),否则很难从其他平台上消费它。

希望这会有所帮助: - )