난 2 레이어, UI 및 BusinessLayer가 레거시 asp.net 웹 응용 프로그램이 있습니다. UI 프로젝트 유형은 ASP.NET 웹 사이트이고 BL은 유형 클래스 라이브러리입니다. BL 프로젝트에는 Customer, User, Empoloyee 등의 응용 프로그램 엔터티를위한 클래스가 있습니다. 각 클래스에는 데이터베이스 읽기 및 DataReader에서 개체 속성 채우기 메서드가 있습니다. 즉, 고객 클래스에는 고객 개체와 데이터 액세스 메서드가 함께 포함됩니다. .기존의 BusinessLayer에서 ViewModel 객체를로드하는 더 나은 방법으로 BusinessLayer.Better와 함께 기존 ASP.NET 응용 프로그램에 ASP.NET MVC?
이제 MVC도 지원하도록 웹 응용 프로그램을 변경했습니다. 이전 사이트 (webforms)는 이전 버전과 마찬가지로 작동하며 사이트를 관리하기위한 관리 기능을 추가하는 사이트로의 새 업그레이드는 ASP.NET MVC3에 있습니다. 라우팅과 모든 것이 잘 작동합니다. 그러나 나는 프로젝트의 구조/유지 가능성에 대해 걱정하고있다.
새 MVC 부분에서는 CustomerViewModel, EmployeeViewModel과 같은 몇몇 엔터티에 대해 ViewModels을 만들어야했습니다. "CustomerService
"이라는 메서드를 사용하여 GetCustomerViewModel
같은 메서드를 만들고 그 메서드 안에는 기존 BusinessLayer에서 GetCustomerMethod
을 호출하고 기존 BL 프로젝트에 언급 된 개체 유형의 개체에서 속성 값을 읽고 CustomerViewModel
(I 나중에이 AutoMapper 샘플을 살펴보고이 메서드에서 반환합니다. 내보기는이 개체를 사용하여 UI에 데이터를 표시합니다. "CustomerService
"클래스를 만든 이유는 조건 확인 또는 일부 비즈니스 유효성 검사를 수행하기 전에 값을 CustomerViewModel 개체로 설정하기 전에 수행해야 할 수도 있습니다. 내 컨트롤러가 얇아 질 수 있도록 "중간 계층/서비스 계층"으로 간주합니다. 내 CustomerViewModel
public static CustomerViewModel GetCustomerViewModel(int customerId)
{
//Create an object of new ViewModel
CustomerViewModel objCustomerViewModel = new CustomerViewModel();
//Get an object from Existing BL of Customer of type ExistingBL.Customer
ExistingBL.Customer objCustOld=new Customer(customerId);
//Check some properties of the customer object and set values to the new ViewModel object
if(objCustOld.Type=="normal")
{
objCustomerViewModel.Priority=2;
}
else if(objCustOld.Type=="abnormal")
{
objCustomerViewModel.Priority=1;
objCustomerViewModel.Message ="We love you";
}
//Some other checking like this....
return objCustomerViewModel;
}
에서 내 고객 컨트롤러
public ActionResult Details(int id)
{
MyProject.MVCViewModel.CustomerViewModel objCustomerVM;
objCustomerVM=MyProject.MVCMiddleLayer.CustomerService.GetCustomerViewModel(id);
return View(objCustomerVM);
}
에서
이 잘못된 접근 방식인가? 내 코드가 지저분해질 것인가? ViewModel에 대해서는 만족스럽지 않습니다. 기존 BL 엔티티의 중복 코드이기 때문입니다. 이 시나리오를 해결하는 가장 좋은 방법은 무엇입니까? 나는이 경우 대부분의 예제에서 보았던 저장소 패턴 사용에 대해 확신하지 못합니까? 어떻게해야합니까? 내 코드를 어떻게 개선할까요?
항상 링크를 붙여 넣기는 싫지만 유용한 정보가 있습니다. http://stackoverflow.com/questions/5306655/using-view-models-in-asp-net-mvc-3 –