2014-05-14 9 views
5

yılında Cassandra bağlanmak için.Doğru yolu bir ASP.NET Web API projesinde resmi Cassandra C# sürücüsü (2.0) kullanılacak doğru yol arıyorum bir web/API uygulamasında

public class CassandraContext 
{ 
    private static ISession _session; 
    public ISession Session { get { return _session; } } 

    public CassandraContext() 
    { 
     var cluster = Cluster.Builder().AddContactPoint("cassandra.some.server").Build(); 
     _session = cluster.Connect("keyspace"); 
    } 
} 

Ve Denetleyici ben böyle kullanıyorum:

public class TestController : ApiController 
{ 
    static CassandraContext db = new CassandraContext(); 

    public IHttpActionResult Get() 
    { 
     var result = new List<string>(); 
     var rowSet = db.Session.Execute(@"SELECT * FROM ""Test"";"); 

     foreach (var row in rowSet) 
      result.Add(row.GetValue<string>("data")); 

     return Ok<List<string>>(result); 
    } 
} 

şu dersleri kullanarak db bir cassandra bağlanan çok basit örnek uygulamasını yaptık

Herhangi bir örnek, bilgi çok yardımcı olacaktır.

Teşekkürler.

cevap

1

Ben doğru yolda olduğunu düşünüyorum. Burada geçmişte yaptık budur: Benim CassandraDAO sınıfında izole benim bağlantı ayrıntıları ile

public class CassandraDAO 
{ 
    private Cluster cluster; 
    private Session session; 
    private String NODE = ABCServiceTester.Properties.Settings.Default.CASSANDRA_NODE; 
    private String USER = ABCServiceTester.Properties.Settings.Default.USERNAME; 
    private String PASS = ABCServiceTester.Properties.Settings.Default.PASSWORD; 

    public CassandraDAO() 
    { 
     connect(); 
    } 

    private void connect() 
    { 
     cluster = Cluster.Builder().WithCredentials(USER, PASS) 
      .AddContactPoint(NODE).Build(); 
     session = cluster.Connect(); 
    } 

    protected Session getSession() 
    { 
     if (session == null) 
     { 
      connect(); 
     } 

     return session; 
    } 
} 

, o zaman her keyspace veya işlev alanı için bireysel DAOs yazın. Bu DAO'lar daha sonra CassandraDAO sınıfını miras alırlar.

public class ProductsDAO : CassandraDAO 
{ 
    public List<Product> getProducts(string _itemID) 
    { 
     string strCQL = "SELECT priceAvail, productGroup, productSpec, sizeProfile " 
      + "FROM products.itemsmaster " 
      + "WHERE itemID=?"; 
     Session localSession = getSession(); 
     PreparedStatement statement = localSession.Prepare(strCQL); 
     BoundStatement boundStatement = new BoundStatement(statement); 
     boundStatement.Bind(_itemID); 

     //get result set from Cassandra 
     RowSet results = localSession.Execute(boundStatement); 

     List<Product> returnVal = new List<Product>(); 

     foreach (Row row in results.GetRows()) 
     { 
      Product tempProd = new Product(); 
      tempProd.itemID= _itemID; 
      tempProd.priceAvail = row.GetValue<int>("priceavail"); 
      tempProd.productGroup = row.GetValue<string>("productgroup"); 
      tempProd.productSpec = row.GetValue<string>("productspec"); 
      tempProd.sizeProfile = row.GetValue<string>("sizeprofile"); 

      returnVal.Add(tempProd); 
     } 

     return returnVal; 
    } 

C# için orada bir çok resmi DataStax kodu yok. Bunu, DataStax Academy numaralı telefondan Cassandra Java Geliştirme dersini alarak öğrendiklerimden uyarladım. Açıkçası, bu örnekte MVC yapmıyordum, ama umarım yardımcı olur. tamam yapmak olmasıdır - bu ** Cluster.Bulder() ** arayacak ve ** cluster.Connect() ** Eğer ProductsDAO her eriştiğinizde gibi

+0

Bu kod görünüyor? – Martin

+0

Ben sadece denemek ve kısa tutmak için bu şekilde vardı. CassandraDAO'nun içinde, oturum için korumalı bir alıcıya sahip olabilirsiniz ve yalnızca oturum boşsa, 'bağlan' işlevini çağırmalısınız. Bunu yansıtacak bir düzenleme yapacağım. – Aaron