2010-04-18 4 views
0

더 나은 코딩 방법을 채택하는 것이 목표입니다. 일반적으로 코드 자동 처리에 관한 몇 가지 질문이 있습니다. 나는 온라인과 다른 개발자/프로그래머들과 서로 다른 대답을 들었다. 3 가지 질문으로 나누어야하는지 확실하지 않지만 모두 관련되어있는 것처럼 보입니다.자동 .NET 코드, nhibernate 세션 및 LINQ datacontext 정리?

1) .NET에서 클래스의 인스턴스와 메모리를 차지하는 다른 코드를 어떻게 처리합니까? 최근에 서비스 패턴과 같은 특정 항목에 대해 팩터 리 패턴을 사용하여 전체 응용 프로그램에서 한 번만 인스턴스화 될 수 있다는 것을 알았지 만 .NET에서 언급 할 때 '.NET이 자동으로 많은 것을 처리합니다.'

2) Nhibernate의 세션이 사용되지 않는 것들의 자동 정리를 어떻게 처리합니까? 나는 물건을 자동으로 처리하는 것이 대단하다는 말을 듣고 세션 팩토리를 사용해야 만합니다. 닫을 필요가 없습니다. 그러나 나는 또한 사람들이 최대 절전 모드 세션을 닫는 많은 예를 읽고 보았다.

3) LINQ의 datacontext가 어떻게 이것을 처리합니까? 대부분의 시간 동안 나는 내 datacontext의 데이터를 삭제하지 않았고 앱이 실적이 좋지는 않지만 (집중적으로 슈퍼를 실행하지는 않지만) 대부분의 사람들이 데이터 인터페이스를 완료 한 후에 데이터를 삭제하는 것이 좋습니다 . 그러나 dispose 메서드가 호출되지 않는 많은 코드 예제를 보았습니다. 또한 일반적으로 datacontext를 처분 한 후에 당신이 명시 적으로 쿼리에서 그들을 움켜 잡지 않는 한 당신은 심지어 하나의 깊은 자식 관련 객체에도 액세스 할 수 없다는 것을 성가신 것으로 보았습니다.

감사합니다. 나는이 사이트를 지금까지 사랑하고 있습니다. 나는 길을 잃고 시간을 보내고 여기서 일을 읽습니다. =)

답변

2

1) .NET은 가비지 수집을하고 있지만 물건을 인스턴스화하지 않고 항상 사용자에게 제공합니다.이 목적을 위해 과 같은 IoC 컨테이너가 필요합니다.

2) 자체적으로 세션을 처리하지 않으면 사용 블록에 넣어야합니다. 그러나 그것이 관리하는 다른 것들을 처리합니다.

3) 특히 관리되지 않는 리소스와 같은 것들을 처분하는 것이 항상 좋은 생각입니다. 따라서 엄지의 법칙에 따라 이런 종류의 것들을 사용하는 블록에 넣으십시오.

+0

2. 그럼 어떻게 처리하나요? 그것은 데이터베이스와 이것 저것에 대한 연결을 처리합니까? 그렇다면 어떤 연결을 열어 두거나 제거해야하는 것을 저장하지 않으면 세션을 처분 할 수있는 이유는 무엇입니까? – AverageJoe719