문제

나는 최대 절전 모드를 사용하지 않고 유효한 대안이 아닙니다. Ado.net을 기반으로 프레임 워크를 개발했습니다. 이 프레임 워크에는 각 데이터베이스 엔티티의 기본 연산자가 있습니다.

예를 들어, 데이터 액세스 계층에는 다음과 같은 기본 연산자가 있습니다.

Insert
Update
Delete
Get
GetAll

이 방법에 액세스하려면 아래의 샘플 코드로 작동합니다.

DataAccess.Order daoOrder;

Entity.Order entityOrder;
DataAccess.Order daoOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

daoOrder = new DataAccess.Order();
daoOrder.Insert(entityOrder);

정적 메소드를 사용하는 것에 대해 생각하고 있었으므로 코드는 다음과 같이 간단합니다.

Entity.Order entityOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

DataAccess.Order.Insert(entityOrder);

시스템에 30 개의 테이블과 30 개의 엔티티가 있다고 가정합니다. 정적 객체로 실행되는 30 개의 DataAccess 객체가 필요합니다. 이 정적 구조는 우리에게 일부 프로세서주기를 절약하고 가비지 수집기의 비용이 적기 때문에 메모리를 절약 할 수 있습니다.

이러한 방식으로 비즈니스 및 데이터 액을 공통 연산자에게 정적 메소드를 사용해야합니까? 이 접근법에 대한 장점과 단점에 대해 이야기 할 수 있습니까? (내 말은, 기억, 성능 ...)

도움이 되었습니까?

해결책

위에서 언급 한 두 가지 옵션 간의 성능 차이는 사실상 존재하지 않습니다. 도메인 모델 및 기타 비즈니스 요구 사항을 고려하여 관리 할 수있는 가장 깨끗하고 유연한 디자인을 찾은 다음 업체가 시작되면 성능 조정에 대해 걱정합니다. 시스템을 구축하기 전에 병목 현상을 추측하지 마십시오.

분석을 위해 Greg Beech 의이 게시물을 참조하십시오. 정적 대 인스턴스 성능..

그의 결론 :

방법을 20 억 번 호출 할 때 정적으로 만들어 약 5ms를 절약 할 수 있습니다. 이는 각 방법 호출에 대해 대략 아무것도 절약 할 수 없습니다.

다른 팁

이 클래스에서 정적 메소드를 사용하는 경우, 상호 작용하는 모든 객체는 그것과 크게 결합됩니다. 사실상 귀하의 코드는 테스트가 잘되지 않습니다. 내가 당신이라면 정적 방법/클래스와 싱글 톤을 사용하지 않을 것입니다. 앱을 테스트하는 것을 원하지 않는 한.

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