2011-08-11 6 views
2

Membase 서버를 성공적으로 설치했는데 실제로 "Sub-millisecond access latency"기능을 사용하면 실제로이 질문을 쓰게됩니다. MongoDB에. 그래서 질문 : 제대로 설치하고 Membase 서버를 구성 했으므로 .NET 클라이언트 응용 프로그램에서이 데이터베이스에 대한 액세스 권한을 얻으 려합니다.이 목적을 위해 Enyim .NET 클라이언트를 사용하고 있습니다.Membase CouchDB가 Mac OS X에서 Mono와 함께 작동하지 않습니다

using System; 
using System.Linq; 
using System.Diagnostics; 

using Membase; 
using Membase.Configuration; 

namespace CouchDB 
{ 
    class MainClass 
    { 
     public static void Main(string[] args) 
     { 
      var config = new MembaseClientConfiguration() 
      { 
       Bucket = "helloworld", 
       BucketPassword = "123", 
       NodeLocator = typeof(Enyim.Caching.Memcached.DefaultNodeLocator), 
       Transcoder = new Enyim.Caching.Memcached.DefaultTranscoder(), 
       KeyTransformer = new Enyim.Caching.Memcached.TigerHashKeyTransformer(), 
       PerformanceMonitorFactory = null // I'm on Mac OS X 
      }; 

      config.SocketPool.MinPoolSize = 10; 
      config.SocketPool.MaxPoolSize = 20; 
      config.SocketPool.DeadTimeout = TimeSpan.FromSeconds(10); 
      config.SocketPool.ConnectionTimeout = TimeSpan.FromSeconds(5); 
      config.Urls.Add(new Uri("http://localhost:8091/pools/default")); 

      var client = new MembaseClient(config); 


      var spoon = client.Get<String>("Spoon"); 

      Console.WriteLine(spoon); 
     } 
    } 
} 
나는 클라이언트를 만들려고 해요, 예외도 전체 스택을 표시하지 않는 발생할 때 문제가 발생

는 만

"소스에서 캐스팅 할 수 없습니다 말한다 : 나는 다음 테스트 응용 프로그램을 작성했습니다 대상 유형 "나는이 문제에 약간의 시간을 보냈습니다

+0

내가 잘못 볼 수있는 한 가지는 설정에서 helloworld라는 버킷을 지정했지만 연결 문자열에서 default라는 버킷에 연결하려고하는 것입니다. 나는 Enyim Client에 익숙하지 않지만, Couchbase 웹 사이트의 예제를 시작하는 것이 더 나쁘다. 사용할 수있는 구성 파일이 있다는 것을 알고 있습니다. 작업을 완료하면 특정 프로젝트에 맞게 설정을 조정할 수 있습니다. – mikewied

+0

두 개의 댓글에 사과드립니다. 또한 Membase couchDB를 사용하여 Membase 서버 사용에 대한 설명에서 질문에 대해 언급했습니다. 더 자세하게 얘기해 주 시겠어요? Couchbase는 CouchDB의 버전 인 Couchbase single을 제공합니다. Membase 서버는 밀리 초 미만의 대기 시간을 제공하는 제품이며, CouchDB와 Membase를 함께 사용하는 Couchbase 서버가 있습니다. 어떤 것을 사용하고 있는지 지정할 수 있으면 문제 해결에 도움이 될 수 있습니다. – mikewied

+0

안녕하세요, 혼란스럽게해서 죄송합니다. Membase 서버를 사용해 보았습니다. 지금은 아무 것도 이해하지 못한다고 생각합니다. 다른 질문을 만들었습니다. http://stackoverflow.com/questions/7040980/membase-can - 누군가 - 설명 - 아이디어 - 뒤에 - 기술 - 나는 어떤 도움을 주셔서 감사합니다. 고맙습니다! – Lu4

답변

1

(확인자 = NULL, registerConverters = false)를 System.Web.Script.Serialization.JavaScriptSerializer..ctor에서

에 입력합니다. 012W는 System.Web.Extensions의 두 버전 사이에서 충돌을 일으키는 a bug in the Mono runtime입니다 (아직 2.10.5 AFAIK에 있음).

Membase 클라이언트 (현재 Couchbase 클라이언트)에 제공된 DLL은 3.5 버전. 4.0 버전을 참조하는 것이 무엇인지 모르겠지만 여전히 그렇습니다. (즉, 내가 무슨 짓을했는지입니다)

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="System.Web.Extensions" 
          publicKeyToken="31bf3856ad364e35" 
          culture="neutral" /> 
     <bindingRedirect oldVersion="3.5.0.0" 
         newVersion="4.0.0.0"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

을 또는 클라이언트를 다시 컴파일 : 그래서 솔루션 중 하나는 (내가 그것을 테스트하지 않았습니다) 리디렉션을 적용하는 것입니다. mono 아래에서 클라이언트를 컴파일 할 때 두 가지 사소한 문제점이 있습니다. MemcachedNode.cs에는 Failed 이벤트가 명시 적으로 구현되어 있습니다. 불필요하므로 (구현 된 다른 충돌 이벤트가 없습니다), 행을 제거하면됩니다. 또한 제거 할 수있는 SetTcpKeepAlive가 있습니다 (안전하다고 생각합니다).

+0

업데이트 : 최신 couchbase-client 브랜치 (2012 년 6 월 현재 release11)를 컴파일하면 해먹 라이브러리가 사라지고 SetTcpKeepAlive를 제거 할 필요가 없습니다 – GuillaumePitel

관련 문제