2012-04-16 7 views
2

최근에 우리 교수는 프레젠테이션 계층은 대부분 메서드 호출로 구성되어야하며 대부분의 코드는 비즈니스 개체 및 데이터 액세스 계층에서 수행되어야한다고 설명했습니다. 내 질문은 일반적으로 사용자 입력 코드가 포함되어 있습니까? 나는 이것이 무엇을 의미 하는가? 사용자가 여러 가지 값을 입력 할 수 있도록 여러 텍스트 상자로 구성된 양식이 있습니다. 그런 다음 사용자가 단추를 클릭하면 정보가 데이터베이스에 저장됩니다. 위의 버튼 이벤트 메서드 내에서 코드가 실제로 비즈니스 오브젝트 또는 데이터 액세스 클래스 대신 프리젠 테이션 계층 클래스로 이동해야3-tier 아키텍처의 위치

//event handler for data input 
public static void btnEnterAbRipperXInfo_Click(object sender, EventArgs e) 
{ 
    //convert text box data into int datatype and assign to variable 
    inAndouts = int.Parse(txtInAndOuts.Text); 
    forwardBicycles = int.Parse(txtForwardBicycles.Text); 
    reverseBicycles = int.Parse(txtReverseBicycles.Text); 
    crunchyFrog = int.Parse(txtCrunchyFrog.Text); 
    crossLegWideLegSitups = int.Parse(txtCrossLegWideLegSitups.Text); 
    fiferScissors = int.Parse(txtFiferScissors.Text); 
    hipRockNRaise = int.Parse(txtHipRockNRaise.Text); 
    pulseUpsHeelsToHeaven = int.Parse(txtPulseUpsHeelsToHeaven.Text); 
    vUpRollUpCombos = int.Parse(txtVUpRollUpCombos.Text); 
    obliqueVUps = int.Parse(txtObliqueVUps.Text); 
    legClimbs = int.Parse(txtLegClimbs.Text); 
    masonTwists = int.Parse(txtMasonTwists.Text);    
} 

:

버튼도 방법은 다음과 같습니다?

이것은 숙제가 아닙니다. 나는 내 프로그래밍 수업 이외의 내 아들을위한 90 일 운동 프로그램을 만들고있다. 졸업 할 때도 포트폴리오로 사용할 수 있으므로 표준 관행을 따르고 싶습니다.

답변

0

BOL은 DAL (데이터 액세스 계층)으로 이동하기 전에 위생 처리해야하는 특정 업무 확인/사례를 처리합니다. DAL은 BOL에서 입력을 가져 와서 데이터베이스로 전달합니다.

텍스트 상자 값에 비즈니스 로직 유형이 필요하지 않은 경우 해당 값을 BOL에 전달하여 DAL로 자유롭게 전달할 수 있습니다.

코드의 모양을 보면 확인/유효성 검사가 필요하지 않습니다. 프로젝트에 일관성을 유지하기 위해 중복 된 것처럼 보일지라도 BOL에 전달할 수는 있습니다. 본질적으로 귀하의 BOL은 이러한 가치에 영향을 미치지 않을 것입니다 - 단지 이러한 가치들을 취하여 DAL에이를 전달할 것입니다.

+1

@ProgrammingNewbie - 문제 없음 - 현재 UI 레이어에 있어야하는 것을 이해하고, 코드에서 Parse Before Parse를 할 수 있습니다. txtMasonTwists.Text가 정수가 아니면 예외가 쉽게 throw 될 수 있습니다. – JonH

0

아니요. 도메인 또는 데이터 계층 개체에는 적합하지 않습니다. 프레젠테이션 요소와 직접 상호 작용하기 때문에 이것은 UI 계층에 적합합니다.

이제 값을 추출하고 적절한 유형으로 파싱 한 다음 UI 레이어에서 해당 작업을 전송하는 것이 좋습니다.

또한 텍스트 상자에 숫자가 아닌 값을 입력하면 폼이 예외를 throw하기 때문에 int.TryParse을 사용하여 값을 변환하는 것이 좋습니다.

1

코드는 UI에서 값을 읽습니다.

이 코드는 비즈니스 계층에서 UI에 액세스 할 수 없기 때문에 UI 계층에만있을 수 있습니다.

1

일반적으로 UI 레이어 또는 프리젠 테이션 레이어에서는 (지금하고있는 것처럼) 컨트롤에서 값을 가져옵니다. 그런 다음이 모든 값을 사용하여 비즈니스 로직 메소드를 호출하십시오. 비슷한 것

BAL.ProcessRequest(arg1,arg2,.....); 

이제 이러한 입력과 관련된 비즈니스 규칙이있는 경우 비즈니스 논리에서 수행합니다. 예를 들어 제품 및 주문 수량을 전달하는 중 일부 비즈니스 규칙을 기반으로 해당 제품의 할인을 계산하려면 비즈니스 계층에서 할인 계산을 수행합니다.
그런 다음 데이터베이스에 제출하려고 할 때 데이터 액세스 계층을 호출합니다. 뭔가 같은 :

DAL.SaveData(arg1,arg2,...); 

기본적으로 분리 된 레이어가있는 이유는 기본적으로 응용 프로그램을 느슨하게 결합하는 것입니다.예를 들어, 부족한 데이터베이스를 변경하려는 경우 비즈니스 계층이나 프레젠테이션 계층이 아닌 데이터 액세스 계층 만 변경해야합니다.
웹 응용 프로그램에서 데스크톱 응용 프로그램으로 UI/Presentation 레이어를 변경하려는 경우 프리젠 테이션 레이어에서만 변경이 가능합니다. 비즈니스 계층과 데이터 액세스 계층은 변경되지 않습니다. 비즈니스 레이어에 텍스트 상자 컨트롤을 전달하려는 경우 응용 프로그램이 결합됩니다 (UI/Presentatioin 레이어가 비즈니스 레이어와 결합 됨).
여기에 Three Tier Architecture을 설명하는 기사가 있습니다.

+0

@ Habib.OSU - 시간을내어 설명해 주셔서 감사합니다. 그것은 매우 도움이되었다. 또한 링크에 대해 감사드립니다. 나는 그것을 읽을 것이다. –

+0

로직을 수행 할 필요가없는 경우 UI에서 DAL로 직접 정보를 전달할 수 있습니까? 아니면 여전히 BAL을 통과해야합니까? UI에서 데이터를 전달하기 위해서만 BAL 클래스를 만드는 것은 리소스 낭비와 같습니다. –

+1

@ProgrammingNewbie 물론 그렇게 할 수는 있지만 데이터에 대한 비즈니스 규칙을 수행 할 필요가없는 경우는 거의 없습니다. 하지만 나중에라도 아무 것도하지 않아도된다고 생각하면 비즈니스 계층을 생략 할 수 있습니다. – Habib

관련 문제