2009-06-05 2 views
1

MVC 프레임 워크를 처음 사용하고 NerdDinner 샘플 프로젝트를 실행했습니다. 양식 기반 asp.net을 통해이 접근 방식을 좋아합니다.큰 프로젝트의 기본 템플릿으로 NerdDinner 샘플 프로젝트를 사용할 수 있습니까?

저는이 같은 접근 방식을 사용하여 더 큰 측면 프로젝트를 진행하고 싶습니다. 이 프로젝트에서 기본 구조를 좀 더 복잡한 웹 사이트로 확대하는 것을 방해하는 요소가 있습니까? 내 DB는 NerdDinner 프로젝트는 직접 LinqToSQL 클래스를 사용 ... 모든 방법을에서) 약 30 2가, 는 1) NerdDinner 샘플은 두 테이블의 DB를 액세스 : 사물의

예를 들면 나에게주의 할 것을 모델을 컨트롤러를 통해 볼 수 있습니다 ... 더 큰 프로젝트를 원한다면?

NerdDinner 프레임 워크의 다른 부분이 향후 슬픔을 유발할 수 있습니까?

답변

1

리포지토리와 컨트롤러 사이에 서비스 계층을 추가 할 것입니다. 서비스 계층에는 처리기 입력 및 페이지 플로우 처리를 주로 처리하는 비즈니스 로직이 모두 포함됩니다.

리포지토리 내에서 LinqToSql 클래스와 필드를 도메인 모델에 매핑 한 다음 서비스 계층, 컨트롤러 및 뷰 내에서 도메인 모델을 사용합니다. 대형 시스템의 경우 추가 레이어가 장기적으로 가치가 있음을 증명합니다.

+0

도메인 모델을 /에서 도메인 모델을 LinqToSql 클래스로 변환하는 것이 오버 헤드가 아니라는 것을 알지 못했지만 결국 더 많은 코드를 작성하게됩니까? – David

+0

@David 네, 매핑 레이어를 지원하는 데 더 많은 코드가 필요합니다. 그렇게하지 않으면 이점이없는 한 제안하지 않습니다. 또 다른 옵션은 nHibernate를 사용하는 것이지만, 우리 팀은 그런 준비가되어 있지 않습니다 (가파른 학습 곡선). 그러나 우리 프로젝트에서 우리가 디자인에서 3-4 개의 제한된 컨텍스트로 끝났을 때 작성하기 쉬운 추가 매핑 레이어가 자체적으로 지불되었습니다. –

1

Linq에서 SQL 클래스에 관해서 인터넷 주위에 논쟁이 많이 있습니다. 어떤 사람들은 클래스를 직접 사용할 때 추상화가 충분하지 않다고 느끼며, 어떤 사람들은 그것이 자신을 위해있는 것이라고 생각합니다. 직장에서 우리는 사이트를 개선하기 시작했고 MVC를 사용하고 있습니다. 우리가 결정한 방식은 기본적으로 LINQ to SQL 클래스 각각이 인터페이스를 구현하는 것입니다. IE :

public partial class LinqToSqlClass //generated class 
{ 
    public int Id{get;set;} 
} 

interface ILinqToSqlClass 
{ 
    int Id{get;set;} 
} 

public partial class LinqToSqlClass : ILinqToSqlClass 
{ 

} 

이것은 아주 작은 부분입니다. 그런 다음 생성 된 클래스 중 하나를 가져 오는 리포지토리가 있지만 해당 인터페이스 유형으로 만 생성됩니다. 이 방법으로, 우리는 실제로 Linq to SQL 클래스로 직접 작업하지 않습니다. 이 작업을 수행하는 데는 여러 가지 방법이 있지만 일반적으로 큰 데이터베이스 (특히 스키마가 변경 될 수있는 경우)를 처리하거나 둘 이상의 소스에서 올 수있는 데이터를 처리하는 경우 예라고합니다. , 확실히 수업을 직접 사용하지 마십시오.

중요한 내용은 괴상한 저녁 식사 장에서 좋은 정보가 많이 있지만, 자신 만의 프로젝트를 만들 때 분명히 자신의 쟁점에 부딪치게 될 것입니다.

0

Nerd Dinner 텍스트는 MVC 프레임 워크가 다른 일반적인 데이터 추상화를 동일하게 수용 할 수 있다고 주장합니다. (사실입니다.) 조직에서 이미 좋아하는 것 같습니다. 좋은 학습 전략은 아마 하나를 다른 것에 적응시키는 것일 것입니다.

2

나는 모델이 linq2sql을 사용하는 유일한 장소 여야한다는 것과 다른 작은 부록에서는 작은 프로젝트의 모델에서 linq2sql 만 사용한다는 것에 동의합니다. 대규모 사이트의 경우 데이터베이스에 대한 모든 이야기를 수행하고 모델에서 웹 서비스를 활용하는 별도의 웹 서비스 프로젝트를 만드는 것이 오버 헤드의 가치가 있습니다.

Nerd Diner 예제를 완전히 체크 아웃 한 적이 없지만 다른 우수 사례에는 형식화 된 뷰가 포함되며 쉽게 확인이 가능한 데이터 모델러가 사용됩니다 (xval 또는 DataAnnotations 모델 바인더 참조).나에게 이것은 가장 중요한 모범 사례 중 2 가지입니다/

Stephen Walter는 website에 대해 새로운 MVC 프로젝트를 설정할 때 체크 아웃하고 고려해야 할 유용한 팁을 많이 제공합니다.

+0

FYI : xVal은 서버 측 도메인 모델 유효성 검사가 아닌 웹 클라이언트 측 지원을 위해 설계되었습니다. –

+0

실제로 Modelstate의 클라이언트 측 및 서버 측 유효성 검사에 도움을주기 위해 설계되었습니다. http://blog.codeville.net/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/를 참조하십시오. 비즈니스 규칙에 대한 DataAnnotations의 CustomValidation 속성을 사용하여 긴 시간을 보냈지 만 비즈니스 규칙 유효성 검사가 아니라 데이터 유효성 검사가 전부입니다. –

관련 문제