programing

.NET과 함께 CouchDB 사용

muds 2023. 10. 8. 10:23
반응형

.NET과 함께 CouchDB 사용

.NET(매니지드 코드)이 카우치DB를 읽고 쓸 수 있습니까?

카우치DB를 이용하여 문서관리를 하는 프로젝트의 일부분을 만들고 싶습니다.

답이 늦었지만, 해먹을 확인해 보세요.현재 활성화되어 있으며 곧 여러 프로젝트에서 프로덕션에 사용될 예정이며 정기적인 업데이트와 수정 작업을 받고 있습니다.기본적인 객체 지속성 외에 해먹은 다음과 같은 것을 제공합니다.

  • 진정한 포코.'id' 속성은 필요 없습니다. 해먹은 내부적으로 추적합니다.
  • 뷰를 생성하고 실행하는 사용하기 쉬운 API, 사용자 지정 맵/축소 뷰 생성 지원 등 뷰에 대한 강력한 지원
  • 첨부 파일 지원.
  • Repository<>쿼리/뷰(즉, _Design doc)를 c# 응용 프로그램 코드와 함께 가져올 수 있도록 도와주는 클래스입니다.리포지토리는 _design 문서를 유지 관리할 책임이 있으며, 이를 통해 카우치DB 뷰가 저장된 proc와 같은 느낌을 받지 않도록 합니다.
  • 완전한 유닛 테스트 스위트.이것은 프로토타입 소프트웨어가 아닙니다.

SharpCouch 유틸리티 클래스를 살펴보십시오.

카우치DB HTTP API를 위한 단순 래퍼 클래스입니다.

게임에 조금 늦었지만 비동기 HTTP 클라이언트와 기본적으로 뉴턴소프트의 JSON을 통해 C#로 작성된 새로운 드라이버에 대한 오픈 소스 프로젝트가 있습니다.직렬화를 위한 Net(전환 가능).MyCouch - 의 단순한 비동기 CouchDb 클라이언트입니다.그물.

여기에 시작하기 게시물이 있습니다: http://danielwertheim.se/get-up-and-running-with-couchdb-and-c-using-mycouch-on-windows/

당신이 REST와 JSON을 통해 일반적으로 CouchDB와 통신하는 것을 고려할 때 JSON을 사용하는 것은 그리 어렵지 않을 것이라고 생각합니다.NET 및 일반 WebClient/HttpWebRequest 클래스가 이를 수행합니다.제가 직접 해본 적은 없는데요, 잘...

네.

윈도우에 카우치DB를 설치하는 방법은 여기를 참조하십시오.

C# wiki 기사 시작하기 링크입니다.에 대한 링크가 있습니다.그 기사의 망 포장지.자기 것을 굴리는 것도 꽤 쉬울 겁니다.

C#로 작성된 오픈소스 프로젝트 오토만을 주시하세요.아직 개발이 한창이지만, 기획 단계에서 프로젝트의 선택 사항으로 지적하고 싶었습니다.완료가 가까워짐에 따라 이 게시물을 업데이트하겠습니다.github에서 소스를 볼 수 있습니다.README를 읽어서 현재 버전에서 가능한 예와 내용을 확인합니다.

  • 문자열을 많이 사용하는 샤프쿠치와 달리 오토만은 JSON 문자열에서 객체를 매핑하기 위해 제네릭을 자동 직렬화 및 탈직렬화에 사용합니다.인터페이스나 기본 클래스에서 개체를 상속할 필요 없이 이 모든 것을 수행할 수 있습니다.
  • Json을 사용합니다.JSON 직렬화 및 역직렬화를 처리하기 위해 아래에 그물이 쳐집니다.
  • CouchDB가 반환하는 RESTFul 오류 코드를 Exceptions에 매핑합니다.
  • 계획된 기능:지속되는 개체에 대한 ID를 생성하기 위한 ID 생성자
  • 계획된 기능:문서 수정을 통해 오프라인 낙관 잠금을 암시합니다. 오스만은 ID 을 사용하여 사용자를 추적하고 충돌이 발생할 때 예외를 발생시킵니다.
  • 계획된 기능:모노 호환이 됩니다.
  • 계획된 기능:이것은 추후에 있지만, 당신이 자바스크립트를 이용하여 CouchDB에 표현하는 Map/Reduce 함수에 대한 LINQ 표현을 사용할 계획입니다.

그것은 꽤 새로운 프로젝트이지만 매우 활동적입니다.물론 저도 좀 편견이 있습니다. ;-)

cdb api용 경량 포장지인 divan도 보십시오.

JSON을 사용한 적이 있습니다.NET은 MS REST starter kit의 http client class와 연동하여 CouchDB에 통합하여 매우 잘 작동합니다.

최신 상태를 원한다면 CouchDB의 wiki에는 C#에 대한 API 목록이 있습니다. http://wiki.apache.org/couchdb/Getting_started_with_C%23

사용하기 아주 쉽습니다.http://code.google.com/p/skitsanoswdk/ 에서 가져올 수 있는 WDK10에 포함된 CouchDB용 NET API는 매우 유연하며 객체 및 순수 json 레벨에 대한 데이터를 처리할 수 있습니다.

옵션(최신 업데이트 순서):

  • Skitsanos Webware Development Kit http://code.google.com/p/skitsanoswdk/source/browse/trunk/WDK10/WDK.API.CouchDb/ 최신 업데이트 2012년 9월
  • 릴렉스-넷/해먹 http://code.google.com/p/relax-net/ 최신 업데이트 2011.11.
  • 카우치DB.Net http://couchdbnet.codeplex.com/ 최신 업데이트 2010년 12월
  • 오스만 https://github.com/sinesignal/ottoman 최신 업데이트 2010년 12월
  • Divan https://github.com/foretagsplatsen/Divan 최신 업데이트 jul 2010
  • SharpCouch http://code.google.com/p/couchbrowse/source/browse/trunk/SharpCouch/SharpCouch.cs 최신 업데이트 2008년 8월

제가 많이 늦었다는 것은 알지만, 아마 미래에 도움이 될 것입니다.지난 몇 년간, 저는 카우치DB의 도서관에서 일했습니다.

가장 큰 특징은 LINQ(EF Core like)를 망고 쿼리로 변환하는 것과 DB Changes Feed, Views, Table Splitting 등입니다.

https://github.com/matteobortolazzo/couchdb-net

var skywalkers = await context.Rebels
    .Where(r => 
        r.Surname == "Skywalker" && 
        (
            r.Battles.All(b => b.Planet == "Naboo") ||
            r.Battles.Any(b => b.Planet == "Death Star")
        )
    )
    .OrderByDescending(r => r.Name)
    .ThenByDescending(r => r.Age)
    .Take(2)
    .Select(
        r => r.Name,
        r => r.Age
    })
    .ToListAsync();

하나 더 - CouchDBC 클라이언트: https://github.com/ttutisani/CouchDBClient

면책 사항:제가 작가입니다.

CouchDBC 클라이언트를 사용자 지정 개체로 작업하기에 더 편리하도록 만들기 위해 노력했습니다. 일반적으로 응용 프로그램은 데이터베이스에 저장합니다.

제가 이 프레임워크를 쓰기 시작했을 때, 제가 발견하고 시도했던 다른 모든 것들은 표준화되지 않은 메소드 시그니처(다양한 규약을 사용하여 이름이 지어졌고 그들이 무엇을 했는지 추측하기가 더 어려운), 통합 인터페이스(스트링 문서를 중심으로 한 일부 작업과 json 문서를 중심으로 한 다른 작업), 그다지 유연하지 않은(일부는 문자열로만 작업) 것이었습니다.s, 객체가 있는 다른 것들), 또는 매우 추상적이지 않습니다(정확하게 사용하기 위해서는 CouchDB REST API를 먼저 알아야 함).그 이후로 성숙해졌다고 생각하고 있습니다만, 적어도 이 제품은 제 입맛에 맞게 디자인되었습니다.

카우치디비클라이언트는 기본 API에 대해 너무 걱정하지 않고, 애플리케이션에 집중하고, 필요한 객체를 어떻게 저장하고 검색하는지에 대해 편안한 추상화의 느낌을 만들 수 있기를 바랍니다.

릴렉스 http://www.sharplearningcurve.com/wiki/Symbiote-Relax.ashx 를 확인하세요. 릴렉스는 ".CouchDB의 (우수) RESTful API의 Net API 추상화.문서 상호 작용을 위한 저장소 기반 인터페이스와 관리 유형 작업을 위한 서버 컨트롤러가 포함되어 있습니다."

CouchDb를 추천합니다.저장소.도우미 패키지.이 기능은 포괄적이며 변수 값이나 개체 속성에 따라 동적 매개 변수를 구문 분석하여 XML 파일에 쿼리를 만들 수 있습니다.

사용 가능한 옵션을 평가한 후 애플리케이션의 요구사항을 충족하기 위해 이러한 구성요소를 개발했습니다. 이 구성요소는 사용자뿐만 아니라 다른 사용자에게도 도움이 될 수 있습니다.저는 여기서 제 자신을 홍보할 생각이 없음을 분명히 합니다. 단지 유용할 수 있는 것을 공유할 뿐입니다.

구성 및 사용 방법에 대한 자세한 설명은 github에 있습니다.

링크 : Nuget Package | Github

망고 쿼리를 사용하여 문서를 검색하는 예:

IList<User> users;
var sts = new List<String> { "ACTIVE", "LOCKED" };
using (UserRepository db = new UserRepository())
{
    var query = db.FindOf("list-status", new { id = "OwnerIdloop.user.7", statuses = sts });
    users = db.List<User>(query);
}
Array.ForEach(users.ToArray(), Console.WriteLine);

문서 추가 예제:

User user = createUser("email@email.com");
using (UserRepository db = new UserRepository())
{
    var result = db.Insert<User>(user); // add document and return instance changed with operation revision id
    Console.WriteLine(result.Revision);
}

문서 변경 예제:

using (UserRepository db = new UserRepository())
{
    // Load document data by ID
    var user = db.Get<User>("email@email.com");
    user.Name = user.Name + "::CHANGED";

    var result = db.Update<User>(user); // update document and return instance changed with operation revision id
    Console.WriteLine(result.Revision);
}

문서 삭제 예제:

using (UserRepository db = new UserRepository())
{
    // Load document data by ID
    var user = db.Get<User>("email@email.com");

    var result = db.Delete<User>(user); // delete document from database. Return true case sucess or false case not deleted
    Console.WriteLine($"Sucesso: {result}");
}

도움이 되길 바랍니다!

언급URL : https://stackoverflow.com/questions/1050152/use-couchdb-with-net

반응형