GUI、BLL 或 DTO 中的 JSON/XML 输出?
Posted
技术标签:
【中文标题】GUI、BLL 或 DTO 中的 JSON/XML 输出?【英文标题】:JSON/XML output in GUI, BLL or DTO? 【发布时间】:2011-12-03 02:44:31 【问题描述】:我正在使用内容协商,因此根据请求的标头,我提供 JSON/XML 输出。现在我想知道提供此功能的最佳位置是什么。
信息: BLL=业务逻辑层 DTO= 数据传输对象 DAL= 数据访问层
DTO 的伪代码示例
class ExampleDTO
propertie name;
propertie description;
BLL 的伪代码示例
class ExampleBLL
GetExample(name) returns ExampleDTO;
GetExamples() returns List<ExampleDTO>;
1) 在带有 BLL 对象的 GUI 中:将 DTO 结果从 BLL 转换为 JSON/XML 2) 在 BLL 中:类似于... getObjectJSON() -> 将 DTO 输入转换并返回为 JSON 格式 3) 在 DTO 中:行为类似于... toJSON() toXML() 类似于 toString() 4) 或仅具有 1 个属性的额外 DTO (json/xml) 5) 别的? ...
*我个人认为 (1) 将逻辑排除在 GUI 之外的原因是错误的,(4) 拥有额外的 DTO (如 WebJsonExampleDTO 和只有一个属性的 WebXmlExampleDTO)似乎有点矫枉过正
【问题讨论】:
【参考方案1】:我建议采用以下方法,假设您知道要返回哪个响应。
将响应类型与 BLL 分开,因为 BLL 不必对响应类型做任何事情。
你应该有一层接受两个参数,一个响应类型,第二个是要调用的函数。
该层将调用 BLL BLL 将返回 DTO 现在您应该将 DTO 转换为请求的类型,即 JSON/XML 将转换后的 DTO 返回给 cally。 最后,您将拥有 3 层以上的 GUI、转换层和 BLL。 BLL 也将与 DAL 进行交互。不管响应类型如何编写代码都会有一些好处,例如,您可以有任意数量的响应类型。就像你可以有 XML、JSON 和另一个是字符串或任何东西。你也将有更好的控制。
【讨论】:
所以如果我理解正确的话,你是在 GUI 和 BLL 之间添加 Transformer。 是的,还有一种实用层。主要目标是使架构保持这样一种方式,即一切都可以插入并且不相互依赖。以上是关于GUI、BLL 或 DTO 中的 JSON/XML 输出?的主要内容,如果未能解决你的问题,请参考以下文章