2013-05-25 3 views
0

Howdie,다중 사용자 코어 데이터 XPC/w

이것은이 어딘가에 대답 한 경우 용서해주십시오, 그래서 내 첫 번째 게시물, (I 검색했다).

문제 : 시스템의 여러 사용자 계정간에 단일 핵심 데이터 데이터베이스를 공유해야하는 Cocoa 앱이 있습니다.

아이디어 : 코어 데이터에서 데이터를 저장/검색하기 위해 (사용자 권한 경계를 넘기 위해) 사용자의 요청을 처리하는 데몬을 만듭니다. 응용 프로그램에서 사용되는 공유 Managed Object Context를 작성하고 NSXPCConnection을 통해 MOC를 데몬에 전달하십시오. 데몬은 완전히 구현 된 핵심 데이터 스택을 갖습니다. 그런 다음 응용 프로그램에서 만든 MOC를 데몬에서 만든 MOC의 자식으로 설정할 수 있습니다. 저장을 누르면 끝났어?

질문 : 이것도 작동합니까? 이건 그냥 바보 같은 생각인가요? 다른 솔루션은 무엇입니까? NSManagedObjectContext는 NSCoder 프로토콜을 따르지 만, XPC와 함께 사용하려면 서브 클래스를 만들어 NSSecureCoding 프로토콜을 준수해야합니다. NSXPConnection과 함께 사용하려면 ManagedObject 하위 클래스가 NSSecureCoder 프로토콜을 준수하는지 확인해야합니까? 컨텍스트를 모두 정리하고 관리 대상 개체 만 보낼 수 있다고 가정합니다.

포인터 대신 NSXPCConnection copys 개체가 있다고 가정합니다. 이 올바른지? 또한 개체가 완전히 실현 된 개체로 코딩/디코딩되고 오류가 발생하지 않으므로 성능을 염두에 두어야 할 것입니다. 이 올바른지?

도움을 주셔서 감사합니다.

+0

이 질문은 조금 지나치게 광범위하게 보입니다. 너가 조금 더 좁히고, 더 직접적인 질문을하고 저희에게 약간 부호를 보여 주면 너는 성공을 더 얻을지도 모르다. – Noz

답변

0

아마도 작동합니다. ;-)

그러나 다루어야 할 몇 가지 특별한 문제가 있습니다. 긴 이야기를 짧게하기 위해서 : 나는 이것을하기 위해 incremental store을 사용하는 것이 더 좋을 것이라고 생각한다. 하지만 문서가 가깝습니다.

동기화를 위해 다음과 같이 구현했습니다. 그리고 우리는 have to 네트워킹을 위해 이것을 구현합니다. (즉, 무엇을하고 싶은지) 문제는 다음과 같습니다.

A. 컨텍스트 주위를 이동하는 것이 도움이되지 않습니다. 컨텍스트에는 저장소 개체의 하위 집합이 포함됩니다. 어떤 맥락에서 애플 리케이션 프로그래머에게 임의입니다. (삽입되고 변경된 객체는 그대로 있지만 변경되지 않습니다. 삽입 된 객체는 거기에있을 수 없으며 사라지지 않을 수 있습니다.)

B. 당연히 상점을 이동할 수 있습니다. 하드 디스크에 저장되어 있기 때문에 저장되어있는 위치에 대한 액세스 권한이 있으면 더 쉬울 것입니다. 이를 위해 XPC 서비스를 사용할 수 있습니다.

이렇게하면 한 사용자가 변경 한 사항을 알 수없는 문제가 있습니다. 당신은 단지 전체 가게를 얻을. 반대로 점진적 저장소는 save request을 통해 특정 변경 사항을 알고 있습니다.

C. "다른 사용자"는 충돌이 있음을 의미합니다. 이것은 Core Data에 "부자연 스럽습니다". 그래프 모델러인가요? "연결 기반"이 아닙니다. 문서를 열고, 소유하고, 변경하고, 저장하고, 닫습니다. 모든 문서 에서처럼 한 번에 두 개 이상의 앱 (한 앱의 두 실행 인스턴스 포함)이 소유하지 않는 것이 일반적입니다. 상점에서 동시에 작업하기위한 좋은 메커니즘이 없습니다. 그래서 당신은 그것을 스스로 처리해야합니다. 점진적 저장소의 수준에서 그 위에있는 수준의 빌드보다 처리하기가 더 쉽습니다.

특별한 경우에 가정을하지 않으면 원하는 것을 쉽게 처리 할 수 ​​없습니다. (예를 들어 높은 수준의 잠금 메커니즘이있는 경우)

내 0,05 $.

관련 문제