2011-01-03 4 views
0

편집 : 질문에이 글을 넣으려면 클래스로 구성해야하는 가능한 방법과 트랜잭션의 정보를 저장하는 데 사용해야하는 데이터 구조를 묻는 중입니다. 현재, 나는 이것을 가지고있다. (http://dl.dropbox.com/u/9210234/classes.jpg) - 내가 원하는 것에 가깝지도 않다. 현재 보고서 데이터를 사전 객체에 문자열로 저장하고 있습니다. 이 정보를 쉽게 추출 할 수 있어야하고, 필드와 그와 같은 것들을 검색하여 트랜잭션을 찾을 수 있어야합니다. 그리고 현재 내가 가고있는 방법이 그렇게 쉽게되지 않을 것이라고 확신합니다.새 프로젝트에 대한 일반적인 디자인 제안

Payflow보고 API를 사용하기에 편리한 C# 라이브러리를 만들고 싶습니다. 사용할 수있는 전체 안내서는 here입니다. 매우 좋으며 회사에서 처리 한 과거 신용 카드 거래에 대한 정보를 쉽게 얻을 수 있습니다. 나는 이미 그것을 이미 사용 했으므로 실제로 사용하는 것은 문제가 아닙니다. 지금 당장 필요한 것을 수행하는 앱을 해킹 할 수있는 시점에 있거나 실제로 가능하고 다양한 프로그램에서 유용하게 사용될 수있는 디자인을 할 수 있습니다. 현재 저는 저에게 올 때 아이디어를 적어 놓은 다음 적절한 방법으로 클래스를 작성하여 API 호출을 단순화 한 다음 필요한 모든 기능을 알고 있습니다. 일단 프로토 타입이 작동하게되면, 나는 돌아가서 이것을 완전히 디자인하고 나서 계속 진행할 계획입니다.

문제 : 저는 고위 프로그래머가 없으며 디자인 패턴, 데이터 구조 및 프로그래밍 전반을 배우는 대학을 아직도 밟고 있습니다. 많은 개념에 대해 조금은 알고 있지만 몇 가지 디자인 패턴에 대한 기본적인 이해 이상의 것이 아닙니다. 나는 이것을 어떻게 구성해야할지, 무엇을 먼저해야 할지를 모른다. 내가 여기에서 도움을 청할 수있는 가장 좋은 방법은 내가 무엇을하고 있는지, 그리고 무엇을 조사해야하는지, 어떤 데이터 구조를 사용할 지 등을 듣는 것입니다. 정말 제가 찾고있는 것은 이 시점에서 내가 무엇을 사용해야하는지 모르겠으므로이 디자인을 어떻게 설계해야하는지에 대한 제안. 이 게시물의 나머지 부분은 지금까지 내가 한 일에 대한 아이디어와이 앱이 할 일을 찾고있는 것에 대한 아이디어를 제공하기 위해 내가 한 일에 대한 설명입니다.

나는 테스트 클래스를 만들고 테스트 할 테스트 앱을 만들었습니다. 지금까지 클래스의 그림이 있습니다 : (http://dl.dropbox.com/u/9210234/classes.jpg). 예, 엉망입니다. 모든 코드는 양식 문서, 인터페이스 또는 기타 항목에 있습니다. ReportWrapper 클래스는 매개 변수 (예 : 날짜 범위, 보고서 유형 등)를 기반으로 XML 요청을 생성합니다. BaseCall이라는 또 다른 클래스는 요청 XML을 가져 와서 실제로 API에 보내고 응답을 반환합니다. ReportMetaData는 보고서 metaData 요청의 응답을 구문 분석하고 유용한 정보 (예 : 데이터 페이지 수)로 속성을 채 웁니다. XmlUtility는 단일 노드 값을 찾거나 고유 한 특성을 가진 데이터 행을 키/값 사전으로 변환하는 등의 작업을 수행하는 보조 클래스입니다. 이것이 바로 ReportStorage에 저장되는 것입니다. 즉, 보고서의 실제 데이터가있는 사전입니다. 그런 다음 metaData를 사용하여 보고서 데이터의 필드가 자동으로 결정됩니다. 위에 링크 된 Payflow 가이드의 36 페이지는 데이터 응답의 모양을 보여줍니다.

데이터 페이지를 요청한 후 행은 reportStore에 XML 문자열로 저장됩니다. 그런 다음 XmlToAssoc은 xml 문자열, 태그 이름, 해당 태그의 속성 이름 (API에서 고유 한 ID로 사용됨) 및 선택적으로 하위 노드 이름을 사용합니다. 속성 값을 키로하고 innerXml을 값으로하여 사전을 반환합니다. 그런 다음 메타 데이터를 필드 데이터와 상호 참조하여 단일 트랜잭션에 대한 정보를 얻어 트랜잭션의 전체 그림을 얻을 수 있습니다. 또한 나중에 사용할 필드 이름과 함께 반환되는 dataType이 있습니다.

그래서 각 보고서 데이터 행에서 필자는 필드 이름, 필드 유형 및 값을 저장해야합니다.그것은 다음과 같이 보일 것입니다 : 내가 저장 알아 낸 일단

reportData 
reportDataRow 1: 
    fieldData 1: 
    {"Transaction ID", "string", "VLFA6D1CE4A6"} 
    fieldData 2: 
    {"Time","date","2010-12-19 00:21:41"} 
    [...] 
reportDataRow 2: 
    fieldData 1: 
    {"Transaction ID", "string", "VLFA6D33554C"} 
    fieldData 2: 
    {"Time","date","2010-12-19 08:02:57"} 
    fieldData 3: 
    [...] 
reportDataRow 3: 
    [...] 

, 나는 등,

+5

대부분의 환자를 제외한 모든 사람들이이 질문을 읽지는 않는 한 질문 ... –

+1

@Dmitri : "진짜 질문이 아닙니다"로 마감 될 가능성이 있으므로 @Dmitri 또는 전혀 읽지 마십시오. –

+1

한 번에 하나의 특정 질문을 시도하십시오. –

답변

2

당신을, 정렬 필드 헤더 Excel로 데이터를 출력하는 등의 다른 작업으로 이동할 수 있습니다 분명히 객체에 익숙하기 때문에 내가 줄 수있는 가장 좋은 제안은 객체 지향 원칙을 찾는 것입니다. S.O.L.I.D 원칙은 시작하기에 좋은 곳이며, 실제로 좋은 기사를 찾을 수 있습니다.

Here은 당신이 시작해야 할 많은 것 중 하나입니다. 객체 지향 설계 원리에 대한 Google 검색을 통해 도움이 될 것입니다.

+0

유닛 테스트와 솔리드 원리를 사용하여 디자인을 다시 시작했습니다. 실제로이 핸들을 사용한다고 생각합니다. 이것이 제가 찾고 있던 것입니다. – Chris

관련 문제