문제

우리는 내부 클라이언트 시스템이 일부 기본 데이터 저장소에서 레코드를 작성하고 업데이트하고 쿼리 할 수있는 새로운 중간 계층 서비스를 시작하고 있습니다. 이 서비스는 최대 3 개의 별도의 기본 데이터 스토어를 집계합니다. 이 질문의 목적 상 :

데이터 저장소 #1 : 독점 XML 데이터베이스.
데이터 저장소 #2 : 선반 관계형 데이터베이스에서.
데이터 저장소 #3 : 플랫 파일 저장소 (파일이 이진으로 저장).

고객은 어떤 데이터 스토어가 쿼리/udpating을 알지 못할 것입니다. 새로운 서비스는 그러한 결정을 내릴 것입니다. 내 질문은 이것입니다 : 내 API가 XML 또는 객체를 노출시켜야합니까? 예를 들어 새 API에는 추가 방법이 있습니다. 우리 시스템이 자동차 저장 시스템이라고 가정하면 API의 추가 방법은 다음과 같습니다.

AddNewCar( CarObject car )

또는 다음과 같이 보일 수 있습니다.

AddNewCar( string carXml )

이제 두 번째 방법이 입력시 약하게 입력 되더라도 XML은 즉시 스키마에 대해 최소로 검증됩니다.

새로운 서비스는 C#으로 작성 될 예정입니다 (아직 어떤 버전에서 결정되지 않았지만 아마도 WCF의 경우 3/3.5). API의 클라이언트는 C#/VBA/VB.NET/C ++/Java 일 수 있습니다).

더 자세한 내용은 알려주십시오. 감사


업데이트 : API는 또한 메시지 버스를 통해 XML을 게시 할 것입니다. 예를 들어 새 차가 추가되면 차량 XML이 출판되어 새 차에 관심이있는 사람이라면 누구나 알림을받습니다.

도움이 되었습니까?

해결책

객체 API를 노출한다고 말하고 싶습니다. 위의 다른 게시물에 언급 된 이유는 아니지만 XML을 노출시키는 데있어서 변경하기 어려운 고정 형식을 초래합니다.

틀림없이, 강하게 유형 된 비즈니스 객체의 API는 XML만큼 변경하기가 어렵습니다. 둘 다 재 컴파일 및 재건이 필요합니다. 그래서 XML을 폐기 해야하는 이유는 아닙니다.

Imnsho- 이유는 추상화 수준입니다. API 수준에서는 비즈니스 객체 나 서비스가 다른 비즈니스 개체에 대해 어떤 조치를 수행 할 수 있는지에 대해 이야기하고 있습니다. 따라서 API는 비즈니스 대상 측면에서 대화해야합니다.

이미 다른 게시물에서 언급했듯이 XML 표현으로 항상 비즈니스 객체를 뒷받침 할 수 있습니다. 비즈니스 객체 및 서비스의 XML 표현을 API가 XML의 모든 유연성을 제공하는 동시에 Semantics가 좋은 높은 수준의 API를 구축 할 수 있도록하는 것보다 낮은 수준의 추상화로 유지합니다.

다른 팁

이렇게하면 형식과 인프라와 관련하여 직면 할 수있는 향후 결정을 수정하므로 XML을 노출해서는 안됩니다. 나는 항상 강력하게 타이핑 된 경로를 사용하여 구현을 사용에서 제대로 추출 할 수 있도록합니다.

XML 경로를 사용하여 개발을 통해 XML이 어떤 이유로 변경되어야한다는 것을 알게되면 API를 강력하게 입력하고 API를 강력하게 입력 한 것보다 API의 모든 사용을 변경하는 것이 훨씬 더 어려울 것입니다. 객체 뒤에 XML 디테일을 숨겼습니다.

객체를 사용하여 API를 생성하고 WCF를 활용하여 필요한 경우 XML API를 제공해야합니다.

객체를 사용하여 API를 생성 한 다음 해당 API 주위에 웹 서비스 인터페이스를 작성해야합니다 (예 : Java의 경우 인터페이스에서 java2wsdl을 사용한 다음 wsdl2java를 사용하여 Skeleton Server-Side 구현 또는 클라이언트 측 구현, i ' 다른 모든 시스템이 쿼리 할 수있는 WCF에 동등한 방법론이 존재한다고 확신합니다.

다중 언어 클라이언트가 있으므로 웹 서비스가 최선의 선택이라고 생각하며 (비즈니스 로직 구현을 무시하는 것은 API 위에서 몇 분 동안 일하지 않습니다. WSDL 또는 XSD 파일을 모든 클라이언트 소프트웨어의 개발자에게 배포 한 다음 간단하고 빠르게 시스템을 인터페이스하는 데 사용할 수 있습니다.

확실히 유형적으로 타이핑 된 접근 방식은 최종 사용자-개발자 관점에서 가장 쉬울 것입니다. 그러나 궁극적으로 모든 것이 무대 뒤에서 XML로 변환되거나 고객이 취할 접근이 확실하지 않은 경우, 둘 다 지원하는 것이 좋습니다.

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