Wcf 关于如何从服务层返回多个简单类型的建议

Wcf 关于如何从服务层返回多个简单类型的建议,wcf,Wcf,在我的mvc3应用程序中,我有如下设置: 1. repositories for each entity 2. service class for each entity that wraps the bare nhibernate db calls with business logic 例如,一个注册用户的类,如果用户能够成功注册,我希望服务类返回的不仅仅是布尔值或用户对象 这种做法好吗 由于以下原因,个人可能无法正确注册: 1. duplicate email address in th

在我的mvc3应用程序中,我有如下设置:

1. repositories for each entity
2. service class for each entity that wraps the bare nhibernate db calls with business logic
例如,一个注册用户的类,如果用户能够成功注册,我希望服务类返回的不仅仅是布尔值或用户对象

这种做法好吗

由于以下原因,个人可能无法正确注册:

1. duplicate email address in the system
2. duplicate username
3. etc.
因此,我的方法可能如下所示:

public User Register(User newUser)
{
   // check for a user with the same email
   // check for a user with the same username

   // validation checks etc.

   return user;
}
我正在考虑创建一个UserRegistrationResponse对象,以便返回更丰富的返回值

比如:

public UserRegistrationResponse Register(User user)
{
  ..

  return userRegistrationResponse;
}
通过这种方式,我可以轻松地返回一个用户响应,我可以将其发送到UI层,并且仍然可以获得用户对象和其他信息等

对该方法的评论?


我想唯一的其他方法是抛出异常,但这真的是个好主意吗?我的想法是能够重用这些服务类,比如说在我将来需要的Restful服务层中。

这是非常常见的。在过去3年中,我参与的10个WCF项目中有10个使用了这种模式。这包括三家不同公司的遗留项目,green field development和mvc/webforms项目。

这非常常见。在过去3年中,我参与的10个WCF项目中有10个使用了这种模式。这包括三家不同公司的遗留项目,green field development和mvc/webforms项目。

是否有任何东西让您认为您提到的方法有问题?我觉得很好。例外情况只在特殊情况下才会出现:不正确的密码条目也不例外。有人曾经提到我,这就像C或C++风格,所以我现在真的很困惑:对我来说看起来不错。您已经创建了一个类型,它表示用户注册时发生的情况。现在,它可以保存与该操作相关的所有状态。我做了类似的操作,但返回了一个类(OpResult),该类包含一个布尔值表示成功,以及一些其他优点,如与验证相关的错误等。是用于特定操作的枚举,因此您可以根据需要在UI层中打开该枚举。是否有任何原因导致您认为您提到的方法有问题?我觉得很好。例外情况只在特殊情况下才会出现:不正确的密码条目也不例外。有人曾经提到我,这就像C或C++风格,所以我现在真的很困惑:对我来说看起来不错。您已经创建了一个类型,它表示用户注册时发生的情况。现在,它可以保存与该操作相关的所有状态。我做了类似的操作,但返回了一个类(OpResult),该类包含一个布尔值表示成功,以及一些其他优点,如与验证相关的错误等。是特定操作的枚举,因此可以根据需要在UI层中打开该枚举。