2012-10-25 7 views
1

N 계층 응용 프로그램에서 웹 사이트는 비즈니스 참조 계층에 액세스하고 비즈니스 계층 DTO를 가져 오기 위해 웹 참조에 연결됩니다. 예를 들어, BL은 자동차에 대한 정의를 제공 할 수 있습니다 : 내 ASP.NET MVC 웹 사이트에서비즈니스 레이어에서 프리젠 테이션 레이어로 이름 충돌 매핑을 처리하는 방법은 무엇입니까?

public class Car() { 
    public string Make { get; set; } 
    public string Model { get; set; } 
    . . . 
} 

을, 나는 내 자신의 자동차 모델 객체를 생성해야합니다. (아마 필드를 추가/제거하거나 데이터 주석을 통해 유효성 검사를 추가 할 수 있습니다.)

이미 Car라는 이름 공간에 개체가 있으므로 내 모델 개체의 이름을 다른 것으로 지정해야합니다. 실제로 개체에 대한 더 좋은 이름은 없습니다. 이러한 이름 충돌을 처리하는 더 쉬운 방법이 있습니까? 또는 모델을 완벽하게 검증 할 수는 있지만 이상적이지는 않습니다.

또 다른 가능성은, 내가 BL에서 개체를 사용할 수 있지만 유효성 검사를 위해 데이터 주석을 추가 할 수 있도록 확장 할 수 있습니까?

답변

1

사람들은 MVC 응용 프로그램에서이 클래스를 처리 할 때 단순히이 클래스에 Model을 추가하는 것을 보았습니다. 귀하의 경우 클래스는 CarModel입니다.

개체를 확장하는 경우 데이터가 변경 될 때 나중에 문제가 발생할 수 있으므로 비즈니스 레이어 개체가 프레젠테이션 계층에 누출되지 않는 것이 좋습니다. 데이터가 사용되는 모든 장소에서 프레젠테이션 코드를 변경하지 않고 Car에서 CarModel으로 변환 할 때 변경하는 것이 더 쉽습니다.

+0

현재 해결 방법은 DL 개체에'Model'을 추가하는 것입니다. 문제는 코드의 가독성을 어느 정도 줄이고, 애플리케이션의 특성을 고려할 때 'CarModel'이 자동차 모델 (Murcielago)과 모호하거나 혼란 스럽다는 점입니다. –

+0

당신은'ViewModel'을 추가 할 수 있습니다,하지만 약간 자세한 정보를 얻기 시작합니다. 프리젠 테이션 레이어에 많은 양의 복잡한 코드가 있습니까? – Kazetsukai