C# DB Services C的良好实践是什么#
我正在ASP.NETMVC中制作web项目。每个控制器调用服务来执行一些操作。让我们来看一个例子C# DB Services C的良好实践是什么#,c#,asp.net,C#,Asp.net,我正在ASP.NETMVC中制作web项目。每个控制器调用服务来执行一些操作。让我们来看一个例子 public interface IProjectService { bool ActivateProject(int projectId); //others } 并实现了类 public class ProjectService : IProjectService { private readonly IContext
public interface IProjectService
{
bool ActivateProject(int projectId);
//others
}
并实现了类
public class ProjectService : IProjectService
{
private readonly IContextProvider _contextProvider;
public ProjectService(IContextProvider contextProvider)
{
_contextProvider = contextProvider;
}
public bool ActivateProject(int projectId)
{
using (var context = _contextProvider.GetContext())
{
var project = context.Projects.Where(p => p.ProjectId == projectId).SingleOrDefault();
project.Status = 1;
context.SaveChanges();
return true;
}
}
//others
}
在本例中,管理员希望激活项目。我在jQuery中进行了验证,所以管理员只能传递projectId
那么现在应该返回什么方法呢?
我应该把它留作空白吗?
假设数据库有错误,那么我应该抛出异常吗?这种操作的实践是什么?一般来说,您不应该使用异常来处理标准执行流。例外情况用于不应该发生的事情实际发生的情况 也就是说,有一条边界线,异常和返回值非常适合,这只是品味的问题 异常通常会提供更大的灵活性,因为您可以抛出不同的异常类型,并通过一次try/catch来处理它们。它们还提供了更多的信息。布尔值并不能说明发生了什么 如果返回布尔值,则应在方法内部处理异常,至少应将错误详细信息记录在某个位置
我个人会在出现问题时抛出异常,并让调用方处理。一般来说,您不应该使用异常来处理标准执行流。例外情况用于不应该发生的事情实际发生的情况 也就是说,有一条边界线,异常和返回值非常适合,这只是品味的问题 异常通常会提供更大的灵活性,因为您可以抛出不同的异常类型,并通过一次try/catch来处理它们。它们还提供了更多的信息。布尔值并不能说明发生了什么 如果返回布尔值,则应在方法内部处理异常,至少应将错误详细信息记录在某个位置
我个人会在出现问题时抛出异常,并让调用方处理。“我在jQuery中进行了验证”-这不是保护web服务的方式。你是什么意思?我的意思是,方法的参数将始终为OK,您永远不能信任用户输入。从jQuery传递值并不意味着有人绕过jQuery直接向您发送数据。验证服务器端,100%的时间。当然我不理解,所以我应该抛出异常还是什么?我不知道在那些情况下“我在jQuery中有验证”是什么做法——这不是保护web服务的方式。你是什么意思?我的意思是,方法的参数将始终为OK,您永远不能信任用户输入。从jQuery传递值并不意味着有人绕过jQuery直接向您发送数据。验证服务器端,100%的时间。当然我不理解,所以我应该抛出异常还是什么?我不知道在这些情况下,什么是实践。你可能错过了问题的“web服务”部分。无法从web服务抛出异常(它将变成一个500响应,其中JSON负载描述了异常),客户机真的无法“处理”这些异常。您可能错过了问题的“web服务”部分。没有办法从web服务抛出异常(它将变成一个500响应,其中JSON负载描述异常),客户机实际上无法“处理”这些异常。