게임 로직 코드(예:아이템 파기 코드)DestroyItem op = new DestoryItem(cid, slot);op.Success += () =>{ 성공 메시지 전달; };op.Fail += () => { 실패 메시지 전달; };RequestOperation(“ItemService”, op);실제 코드와는 차이가 있습니다.
37.
개발 프로세스책임을 맡은서비스를 구현그 서비스가 처리할 오퍼레이션들을 구현클라이언트의 요청에 따라 적당한 오퍼레이션을 호출 결과를 클라이언트에 전달
서비스에 오퍼레이션 요청DestroyItemop = new DestoryItem(cid, slot);RequestOperation(“ItemService”, op);아이템 서비스가 여러 개면? 둘 이상의 서비스가 같은 아이템에 접근한 아이템은 한 서비스가 처리하도록 보장하는 매커니즘 필요
45.
엔티티분산 처리의 단위“한캐릭터의 인벤토리 전체”“한 캐릭터의 우편함 전체”“전투 1회”등을 하나의 엔티티로 구현하나의 엔티티는 한 서비스에서 담당
엔티티 획득같은 종류의서비스가 여러 개 있는 경우 엔티티 중복 로드 방지 프로토콜DB를 통해 동기화 유지
48.
엔티티 간 연결유지엔티티 찾기 매커니즘이복잡하고 비싸다 오퍼레이션을 보낼 때마다 엔티티를 새로 찾으면 낭비엔티티 간에 파이프를 열어두고 유지엔티티가필요없어지면 모든 연결을 닫고 엔티티언로드 로그아웃, 전투 종료 등
49.
변경된 게임 로직코드(로그인할 때)ItemConnection = service.Connect(clientEntity, cid, “ItemService”);(아이템 파기)DestroyItem op = new DestoryItem(slot);op.Success += () => { 성공 메시지 전달; };op.Fail += () => { 실패 메시지 전달; };ItemConnection.Request(op);CID가 오퍼레이션에서 사라짐