2014-05-19 55 views
1

我只是想知道我應該把代碼製作外部服務調用到我的MVC應用程序?我應該在ASP.NET MVC應用程序中將外部服務調用放在哪裏?

在「Exam Ref 70-486:Developing ASP.NET MVC 4 Web Applications」一書中,他們建議服務調用必須包含在Model代碼中。然而,在我看來,服務呼叫都必須放在一個代理類像下面的一個裏面,所以我們可以通過修改服務調用以後如果我們需要:

public class ExternalServiceProxy 
{ 
    public void DoSomething() 
    { 
     //Call the external service 
    } 
} 

我只是想知道我是正確的思維或者他們提出的是正確的?

謝謝。

+3

我似乎同意你,服務應該可以通過代理訪問。此外在一個不同的項目中一起。 –

回答

2

您的控制器負責調用服務。但是,控制器也應該是我們輕量級的這意味着它應該只包含控制器邏輯;而大多數業務或領域邏輯應該在服務中。

所以,我通常會做的是在Web應用程序中創建一個服務文件夾,並將所有服務調用放在本地代理服務中。這些注入控制器並返回模型(PatientSummary)。然後在控制器中,將返回的模型映射到傳遞給視圖的正確視圖模型(PatientSummaryViewModel)。

namespace WebApp.Services 
{ 
     public class PatientService 
     { 
      public List<PatientSummary> FindPatients() 
      { 
      } 
     } 
} 

namespace WebApp.Controllers 
{ 
     public class PatientController 
     { 
      private readonly PatientService _patientService; 
      public PatientController(PatientService patientService) 
      { 
        _patientService = patientService; 
      } 
      public ActionResult FindPatients() 
      { 
       var patients = _patientService.FindPatients(); // return model entities 
       // create patient summary view model based on patients model 
       return View(patientSummaryViewModel);  
      } 
     } 
} 
3

不要太緊張地把一切都放在MVC的「詞彙表」上。 ASP.NET MVC是一個Web框架,而不是一個包羅萬象的架構設計。隨意將您的外部服務調用放在代理,應用程序服務,基礎架構服務或任何您喜歡的內容中。

相關問題