계층화 된 아키텍처를 올바르게 작성하는 방법을 배우고 싶습니다. 그것을 위해서는 조언이 필요합니다. 계층 구조. 올바르게 처리하십시오.
은 예제 프로젝트를 위해 나는 뉴스 웹 사이트를 쓰기 시작했다. 그것은 그렇게하는 것이 가장가 : 내 프로젝트를 계층화? 저는 그 각도를 할 것입니다 (웹 프로젝트에서).
그리고 하나 더. Dependency injection을 위해 하나 이상의 레이어를 추가해야합니까?
계층화 된 아키텍처를 올바르게 작성하는 방법을 배우고 싶습니다. 그것을 위해서는 조언이 필요합니다. 계층 구조. 올바르게 처리하십시오.
은 예제 프로젝트를 위해 나는 뉴스 웹 사이트를 쓰기 시작했다. 그것은 그렇게하는 것이 가장가 : 내 프로젝트를 계층화? 저는 그 각도를 할 것입니다 (웹 프로젝트에서).
그리고 하나 더. Dependency injection을 위해 하나 이상의 레이어를 추가해야합니까?
나는 NewsWebSite.BLL
를 호출하지 않을 것입니다.
나는이 같은 것이다. 회사 이름이 Contoso 인 경우 :
// This is where you can put all your common code.
// I do not mean cross cutting concern here. By common I mean if you have
// some contstants or enums that are shared by all Dlls
Contoso
Contoso.Business
Contoso.Api
Contoso.WebApp
Contoso.Data
// The name of test projects are exactly the same as the name of the
// assembly but has the word "Tests" at the end
Contoso.Business.Tests
Contoso.Api.Tests
자세한 내용은 사용중인 Pascal Casing 명명 규칙을 참조하십시오. 이렇게하면 Contoso와 거래 할 필요가 없습니다 .BLL.SomeClass.
또한, 내 Contoso.Business.Tests
내 Contoso.Buiness
네임 스페이스와 일치하는 네임 스페이스에 상주합니다. 여기 Contoso.Business
의 클래스입니다 : 그 클래스에 대한
public namespace Contoso.Business
{
public class Foo
{
}
}
시험은, 나는 (내가 DLL에 대해 이야기하고 있지 않다) Contoso.Business.Tests
네임 스페이스에 넣어하지 않을 것입니다. 그들은 같은 공간을 공유
// See the namespace here, I am not using Contoso.Business.Tests
public namespace Contoso.Business
{
// The name of the class is identical to the name of the class being tested but the word "Tests" appended
public class FooTests
{
}
}
그런 식으로 나는 쉽게 관련 될 수있다 :이 같은 Foo
을 시험하고 내 테스트 클래스를 만들 것입니다.
좋은 조언. 덕분에 –
걱정 마. 이 질문에 대한 답변을 원하시면 [this] (http://stackoverflow.com/help/someone-answers)를 읽어보십시오. – CodingYoshi
자주 아키텍처 구조를 사용합니다. 동일한 상황에서 webAPI와 각도를 의미합니다.
그러나 당신이 차원의를 포함하여 프로젝트의 모든 필요를 배려하는 것이 중요합니다. 예 : 비즈니스 로직을 관리 할 필요가 없다면 BLL을 사용하는 것이 적절하지 않을 수 있습니다. 그것은 단지 웹 애플리케이션에 사용할 수있는 BLL
같은 소리 때문에
좋은 방법입니다. "최고의"주관적입니다. 그런 식으로 시도해보고 어떤 문제가 발생했는지 확인하십시오. –
@DStanley의 조언에 대한 감사합니다. –
모든 레이어에서 단위 테스트를 받아야합니다. NewsWebsite.BLL.Tests, NewsWebsite.Data.Tests, ... 그리고 전체 시스템을 시험하는 별도의 통합 테스트 프로젝트. – Fran