문제

웹 페이지에 일부 데이터가 필요한 경우 SQLDataSource에서 저장 프로시저를 호출하도록 하면 어떨까요?ObjectDataSource를 사용하여 저장 프로시저를 호출하는 비즈니스 개체를 호출하는 이유는 무엇입니까?.net 프레임워크에 구축된 다른 앱(예: 데스크톱 앱)이 비즈니스 개체에 액세스할 수 있다는 것을 이해합니다. 하지만 애플리케이션이 항상 웹 앱일 경우에는 어떻게 될까요?

더 명확하게 말하자면:

언제 사용해야합니까? SqlDataSource 또는 ObjectDataSource?

선택에 어떻게 동기를 부여합니까?

도움이 되었습니까?

해결책

SQLDATASOURCE 만 있으면 데모, 프로토 타입 또는 빠른 해킹 인 경우 완벽하게 유효합니다. 빠르고 쉽습니다. 단지 작동하며 필요한 결과를 제공합니다.

그러나 앱이 장기적으로 설계 및 구축되고 사물 (요구 사항, 고객 소원, 결국 데이터베이스 스키마)이 변경 될 수있을 것으로 예상하면 적절한 "비즈니스"레이어를 도입하는 것이 훨씬 더 의미가있을 수 있습니다. 비즈니스 개체를 객체로 모델링 한 다음 기본 데이터베이스에서 해당 비즈니스 객체에 매핑을 제공하십시오.

말이 진행됨에 따라 - 당신은 컴퓨터 과학에서 거의 모든 것을 하나의 간접 (또는 추상화)로 해결할 수 있습니다. 여기서도 마찬가지입니다.

물론 : 데이터베이스로 바로 이동할 수 있으며, 처음에는 첫 번째 반복을 위해 가장 빠른 방법 일 수 있습니다. 그러나 장기적으로 앱이 지속되도록 구축되면 일반적으로 빠른 것입니다.더 이상 방법 - 유지 비용, 유지 보수 비용, 귀하와 고객의 요구에 따라 변경하는 데 필요한 비용 및 노력이 고객의 요구에 따라 증가 할 것이며 빠른 솔루션은 더 이상 멋지게 보이지 않습니다. 노력.

예, 예, 예, 처음에는 직접 SQL 데이터 소스를 사용하는 것이 더 빠르고 쉬울 수 있습니다. 따라서 중요한 요점 일 때 사용하십시오. 그러나 장기적으로 앱의 수명을 보면 웹 페이지가 세부 사항에 직접적으로 의존하지 않도록이 추상화 계층을 추가하기위한 약간 더 (설계 및 코딩) 노력을 투자하는 것이 일반적입니다. 아래 데이터베이스.

마크

다른 팁

프로젝트에서 사용 중인 비즈니스 계층이 있는 경우 ObjectDataSource가 자연스러운 선택입니다.이는 많은 ORM에 잘 맞으며 그 중 다수는 추가적인 이점(검증, 실행 취소 등)을 제공합니다.또한 직접 SQL 필드뿐만 아니라 비즈니스 개체에 있는 다른 속성 및 메서드에도 액세스할 수 있습니다.이는 바인딩할 때 매우 유용할 수 있습니다. 많은 코드를 작성하지 않고도 마크업의 속성에 바인딩할 수 있기 때문입니다.

이 경로를 따르는 경우 SQLDataSource와 ObjectDataSource를 혼합하면 프로젝트를 선택하는 다음 개발자가 혼란을 겪을 수 있습니다.이 경우 코드 일관성을 위해 ObjectDataSource를 사용합니다.

비즈니스 계층이 없고 SQL을 직접 실행하는 경우 SQLDataSource를 사용하세요.개인적으로 선호하는 것은 모든 SQL 코드가 비즈니스 또는 데이터 계층에 있어야 한다는 것입니다. 따라서 저는 SQLDataSource를 거의 사용하지 않습니다.

저장 프로 시저에서 비즈니스 계층 코드를 애플리 게 할 수있는 경우 SQLDATASOURCE를 사용하는 것이 좋습니다.

이론적으로 ObjectDatasource가 더 좋습니다. 그러나 모든 것은 객체 모델이 얼마나 잘 작성되고 문서화되는지에 달려 있습니다. 우리는 모든 레이어를 생산하기 위해 사용자 정의 코드 생성기 (우리에게 제공하지 않을)를 사용한 회사를 아웃소싱했습니다. 속성을 추가하거나 필드 유형을 변경하는 것과 같은 작은 변화조차도 악몽으로 판명되었습니다. 나는 이제 그들이 한 거의 모든 것을 폐기하고 그들이 쓴 저장된 절차를 사용하고 있습니다.

저의 장기 목표는 상용 모델링 도구 및 코드 생성기를 사용하여 처음부터 응용 프로그램을 다시 작성하는 것입니다. ObjectDatasource를 사용하려면 유연한 코드 생성기가 포함 된 좋은 모델링 도구를 찾는 것이 좋습니다.

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