2013-02-20 1 views
0

나는이 내 서비스 계층에서 다음과 같은 방법MVC 앱에서 웹에서 서비스 레이어로 삭제 동작을 이동하려면 무엇을 반환해야합니까?

public void DeleteOrder(int orderId) 
     { 
      var order = _db.Order.FirstOrDefault(c => c.OrderId == orderId); 
      if (order == null) 
      { 
       // error handling 
      } 

      _db.Orders.Remove(order); 
      _db.SaveChanges(); 
     } 

컨트롤러에 뭔가를 반환 측면에서 가장 좋은 방법은 무엇입니까? 현재 Remove() 액션은 이것을 호출하고 사용자를 리디렉션합니다.

답변

1

이것은 서비스에 따라 다릅니다.

서비스 계층이 SOAP 서비스 인 경우 오류를 오류로 처리하고 오류 계약을 지정해야합니다.

http://msdn.microsoft.com/en-us/library/ms733721.aspx

당신이 편안한 서비스를 사용하는 경우

, 나는 항상 서비스 작업이 성공 여부를 나타내는 오류 객체를 반환했다.

Class ErrorObject { 

Bool IsOk 

String ErrorMessage 

String Trace 

} 
0

어떤 종류의 클라이언트와 상호 작용하는지에 따라 다릅니다. 클라이언트를 리다이렉트하고 있기 때문에, 현재 AJAX 클라이언트를 지원하지 않는 것 같습니다.

이 경우, 규칙 (Ruby on Rails에서 시작됨)은 성공적인 결과 후에 리디렉션하고, 그렇지 않으면 작업과 관련된 페이지를 오류와 함께 표시합니다. 하지만 현대 웹 응용 프로그램을 사용하는 대부분의 사람들은 자바 스크립트 및 비동기 요청 (AJAX)을 사용하려고합니다. 성공이 경우 "오류"설정없이

{"error": {"code": ..., "fields": {"field1": "error message", "field2": "error message 2"}} 

또는 다른 JSON :이 경우, 당신은 아마 잘 문서화 두 가지 유형 중 하나입니다 JSON을 반환합니다. 그런 다음 JSONP 또는 CORS가있는 XHR과 같은 기술을 포함하여 모든 종류의 클라이언트가 웹 서비스를 공격 할 수 있습니다.

관련 문제