2009-06-12 9 views
2

이미 유니티를 프로젝트의 일부로 사용하고 있다면, 기존의 구성 클래스를 작성하는 것에 어떤 의미가 있습니까?설정을위한 Unity/Spring 또는 System.Configuration?

이렇게하는 것이 추가 작업처럼 보이지만 더 구체적인 도메인 별 XML 태그 이름과보다 간결한 XML이 될 것입니다. 그러나 두 가지 사이의 일관성을 그리면 문제가됩니다.

이전에는 IoC 용 Spring.NET을 사용할 때 두 가지를 혼합하여 사용했지만 구성을 일관성있게 유지할 것인지 궁금합니다. 물론 IoC/DI 용 라이브러리를 아직 사용하고 있지 않다면 런타임 구성 목적으로 만 사용하는 것이 과도한 것처럼 보일 것입니다. 그러나 인 경우 어떤 접근 방식을 사용합니까 걸릴까요?

답변

-1

많은 개발자들이 YAGNI (당신은 필요 없을 것입니다) 접근 방식을 따르므로 간단한 구성 문제를 지나치게 복잡하게 만드는 것처럼 보이는 xml 구성 파일을 사용하지 않을 것입니다.

나는 CMA (** 내 접근법) 접근법을 따르고 dml을 고객의 요구 사항/관리 붕괴를 기반으로 응용 프로그램의 내부 및 외부에서 유연하게 교환 할 수 있도록 XML 구성 파일에 넣는 것을 선호합니다!

내가 보아온 다른 하나의 메커니즘은 dll의 지정된 디렉토리를 검색 한 다음 리플렉션을 사용하여 특정 인터페이스 구현을 찾는 디렉토리 검색 프로그램입니다.이 인터페이스는 일반적으로 RegisterServices 또는 Initialize와 같은 간단한 메소드를 가지고 있습니다. 이 예제는 WPF & Silverlight 복합 애플리케이션 (codeplex)에 있으며, 찾을 인터페이스는 IModule입니다.

어느 쪽이든 DI/IoC를 사용하면 앱이 모듈화되고 테스트 가능한지 확인하는 것이 가장 좋습니다. 그렇습니다. 설정은 약간의 추가 설정 작업을 필요로하지만 매니저에게 "나는이 파트너와 대화를 나눴습니다. 이제 그들은이 서비스를 제공하고 작동하게 만듭니다." 할 일은 인터페이스를 구현 한 코드를 작성한 다음 config 파일에서 dll을 변경하는 것입니다. 그러면 유연성이 있다는 것을 알게 될 것입니다.

+0

글쎄, DI 구성/IoC를 사용하는 것이 아니라 XML 구성 파일을 사용해야하는지 여부는 문제가 아니라, DI/IoC를 사용하는 경우 System.Configuration a la : http : //를 사용하여 구성 클래스를 작성해야합니다. msdn.microsoft.com/en-us/library/2tw134k3.aspx –

+0

필자가 선호하는 IOC/DI 컨테이너가 지원하는 xml 구성 형식을 사용합니다. 각각 하나는 다른 형식을 가지고 있으며 특정 컨테이너가 있으면 선호하는 형식을 사용하십시오. System.Configuration 네임 스페이스를 사용하려고 시도하면 컨테이너가 system.configuration을 기본적으로 지원하지 않을 경우 더 많은 작업을 생성 할 수 있습니다. – Peter

0

IMO의 경우 구성 클래스를 사용하지 말고 압축 또는 구성과 같은 구성 관련 asp.net 또는 dot.net 작업은 이식 가능하지 않으므로 사용해야합니다. 추가 작업이 필요하고 전체적으로 테스트 할 수 없습니다.

더 많은 경우 실버 라이트와 같은 다른 플랫폼에 기능을 포팅해야한다면이 구성 클래스를 이식하는 방법과 다른 아키텍처에 맞게 구성하는 방법을 고려해야합니다.

1

다릅니다. 당연하지. :-)

구성 파일의 목적은 무엇이며, 더 중요한 것은 누구를 대상으로합니까? 나중에 구성 파일을 읽거나 편집 할 사람은 누구입니까?

주된 목적이 애플리케이션을 연결하는 것이고 개발자를 대상으로하고 유형이 합리적으로 잘 명명 된 경우 DI 컨테이너 구성을 사용하여 문제를 해결할 수 있습니다. 위험은 응용 프로그램을 "구성"하기에는 실제적이지 않은 많은 불필요한 세부 사항이 있다는 것입니다. 예를 들어 연결 문자열과 같이 연결 문자열을 변경하려는 경우 연결 문자열로 명확하게 표시되는 한 위치에 실제로 연결 문자열을 사용하려고합니다.

그래서 내가 청중과 목적이 무엇인지 묻습니다. 보다 구체적으로 레이블이 지정된 간결한 XML 태그를 사용하면 관리자가 올바른 장소를 찾고 쉽고 빠르며 오류가 발생하지 않도록 할 수 있습니다.

그렇다면 System.Configuration을 사용하여 간단한 이름/값 쌍 이외의 작업을 수행하면 큰 문제가 발생합니다. .NET 구성 클래스는 버그가 많고 심각도가 낮으며 이상하고 예기치 않은 동작으로 가득 차 있습니다.

컨테이너 구성으로 시작하는 것이 좋습니다. 그런 다음 명시 적으로 디자인을 사용하여 사례를 집중하고 쉽게 편집 할 수있는 시간이 필요합니다.

나는 스프링을 모른다. 그래서 어떻게 작동하는지 아무 것도 말할 수 없다. Unity를 사용하면 믹스 앤 매치가 매우 쉽습니다. API 및 구성 파일을 사용할 수 있으므로 응용 프로그램이 API 호출로 작동해야하는 내용과 사용자가 조정할 수있는 내용을 구성 파일에 넣으십시오. 이를 별도의 컨테이너 정의와 별도의 구성 파일로 나누어도 관리자가해야하거나 필요가있는 것으로부터 내부 배선을 분리 할 수 ​​있습니다.

또한 마지막 수단으로 Unity 구성 스키마 자체가 확장 가능하므로 실제로 Unity 구성 섹션에 태그를 추가 할 수 있습니다. 하지만 System.Configuration 을 Unity 구성 프레임 워크에 적용해야하므로 더 많은 작업이 필요합니다.

그래서, TL : 여기에는 아무런 답변도 없습니다. 일반적인 DI 구성 스키마에는 일반적이고 이미 작성된 이점이 있습니다. 그것은 관리자가 조정할 필요가있는 것이 무엇인지 명확하게 알 수 없으며, 상황을 잘못 해석 할 수있는 내부 배선 세부 사항이 무엇인지에 대한 단점이 있습니다. 사용자 정의 구성 섹션은 작성 작업이 많이 필요할 수 있지만 잘 수행되면 관리자가 명확하지 않은 방식으로 전체 편집 영역을 손상시키지 않고 편집 할 수있는 명확하고 명확한 포인트를 제공합니다.

관련 문제