2012-11-14 35 views
11

Tôi đang phát triển một ứng dụng cần phải di động và tôi đang sử dụng mongodb.Mongodb trong ứng dụng C# di động

Bằng di động, tôi có nghĩa là ứng dụng của tôi có một thư mục với tất cả: dll, exes, file mongo, cơ sở dữ liệu mongo. Sau đó, với thư mục này tôi có thể chạy ứng dụng của tôi trong bất kỳ máy nào.

Sau đó, tôi cần phải biết:

  • Có một số thư viện cho phép tôi để chạy quá trình mongod khi ứng dụng bắt đầu và kết thúc quá trình này khi ứng dụng kết thúc?

  • Tồn tại một phương pháp hay để làm việc đó?

Lời khuyên được hoan nghênh và cảm ơn trước.

+0

Bạn có thể xác định thêm 'di động' không? Yêu cầu của bạn là gì? –

+0

@ csharptest.net Tôi chỉnh sửa câu hỏi bằng các phương tiện di động –

Trả lời

9

Theo hướng dẫn cài đặt MongoDb, nó sẽ khá đơn giản.

Mongodb bắt đầu dưới dạng ứng dụng bảng điều khiển chờ kết nối, vì vậy khi ứng dụng của bạn bắt đầu, bạn nên chạy mongodb hidden. Chúng tôi luôn giả định rằng TẤT CẢ các tệp mongodb được đặt đúng với tệp ứng dụng của bạn và tệp cơ sở dữ liệu nằm trong thư mục chính xác).

Khi ứng dụng của bạn chấm dứt, bạn nên hủy quá trình.

Yo nên thiết lập các đường dẫn chính xác về ví dụ này:

//starting the mongod server (when app starts) 
ProcessStartInfo start = new ProcessStartInfo();  
start.FileName = dir + @"\mongod.exe"; 
start.WindowStyle = ProcessWindowStyle.Hidden; 

start.Arguments = "--dbpath d:\test\mongodb\data"; 

Process mongod = Process.Start(start); 

//stopping the mongod server (when app is closing) 
mongod.Kill(); 

Bạn có thể xem thêm thông tin về cấu hình mongod và chạy here

8

tôi cần phải làm điều tương tự và điểm khởi đầu của tôi là Salvador Câu trả lời của Sarpi. Nhưng, tôi đã tìm thấy một vài thứ cần được thêm vào ví dụ của anh ấy.

Trước tiên, bạn cần đặt UseShellExecute thành false cho đối tượng ProcessStartInfo. Nếu không, bạn có thể nhận được cảnh báo bảo mật khi quá trình được bắt đầu hỏi người dùng có muốn chạy hay không. Tôi không nghĩ rằng điều này là mong muốn.

Thứ hai, bạn cần gọi Shutdown trên đối tượng MongoServer trước khi hủy quá trình. Tôi đã có một vấn đề mà nó bị khóa cơ sở dữ liệu và yêu cầu nó được sửa chữa nếu tôi không gọi phương pháp Shutdown trước khi giết chết quá trình này. See Here for details on repairing

Mã cuối cùng của tôi là khác nhau, nhưng trong ví dụ này tôi đã sử dụng mã của Salvador làm cơ sở để tham khảo.

//starting the mongod server (when app starts) 
ProcessStartInfo start = new ProcessStartInfo();  
start.FileName = dir + @"\mongod.exe"; 
start.WindowStyle = ProcessWindowStyle.Hidden; 
// set UseShellExecute to false 
start.UseShellExecute = false; 

//@"" prevents need for backslashes 
start.Arguments = @"--dbpath d:\test\mongodb\data"; 

Process mongod = Process.Start(start); 

// Mongo CSharp Driver Code (see Mongo docs) 
MongoClient client = new MongoClient(); 
MongoServer server = client.GetServer(); 
MongoDatabase database = server.GetDatabase("Database_Name_Here"); 

// Doing awesome stuff here ... 

// Shutdown Server when done. 
server.Shutdown(); 

//stopping the mongod server (when app is closing) 
mongod.Kill(); 
+0

Tôi * nghĩ * bạn cần hai dấu gạch chéo ngược trên các chuỗi C#. –

+0

+1 Tuyệt vời! Cảm ơn. –

Các vấn đề liên quan