표준

2010-02-24 9 views
0

에 따라 코드를 업데이트하십시오. VB.Net, C# .Net 및 SQL Server를 사용하십시오.표준

Windows 응용 프로그램은

나는 3 계층 아키텍처 (프리젠 테이션 계층, 데이터 액세스 레이어, 비즈니스 로직 계층)에 대한 코드를 구분합니다.

코드. 코드 위

의 Form_Load

Dim cmd As New SqlCommand 
    Dim ada As New SqlDataAdapter 
    Dim ds As New DataSet 

    Con = New SqlConnection("Data Source='" & servername.Text & "';Initial Catalog='"  & databasename.Text & "';Integrated Security=true") 
        Con.Open() 

     cmd = New SqlCommand("Select * from tb1", Con) 
     ada = New SqlDataAdapter(cmd) 
     ada.Fill(ds, "tb1") 
     datagrid2.DataSource = ds.Tables("tb1") 

노력하고 있습니다,하지만 난 3 계층 아키텍처를 사용하여 동일한 프로세스를 수행합니다.

3 층 아키텍처에 따라 코드를 분리하는 방법.

필요 VB.Net 코드 도움말

+0

당신의 3 개 계층은 무엇입니까? 너 어떻게 그들을 구분하니? – Oded

+0

@Oded - 3 단계 아키텍처를 사용하여 동일한 프로세스를 수행하려는 경우 간단히 설명합니다. – Gopal

답변

2

에서 당신은 UI 계층을 제외한 모든 계층에 대한 클래스 라이브러리 프로젝트를 만들 수 있습니다 tonot 운영자 추천. 그런 다음 각 프로세스를이 3 계층으로 분류해야합니다. 예를 들어 데이터 액세스 레이어에서 모든 데이터 액세스를 수행하고 모든 로직을 로직 레이어에 배치합니다. UI에서는 DAL을 직접 사용할 수 없습니다. BLL에 정의 된 메소드 만 호출해야합니다.

참고 : UI 프로젝트에 대한 참조로 레이어 당 dll을 추가하여이 레이어를 UI에 추가하십시오.

DAL

public DataSet GetData(string serverName,string dataBaseName) 
{ 
    SqlCommand cmd; 
    SqlDataAdapter ada; 
    DataSet ds = new DataSet(); 
    SqlConnection Con; 

    Con = New SqlConnection("Data Source='" & serverName & "';Initial Catalog='" & dataBaseName & "';Integrated Security=true"); 
    Con.Open(); 

     cmd = New SqlCommand("Select * from tb1", Con); 
     ada = New SqlDataAdapter(cmd); 
     ada.Fill(ds, "tb1"); 
     return ds; 
} 

BLL

public DataSet GetData(string serverName,string dataBaseName) 
{ 
    DataSet ds = new DataSet(); 
    ds = DoAction(new DAL().GetData(serverName, dataBaseName)); //do something on data 
    return ds; 
} 

UI

datagrid2.DataSource = new BLL().GetData(servername.Text,databasename.Text); 
datagrid2.DataMember = "tb1"; 
datagrid2.DataBind(); 
+0

@Masoud.게시 된 코드를 수정할 수 있습니까? – Gopal

+0

@Masoud. 새로운 3 단계 아키텍처입니다. 나는 당신이 코드를 이해합니다. 고맙습니다. 3 단계 아키텍처를 시작하기 전에. 클래스 파일을 추가하는 것과 같이해야 할 단계는 무엇입니까? "UI 프로젝트에 대한 참조로 레이어 당 dll을 추가하여 이러한 레이어를 UI에 추가하십시오. – Gopal

+0

각 응용 프로그램은 dll 파일이됩니다. 또한 레이어별로 레이어로 UI에서이 레이어를 가질 수 있습니다. 이 답변을 수락하면 다른 사용자 용으로 받아들이십시오. :) –

-1

당신의 프리젠 테이션 계층 다음 층 당신에 있어야

Datagrid2.DataSource = ds.Tables("tb1") 

데이터 액세스 계층

Dim cmd As New SqlCommand 
Dim ada As New SqlDataAdapter 
Dim ds As New DataSet 

Con = New SqlConnection("Data Source='" & servername.Text & "';Initial Catalog='"  & databasename.Text & "';Integrated Security=true") 
Con.Open() 

다음 코드에있을 codeshould 다음 비즈니스 로직 레이어에 있어야합니다.

cmd = New SqlCommand("Select * from tb1", Con)  
ada = New SqlDataAdapter(cmd)  
ada.Fill(ds, "tb1") 
,

하지만 난 강력하게, 그와 같은 것을 사용 NHibernate에 또는 EntityFramework 같은 ORM을 사용하여 얻거나, LinkToSql

+0

@Nasser - 답장을 보내 주셔서 감사합니다.하지만이 코드는 단순한 것처럼 보입니다. 표준에 따라이 코드를 변경하는 방법. – Gopal

+0

@Nasser - NHibernate, EntityFramework 또는 LinkToSql과 같은 ORM? 이 동일한 쿼리를 사용하지 않을 것입니다. 테이블에서 값을 선택하는 대신 저장소 프로 시저를 사용합니다. 거기에 다른 표준이 있습니까? – Gopal

+0

왜 SQL 개체를 BLL에 포함시키고 DLL이 속한 곳이 아닌가? – HardCode

관련 문제