Design patterns GUI、BLL或DTO中的JSON/XML输出?
我使用的是内容协商,因此根据请求的头,我提供JSON/XML输出。现在我想知道什么是提供此功能的最佳位置 信息: BLL=业务逻辑层Design patterns GUI、BLL或DTO中的JSON/XML输出?,design-patterns,dto,bll,content-negotiation,Design Patterns,Dto,Bll,Content Negotiation,我使用的是内容协商,因此根据请求的头,我提供JSON/XML输出。现在我想知道什么是提供此功能的最佳位置 信息: BLL=业务逻辑层 DTO=数据传输对象 DAL=数据访问层 DTO的伪代码示例 class ExampleDTO{ propertie name; propertie description; } BLL的伪代码示例 class ExampleBLL{ GetExample(name) returns ExampleDTO; GetExamples
DTO=数据传输对象
DAL=数据访问层
DTO的伪代码示例
class ExampleDTO{
propertie name;
propertie description;
}
BLL的伪代码示例
class ExampleBLL{
GetExample(name) returns ExampleDTO;
GetExamples() returns List<ExampleDTO>;
}
类示例{
GetExample(name)返回ExampleDTO;
GetExamples()返回列表;
}
1) 在带有BLL对象的GUI中:将来自BLL的DTO结果转换为JSON/XML2) 在BLL中:类似于。。。getObjectJSON()->将DTO输入转换并返回为JSON格式
3) 在DTO中:行为像。。。toJSON()toXML()类似于toString()
4) 或者只包含1个属性(json/xml)的额外DTO
5) 还有别的吗
*就我个人而言,我认为(1)将逻辑排除在GUI之外的原因是错误的,(4)使用额外的DTO(如WebJSoneExampledTo和WebXmlExampleDTO)似乎有些过分,因为它们只有一个属性,我建议采用以下方法,假设您知道返回哪个响应
- 该层将调用BLL
- BLL将返回DTO
- 现在,您应该将DTO转换为请求的类型,即JSON/XML
- 将转换后的DTO返回到CALY
不管响应类型如何编写代码都有好处,比如,您可以有任意数量的响应类型。就像你可以有XML,JSON和其他字符串或任何东西一样。你也会有更好的控制力 我建议采用以下方法,假设您知道返回哪个响应
- 该层将调用BLL
- BLL将返回DTO
- 现在,您应该将DTO转换为请求的类型,即JSON/XML
- 将转换后的DTO返回到CALY
不管响应类型如何编写代码都有好处,比如,您可以有任意数量的响应类型。就像你可以有XML,JSON和其他字符串或任何东西一样。你也会有更好的控制力 如果我理解正确的话,您正在GUI和BLL之间添加转换器。是的,还有一种实用层。主要目标是使架构保持这样一种方式,即所有东西都可以插拔,而不是相互依赖。因此,如果我理解正确的话,您正在GUI和BLL之间添加转换器。是的,还有某种实用层。主要目标是使体系结构保持这样一种方式,即所有东西都可以插拔,而不是相互依赖。