.NET (Visual Studio)에서 언제 새 어셈블리를 작성합니까?


9

Silverlight 응용 프로그램을 만들고 있습니다. 여러 어셈블리로 나누었습니다.

  • 도메인
  • 저장소 (Sterling 데이터베이스에 지속되는 모든 것)
  • UI
  • ...

이것이 내가 배운 방법이지만 궁금했습니다. DLL이 재사용되지 않을 것임을 알고 있다면, 분할해야합니까? 아니면 모든 것을 하나의 어셈블리에 넣고 폴더와 네임 스페이스를 사용하여 깔끔하게 유지할 수 있습니까?

어셈블리가 너무 많은 프로젝트도 보았습니다. 적절한 곳에 네임 스페이스를 사용하는 대신.

그렇다면 언제 새로운 코드에 대한 새 어셈블리를 작성합니까? 이 주제에 대한 좋은 자료가 있습니까? 또한 코드를 기술적으로 (도메인, 데이터, UI 등) 및 / 또는 기능적으로 (예 : 환자 관리, 환자 의료, 병원 물류 등) 분할합니까?

답변:


1

논리적으로 "모듈"에 해당하는 클래스에 대해 별도의 어셈블리를 만드는 것이 좋습니다. 재사용 및 유지 관리에 유용 할뿐만 아니라 클래스 간 종속성을 최소화하는 방법이기도합니다.

각 어셈블리에 필요한 다른 어셈블리에 대한 참조 수를 최소화하는 것이 임무이며, 대부분 인터페이스와 이벤트를 통해 수행됩니다. 다른 어셈블리에 클래스가 있으면 종속성이 매우 분명해집니다. 반대로 하나의 어셈블리를 사용하는 경우 모든 것이 액세스 가능하므로 종속성에 대한 생각을 무시하는 것이 매우 쉽습니다.

물론 과장하지 말고 적절한 곳에서 분리해야합니다. 다음과 같이 생각하십시오 : "이 클래스들은 서로 속해 있으며이 클래스들에 대해 알 필요가 없습니다."


1
"모듈"의 의미에 따라 다르지만 일반적으로 어셈블리가 아닌 네임 스페이스를 사용하여 관련 논리를 나눕니다. 네임 스페이스는 어셈블리에 걸쳐있을 수 있습니다. 어셈블리는 배포 단위이므로 배포 시나리오에 맞게 어셈블리를 자르는 것을 고려해야합니다.
Ed James

3
좋은 생각이 아닙니다. 솔루션에 프로젝트가 여러 개 포함되어 있으면 VS가 매우 느려집니다.
nikie

4
VS가 너무 느리면 이전 버전 또는 느린 컴퓨터를 실행 중입니다. 몇 초 만에 컴파일되는 30 개 이상의 프로젝트가있는 거대한 프로젝트가 있습니다. 그런 다음 다시 많은 램, 코어 및 SSD가 있습니다.) 물론 과장해서는 안되며 적절한 곳에서만 분리해야합니다. 그 라인을 따라 분리
Homde

의존성에 대한 언급 때문에 이것을 답변으로 표시했습니다. Ed James의 답변은 최소한 가치 있고 정확하지만이 답변은 제 상황에 더 적합합니다.
Peter

2
당신이 어셈블리의 무리로 끝날 수있는이 방법을 따라 : A, B, C, D, E, F, G, H, I, J, K. 당신이 어셈블리를 참조 어디든지 A, 당신은 또한 종속 어셈블리를 참조해야합니다 : B, C, D. 그러나 조립 C:에 의존 E, F, G, H그래서 우리는 너무 사람을 필요로 할 것입니다. 따라서 일부 기능이 필요할 때마다 A7 개의 추가 어셈블리를 풀다운하여 작동시킵니다. 각 어셈블리의 올바른 버전을 확인하십시오. 새로운 DLL 지옥에 오신 것을 환영합니다.
Ed James

14

어셈블리는 .NET 응용 프로그램의 배포 단위입니다. 따라서 어셈블리 컷을 배포 아키텍처와 일치시키는 것을 고려해야합니다.

어셈블리는 일부 코드에서 별도의 버전 제어가 필요한 경우에도 유용합니다. 예를 들어 독립 버전 제어의 이점이있는 공통 인터페이스가있는 경우 해당 코드를 어셈블리로 분리해야합니다.

네임 스페이스는 어셈블리에 걸쳐있을 수 있습니다. 많은 경우 네임 스페이스를 사용하여 동작을 분리하는 것으로 충분합니다. mscorlib.dll단일 어셈블리에 네임 스페이스로만 분리 된 방대한 배열을 다루는 코드가 포함 된 .NET 을 살펴보십시오 .

이 주제에 대한 권위를 원한다면 다음을 보지 마십시오.

프레임 워크 디자인 지침

프레임 워크 설계 지침 : Krzysztof Cwalina 및 Brad Abrams의 재사용 가능한 .NET 라이브러리 (2 판)대한 규칙, 숙어 및 패턴


책을 읽어 주셔서 감사합니다. 확인해 볼게요 배포 아키텍처에 대해 자세히 설명해 주시겠습니까? 10 개의 DLL 파일을 배포하는 것은 1을 배포하는 것과 어떻게 다릅니 까? 열 개의 파일 중 하나를 업데이트 할 수 없다면 다른 파일은 그대로 유지합니까?
Peter

1
@Peter : 항상 함께 배포 되는 10 개의 어셈블리를 코딩 한 경우 모든 코드를 단일 어셈블리에 배치하여 버전 제어 및 배포를 단순화 할 수 있습니다. 10 개의 어셈블리가 항상 함께 배포되지 않는 경우 별도의 어셈블리를 갖는 것이 유용 할 수 있습니다.
Ed James
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.