문제

저는 계획의 형태로 환자 정보를 추적하기 위해 사회 복지사 및 간호사 팀(2-4)에서 주로 사용되는 때때로 연결되는 CRUD 애플리케이션을 작업 중입니다.이 응용 프로그램은 제가 살던 시대 이전에 만들어진 ASP.Net 응용 프로그램을 다시 시각화한 것입니다.4개의 데이터베이스에 약 200개의 테이블이 있습니다.웹 앱 버전은 SP에 크게 의존했지만 이 버전은 로컬 DB를 가리키는 winform 앱이므로 SP를 계속 사용할 이유가 없습니다.또한 동기화 부분을 처리하기 위해 병합 복제를 사용할 계획이었는데 이 두 가지를 함께 사용하면 몇 가지 문제가 있는 것 같습니다.

DAL에 어떤 접근 방식을 사용해야 하는지 이해하려고 합니다.원래는 LINQ to SQL을 사용할 계획이었지만 가끔 연결됨 설정에서는 작동하지 않는다는 재미있는 정보를 읽었습니다.따라서 나는 수많은 해결책을 읽고 실험하려고 노력해 왔습니다.SubSonic, NHibernate, 엔터티 프레임워크.이것은 비교적 간단한 응용 프로그램이며 "어두운"Verion 3으로 인해이 노력은 경계선 "Throwaway"가 될 수 있습니다. 여기서 강조점은 데스크탑 버전을 올려 놓고 최대한 빨리 실행하는 것입니다.

내가 여기서 요청하는 것은 이러한 기술(또는 내가 나열하지 않은 기술)을 사용한 경험이 있는 사람이라면 누구나 힘들게 얻은 지혜를 나에게 빌려달라는 것입니다.귀하의 의견으로는 제가 추구할 수 있는 최선의 접근 방식은 무엇입니까?이런 종류의 앱을 만드는 데 대한 다른 통찰력이 있습니까?나는 이 프로그램의 DAL 부분에 대해 정말로 어려움을 겪고 있습니다.

감사합니다!

도움이 되었습니까?

해결책

저장 프로시저가 원하는 대로 작동한다면 저장 프로시저를 버리고 다시 구현하면 이점을 얻을 수 있을지 의심스럽습니다.또한 데이터를 마스터 데이터베이스에 다시 복제할 때 저장 프로시저나 LINQ to SQL 스타일 데이터 액세스를 사용하는지 여부는 중요하지 않으므로 어떤 DAL을 사용하는지 걱정하는 것은 위험해 보입니다.

가끔 연결되는 애플리케이션의 까다로운 부분은 좋은 충돌 해결 시스템을 마련하는 것입니다.내 제안:

  • 항상 RowGuids를 테이블의 기본 키로 사용하세요.병합 복제는 항상 고유한 키가 지정된 새 레코드가 있는 경우 가장 잘 작동합니다.
  • 병합 복제는 다음과 같이 많은 일을 할 수 있다는 점을 인식하십시오.그것은 엄청난 서로 다른 시스템에 있는 새로운 데이터를 하나로 모으기 위한 것입니다.일방적인 업데이트를 알아낼 수도 있습니다.그것 캔트 당신의 신기록과 나의 신기록이 마술처럼 결정됩니다. 사실 똑같다 또한 사람의 개입이나 우선순위 규칙 없이는 양측의 변화를 실제로 처리할 수도 없습니다.
  • 이 때문에 새로운 것이라고 주장하지만 실제로는 그렇지 않은 기록을 해결하려면 "일치" 규칙이 필요합니다.이는 모호한 단계입니다.실제로 양쪽에서 오류 없이 정확히 동일하게 입력되는 고유 키에 의존할 수 있는 경우는 거의 없습니다.이는 가중치가 부여된 일치 항목을 제공하는 것을 의미합니다. 많은 귀하의 지표는 동일하거나 유사합니다.
  • 충돌을 해결하고 "새" 레코드를 원본과 일치시키기 위한 사용자 인터페이스는 작동하기 쉬워야 합니다.나는 많은 소스 제어 시스템에서 사용하는 전통적인 3방향 병합과 비슷한 것을 사용합니다.레코드 A, 레코드 B, 병합 레코드.헤더 버튼을 클릭하여 병합된 레코드를 A 또는 B로 기본 설정하고 각 필드를 클릭하여 선택할 수도 있습니다.마지막으로 병합된 레코드 필드는 편집을 위해 열려 있습니다. 때로는 A에서 주소의 일부를 가져와야 하기 때문입니다. 그리고 비.

이 중 어느 것도 데이터 액세스 계층에 조금도 영향을 주어서는 안 됩니다.이는 모두 DAL보다 낮은 수준(데이터베이스 자체에서 제공되는 병합 복제)이거나 더 높은 수준(해결을 위한 비즈니스 규칙에서 제공하는 충돌 해결)입니다.

다른 팁

DB 시스템을 로컬에 설치할 수 있다면 익숙하다고 생각되는 것을 선택하세요.제가 생각하는 가장 큰 문제는 동기화와 병합 부분이 될 것 같습니다.여러 가지 가능성을 생각해야 합니다.다른 사람이 서버에서 삭제한 내용을 변경했습니다.누가 결정하나요?

Sync 프레임워크를 직접 사용해본 적이 없으며, 기사를 읽어보세요.하지만 이는 기반을 구축할 수 있는 견고한 기반을 제공할 수 있습니다.그러나 데이터 액세스 방식에 따라 비즈니스 로직에 대한 솔루션은 아마도 훨씬 더 광범위한 영향을 미칠 것입니다.

Microsoft가 2004년에 출시한 issueVision이라는 샘플 앱이 있습니다.
http://windowsclient.net/downloads/folders/starterkits/entry1268.aspx

joelonsoftware.com의 이전 스레드에서 링크를 찾았습니다. http://discuss.joelonsoftware.com/default.asp?joel.3.25830.10

다른 아이디어...
모바일 광대역은 어떻습니까?두 개의 3G 셀룰러 카드는 내일 작동할 예정이며 큰 페이지/그래픽 없이는 앱을 변경할 필요가 없습니다.

현장에서 사용되는 엑셀 스프레드시트입니다.데이터를 응용 프로그램으로 가져오는 DTS 또는 SSIS."더 나은" 솔루션이 만들어지는 동안.

행운을 빌어요!

SP가 저장 프로시저를 의미하는 경우...나는 그들에게서 멀어지려는 당신의 추론을 이해하지 못합니다.빠르고 검증되었으며 이미 사용자를 위해 작성되었다는 점을 고려하면(예:테스트됨).

확실히, 원본을 모방하는 앱을 만드는 경우 원본(작동하는) 코드베이스를 최대한 많이 유지하는 데에는 확실한 장점이 있습니다. 그 중 속도는 가장 적습니다.

DB의 로컬 복사본을 설치한 다음 마지막 연결 기간 이후 영향을 받은 모든 레코드를 연결되면 마스터 DB로 푸시하려고 합니다.

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