我们在表示层(PL)和基于 WCF 的服务层(SL)中使用 MVP 模式。PL 在 SL 上调用操作合约,并在内部进行一些业务验证。如果验证通过,我们将一个对象(作为数据合约公开)返回给 PL。
但是如果验证失败,我们通知 PL 的最佳做法是什么。
Entity2 Operation1(Entity1 e)
{
//Do some business validation and if passes pass on the updated object back to PL
}
一种方法是我们创建一个通用的响应类,它对所有操作合约都是通用的。它看起来像这样。
public class Response
{
public ExceptionType exceptionType;
public ExceptionInfo exceptionInfo;
Collection<Entity> entityCollection;
}
ExceptionType:这是一个枚举,它告诉业务验证是否失败或安全验证或某些未知异常发生。
ExceptionInfo:这是一个枚举,它告诉发生的验证/异常的具体细节,如 errorCode 等。
集合:服务层可以返回单个实体或实体集合。我们使用此属性根据要求返回一个或多个实体。如果验证失败或该方法不期望来自服务层的任何返回实体,它也可以为 null。
这是将验证失败传递给 PL 的好方法吗?
我看到的缺点是 - PL 需要处理 exceptionInfo 中定义的所有案例,可能使用 switch case 并做一些必要的事情。
其他方法是在任何业务验证或安全验证失败时向 PL 抛出异常。我不太热衷于这种方法,因为我不想使用异常来处理我的业务逻辑。
还有更多想法来处理这种情况吗?