0 0

关于服务层的返回值的讨论10

一般来说,服务层会有不少返回领域模型对象或其集合的一类方法,除此之外的很多方法都是需要返回成功标识的。

比如登录操作的结果除了成功之外还可能有帐户不存在、密码错误、重复登录等情况,为了让表示层更友好地给出用户提示,需要服务层以某种形式返回上述错误状态,可能的方案有如下几种:

1.使用返回值表示各种错误状态(最好是枚举类型,避免遗漏)
2.抛出异常(用异常类型的不同或异常信息区分详细状态)
3.只返回布尔型结果以简化调用,详细信息通过帐户模型中的附加属性返回
4.不使用任何返回值(void),完全依靠帐户对象附加属性区分登录状态

上述方案的利弊各是什么?你会选择哪种方案?有没有通用的方案?

另外,像增删改这样的操作在DAO层也会有相应的返回值(或异常),服务层作为DAO简单的封装是不是需要把DAO层的结果直接返回,还是进一步处理后返回,如果做了封装处理会不会造成原始错误信息的丢失或不易查找?又或者,服务层根本不应该重复包含DAO的功能,而是直接把DAO接口显露给表示层调用?

欢迎讨论。
2010年4月09日 18:28

2个答案 按时间排序 按投票排序

0 0

DAO层的异常还是抛给外层处理比较好,毕竟DAO层的职责是数据库操作的封装,不负责处理数据库异常。

2010年4月09日 22:26
0 0

看你服务层给谁服务:
1. 给前端ajax服务,可以直接使用中文提示语来描述错误。
2. 给其他后端程序服务,还是定义错误码吧,便于问题的准确定位。

2010年4月09日 22:24

相关推荐

    ASP.NET—001:GridView绑定List、页面返回值

    接下来,我们讨论页面返回值。在ASP.NET Web Forms中,页面间的值传递通常通过Query String、ViewState、Session、Cookie或Control State等方式进行。在GridView中,如果你希望在用户交互后(如点击按钮或改变某个...

    用MFC实现客户端向服务器传送文件

    在这个场景下,我们将讨论如何利用MFC实现一个客户端向服务器发送文件的功能,这涉及到网络编程的基本概念,特别是TCP(Transmission Control Protocol)协议的应用。 TCP是一种面向连接的、可靠的传输层协议,它...

    linux驱动相关面试题目

    1、字符型驱动设备你是怎么创建设备文件的,就是/dev/下面的设备文件,供上 层应用程序打开使用的文件?...第三:中断服务程序注意返回值,要用操作系统定义的宏做为返回值,而不是自 己定义的 OK,FAIL 之类的。

    dubbo-admin-master-0.2.0

    6. **API文档**:Dubbo-admin通常会集成API文档展示,方便开发者了解服务接口的详细信息,包括方法、参数、返回值等。 7. **版本管理**:0.2.0版本可能引入了新的特性或者修复了一些已知问题,用户可以通过升级到这...

    Java xml转化为map

    这里我们主要讨论使用JAXB的方法,因为它是Java平台的一部分,无需额外依赖。 1. **JAXB的基本使用**: - 首先,确保你的项目包含JAXB库,这在Java 6及以上版本是默认包含的。 - 创建一个Java类来映射XML结构。每...

    展讯开发学习资料

    在数据存储管理模块中,驱动层负责与硬件交互,服务层提供高层抽象的接口,而应用层则可以直接调用这些接口进行数据操作。 文档中可能会详细解释以下几个方面: 1. **API定义**:列出所有与数据存储相关的API,...

    基于winsock TCP的服务器端和客户端演示

    Winsock是Windows平台上的一个接口,它允许程序员使用标准套接字API来访问网络服务,这些服务包括TCP、UDP等传输层协议。Winsock遵循Berkeley套接字接口,因此对于熟悉Unix或Linux网络编程的人来说,上手相对容易。 ...

    如何用Netty写一个自己的RPC框架.pdf

    5. 服务端收到请求信息,并反序列化请求信息,根据group、providerName、version从本地服务字典中查找到providerObject,再根据methodName、args[]通过反射调用指定方法,并将方法返回值序列化成bytes发回客户端。...

    移远BC28,使用UDP直连私有服务器AT指令流程详解.doc

    - **UDP (User Datagram Protocol)**: 用户数据报协议,是一种无连接的传输层协议,用于提供轻量级的数据包传递服务。 - **AT指令**: AT指令集是一种广泛应用于通信设备中的命令语言,用于控制调制解调器等设备。在...

    基于TCP的服务器客户端编程.docx

    TCP/IP协议栈中的TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在实际应用中,通过TCP进行通信通常涉及两个主要组件:服务器端和客户端。本文将详细介绍如何使用TCP套接字编程实现...

    开放网络计算远程进程调用

    - **服务描述**:使用 ONC RPC 语言可以清晰地描述服务接口,包括参数类型和返回值。 - **语言规范**:详细说明了 ONC RPC 语言的语法和语义规则。 - **语法注意事项**:提供了编写 ONC RPC 接口时需要注意的一些...

    全面解剖RocketMQ和项目实战-day2-part1.7z

    - 讨论服务版本管理和接口演进,保持接口的兼容性。 - 学习如何编写单元测试,确保服务接口的正确性。 9. **8.dubbo概述.mp4**: - 介绍Dubbo的基本概念和设计理念,包括服务、提供者、消费者、注册中心等组件。...

    ssm 移动端物流系统 - 客户模块项目资源1p.docx

    2. 核心代码库:这包括业务逻辑处理、数据访问层的封装、服务层的接口定义以及控制器层的具体实现。代码库中应该有清晰的层次结构和命名规范,确保代码易于维护和扩展。 3. 配置文件:系统配置文件、数据库连接配置...

    数据层需要的接口1

    这里我们讨论的"数据层需要的接口1"主要涉及TransportData服务的接口规范,这些接口用于实现对商品(CommodityPo)、发送(SendPo)、装载(LoadPo)、到达(ArrivalPo)和接收(RecievePo)等对象的操作,以及车辆...

    1-Codec-Engine-.rar_codec

    这个系统提供了一种高效的方式,用于管理和优化各种编码器和解码器的性能,使得在多样的应用场景中,如视频会议、流媒体服务、监控系统等,能够实现高质量的音视频传输。 在“1 Codec Engine.pdf”文档中,我们可能...

    基于ssm微信小程序的电影交流平台源码数据库文档.zip

    1. **源码**:涵盖了项目的各个模块,如前端微信小程序的代码,后端SSM框架的服务层、控制层、持久层代码,以及配置文件等。 2. **数据库设计**:可能有数据库表结构设计文档,包括各个表的字段、主键、外键、索引等...

    java生态体系面试题

    8. **ISO/OSI七层模型**:分为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,每一层都有特定的功能,面试时需理解各层作用。 9. **TCP与UDP的区别**:TCP是面向连接的、可靠的协议,有拥塞控制,而...

    2024-金三银四-面试突击-Spring专题(下).md

    在Spring框架中,SpringMVC扮演着至关重要的角色,它主要负责处理Web层的请求。SpringMVC提供了一套完整的MVC框架,包括前端控制器DispatcherServlet、处理器映射、视图解析器等功能组件。本篇内容将继续深入探讨...

    Java对象请求的JavaScript经纪.zip

    这个标题暗示了我们讨论的主题是关于Java对象如何在JavaScript环境中被请求或操作。"经纪"在这里可能是指一个中间层或代理,它使得Java对象能够在JavaScript环境中可用,这通常是通过某种形式的桥接技术实现的,例如...

Global site tag (gtag.js) - Google Analytics