문제

나는 오랜 시간 개발자는 Windows,을 잘라 내는 치아에 win32 및 초 COM.었습니다.순이 2001 년 이후,그래서 나는 꽤 유창에서는 C#CLR.나는 성 윈저를 시작하기 전까지 참가하는 스택에서 오버플로우가 발생합니다.내가 읽은 성 Windsor"시작"가이지만,클릭합니다.

가르치된 이 강아지 새로운 트릭,왜 나는 통합 성 윈저로 내 엔터프라이즈 애플리케이션.

도움이 되었습니까?

해결책

Castle Windsor는 제어 도구의 역전입니다. 다른 사람들이 있습니다.

사전 구축 및 사전 유선 종속성이있는 객체를 바로 제공 할 수 있습니다. "새"연산자가 아닌 반사 및 구성을 통해 생성 된 전체 객체 그래프.

여기에서 시작하십시오 : http://tech.groups.yahoo.com/group/altdotnet/message/10434


이메일 보내기 클래스가 있다고 상상해보십시오. 이메일 세료. 다른 클래스 워크 플로우 스테퍼가 있다고 상상해보십시오. WorkflowStepper 내부 전자 메일 렌더를 사용해야합니다.

당신은 항상 말할 수 있습니다 new EmailSender().Send(emailMessage);

그러나 그 - 사용 new - 변경하기 어려운 단단한 커플 링을 만듭니다. (이것은 결국 작은 고안된 예입니다)

그렇다면이 나쁜 소년을 Workflowstepper 내부에 새롭게하지 않고 생성자로 전달했다면 어떨까요?

그렇다면 누구든지 그것을 호출하는 사람은 이메일 세료를 새로운 것을 새로운 위로 올렸습니다.

new WorkflowStepper(emailSender).Step()

하나의 책임 만있는 수백 개의 작은 수업이 있다고 상상해보십시오 (Google SRP). Workflowstepper에서 몇 가지를 사용합니다.

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

세부 사항에 대해 걱정하지 않는다고 상상해보십시오 EmailSender 당신이 글을 쓸 때 WorkflowStepper 또는 AlertRegistry

당신은 당신이 함께 일하고있는 우려에 대해 걱정합니다.

객체와 종속성의 전체 그래프 (트리)가 실행 시간에 연결되어 있다고 상상해보십시오.

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

당신은 진짜 거래를 얻습니다 WorkflowStepper 필요한 위치에 모든 종속성이 자동으로 채워져 있습니다.

아니요 new

그냥 발생합니다 - 무엇이 필요한지 알고 있기 때문입니다.

또한 더 나은 디자인 된 건식 코드로 테스트 가능하고 반복 가능한 방식으로 적은 결함을 쓸 수 있습니다.

다른 팁

IOC는 개발 팀의 생산성과 즐거움을 향한 경로에서 올바른 방향으로 디딤돌이라고 생각합니다 (PM, BA AN BOS 포함). 개발자와 테스트 간의 우려를 분리하는 데 도움이됩니다. 프레임 워크가 들어오고 나올 수있는 유연성을 허용하는 아키텍처가있을 때 마음의 평화를줍니다.

IOC (CW 또는 Nineject 등)가 찌르는 목표를 달성하는 가장 좋은 방법은 정치 #1 및 #2를 제거하는 것입니다. 이 두 솔루션이 IOC와 관련이없는 것처럼 보입니까? 그들은 :)

Mark Seemann은 IOC의 하위 집합 인 DI (Dependency Injection)에 대한 훌륭한 책을 썼습니다. 그는 또한 여러 컨테이너를 비교합니다. 이 책을 충분히 추천 할 수 없습니다. 이 책의 이름은 ".NET의 종속성 주입"입니다. https://www.manning.com/books/dependency-injection-in-dot-net

캐슬 윈저입니다 Dependency Injection container. 이를 통해 새로운 키워드의 도움을받지 않고 의존성을 주입하여 사용할 수 있습니다. 예를 들어 저장소 나 서비스를 작성했다고 생각하고 여러 곳에서 사용하려면 먼저 서비스 / 저장소를 등록해야하며 필요한 장소에 주입 한 후 사용을 시작할 수 있습니다. Castle Windsor를 배우기 위해 내가 따르는 아래 튜토리얼을 살펴볼 수 있습니다.

링크.

그것이 당신을 도울 수 있기를 바랍니다.

단순히 넣어.상상 당신은 어떤 클래스에 묻혀 있는 코드를 필요로 하는 몇 가지 간단한 설정 값을 수행합니다.는 모든 수단을 만드는 해당 클래스의 인스턴스를 요구하는 그 종속성,그래서 당신은 일반적으로 끝나는 형식 로드 클래스의 길을 따라 그냥 통과 비트의 구성 내려가 인스턴스가 만들어집니다.

그래서 하나 많은 클래스의 불필요하게 변경,당신은 무리 설정 값을 하나로 큰 config 클래스는 또한 나쁜...또는 최악의 아직도 서비스 위치를 모니터링 할 수 있습니다.

IoC 할 수 있 클래스를 모든 depencencies 없이는 번거로움을 관리하고 수명을 인스턴스의 더 많은 명시적으로 너무입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top