2009-03-09 3 views
4

소셜 워커 나 간호사 팀 (2-4)이 계획의 형태로 환자 정보를 추적하는 데 주로 사용되는 가끔 연결된 CRUD 응용 프로그램을 작성 중입니다. 응용 프로그램은 내 시간 전에 만들어진 ASP.Net 응용 프로그램의 재구성입니다. 4 개의 데이터베이스에 약 200 개의 테이블이 있습니다. 웹 응용 프로그램 버전은 SP에 크게 의존하지만이 버전은 로컬 DB를 가리키는 winform 응용 프로그램이므로 SP를 계속 사용할 이유가 없습니다. 또한 참고로 Merge Replication을 사용하여 Sync'ing 부분을 처리 할 계획이었으며이 두 부분과 함께 몇 가지 문제가있는 것으로 보입니다.가끔 연결된 CRUD 응용 프로그램 DAL

나는 DAL에 어떤 접근법을 사용하는지 이해하려고 노력 중이다. 나는 원래 SQL에 LINQ를 사용할 계획 이었지만 가끔 연결 설정에서는 작동하지 않는다는 가벼운 이야기를 읽었습니다. 나는 수많은 솔루션을 읽고 실험하려고 노력 해왔다. SubSonic, NHibernate, Entity Framework. 이것은 상대적으로 간단한 응용 프로그램이며 "어렴풋한"verion 3 재 설계로 인해이 노력은 경계선이 될 수 있습니다. 여기서 강조점은 데스크톱 버전을 설치하고 최대한 빨리 실행하는 것입니다.

내가 여기에서 묻는 것은 당신이 힘들게 얻은 지혜를 빌려주기 위해 이러한 기술 (또는 내가 나열하지 않은 것) 중 하나를 사용하는 경험이있는 사람을위한 것입니다. 귀하의 의견으로는 저에게 최선의 접근 방법은 무엇입니까? 이러한 종류의 앱을 만드는 데 대한 다른 통찰력은 무엇입니까? 나는이 프로그램의 DAL 부분에 정말로 고심하고있다.

감사합니다.

+0

마이크로 소프트 .NET 1.1은 여전히 ​​새로운 때이 사용 케이스의 일부 기술 데모를하는 데 사용됩니다. 나는 그들이 그것들을 분리 된 레코드 세트라고 불렀다. 지금은 Google에 시간이 없지만 나중에 확인하겠습니다. –

답변

1

, 나는 당신이 그들을 멀리 던지기를 재 구현하여 혜택을 얻을 것이다 모호한하다고 말하고 것이다. 또한 마스터 데이터베이스에 데이터를 다시 복제 할 때 저장 프로 시저 또는 LINQ to SQL 스타일의 데이터 액세스를 사용하면 문제가 발생하지 않으므로 사용하는 DAL에 대해 염려하는 것이 빨간색 청어처럼 보입니다.

때때로 연결 응용 프로그램에 대한 까다로운 부분

좋은 갈등 해결 시스템으로 다가오고있다. 내 제안 :

  • 테이블의 기본 키로 항상 RowGuids를 사용하십시오. 병합 복제는 항상 고유 한 키가있는 새 레코드가있는 경우에 가장 효과적입니다.
  • 은 병합 복제는 그렇게 할 수있는 실현 : 그것은 함께 서로 다른 시스템에 새로운 데이터를 가져 오는에 대한 입니다. 그것은 또한 한쪽으로 업데이트를 파악할 수 있습니다. 그것 수 없습니다 마술처럼 귀하의 새 레코드와 내 새 레코드는 실제로 동일합니다도 인간의 개입이나 우선 순위 규칙없이 양쪽의 변화를 다룰 수 있습니다.
  • 이, 당신이 새로운 주장하는 레코드를 해결하기 위해 "일치"규칙이 필요합니다 때문에
  • 하지만 실제로는 그렇지 않다. 이것은 퍼지 단계입니다. 드물게 실제로 양쪽에 정확하게 입력 할 수있는 고유 한 키를 오류없이 사용할 수 있습니다. 이것은 가중치를 적용하는 것을 의미합니다. 많은의 지표가 동일하거나 유사합니다.
  • 충돌을 해결하고 운영하기 쉽게 원래의 요구에 "새로운"기록을 일치에 대한 사용자 인터페이스를 제공합니다. 나는 많은 소스 제어 시스템에서 사용하는 고전적인 3 가지 방법 인 병합 (Record A, Record B, Merged Record)과 비슷한 것을 사용합니다. 헤더 버튼을 클릭하여 병합 레코드를 A 또는 B로 기본값으로 설정할 수 있으며 각 필드를 클릭하여 선택할 수도 있습니다. 때로는 사소한에서 데이터 액세스 레이어에 영향을해야이의 B.

없음에서 주소 (예를 들어)의 일부를 수행해야하기 때문에 마지막으로, 합병 레코드 필드, 편집을 드실 수 있습니다 :이 DAL보다 낮은 수준 (데이터베이스 자체에서 제공하는 병합 복제) 또는 상위 수준 (해결을 위해 비즈니스 규칙에서 제공하는 충돌 해결) 모두입니다.

0

db 시스템을 로컬로 설치할 수 있으면 익숙한 것으로 이동하십시오. 내가 생각하는 가장 큰 문제는 동기화 및 병합 부분 일 것입니다. 몇 가지 가능성을 생각해야합니다 : 누군가 다른 사람이 서버에서 삭제 한 것을 변경했습니다. 누가 결정합니까?

동기화 프레임 워크를 직접 사용하지 말고 기사를 읽으십시오. 그러나 이것은 당신에게 탄탄한 토대를 제공 할 것입니다. 그러나 데이터 액세스와 이동 각 방법의 businesslogic에 대한 해결책은 아마 훨씬 더 넓은 영향을 미칠 것입니다 ...

0

이 issueVision 마이크로 소프트라는 샘플 응용 프로그램이 2004
http://windowsclient.net/downloads/folders/starterkits/entry1268.aspx

다시 발견 넣어 joelonsoftware.com의 오래된 스레드에 대한 링크. http://discuss.joelonsoftware.com/default.asp?joel.3.25830.10

기타 아이디어 ...
모바일 광대역은 어떻습니까? 몇 개의 3G 셀룰러 카드가 내일은 작동 할 것이고 앱은 큰 페이지/그래픽을 변경하지 않아도됩니다.

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

행운을 빈다.

0

SP가 스토어드 프로 시저를 의미하는 경우 ... 귀하의 추론이 스토어드 프로 시저에서 벗어나려는 것을 이해하고 있는지 잘 모르겠습니다. 그것들이 빠르며 입증되고 이미 당신을 위해 작성되었다는 것을 고려할 때 (즉, 테스트를 마친).

확실하게, 원본을 모방 한 응용 프로그램을 만드는 경우 가능한 한 원본 (작동하는) 코드베이스를 유지하는 것이 좋습니다. 그 중 가장 빠름은 속도입니다.

DB의 로컬 복사본을 설치 한 다음 연결될 때 마스터 데이터베이스에 마지막으로 연결된 기간 이후 영향을받은 모든 레코드를 밀어 넣으려고합니다.저장 프로 시저 당신이 그들이 원하는 일을 할 경우

관련 문제