Dylan Snel
Dylan Snel

Reputation: 700

Solution for a no-server multi-user application/database?

I am at a dead end an I could really use some help.

I intern for a huge company. My projects involves creating an application to automate/simplify the work of a retiring employee.

The problem here lies in the strict company policies. I am a developer stuck at business end of the company. Therefor IT gives me nothing:

  1. I don't have a server (nor web nor database)
  2. I can't create a server, because no pc will be running and we can't keep them logged in due to single sign on with company cards.
  3. I can't install anything on the pc's in the network.
  4. I can access a share file server, that is backed up every day.
  5. The libraries involved have to be free
  6. A central database has to be accessed by a dozen of users (at once)
  7. The database will recieve new data every day and will grow accordingly
  8. The users will both read and write from/to the database
  9. Preferably C#.NET or WPF solution
  10. Application needs to open files stored on the shared drive. ( Only once, the important information will be extracted and stored in the database.. the file will then be removed)

My initial idea was to use silverlight (which runs standalone) in combination with SQLite. I ran a test and Silverlight files stored on the shared drive work. (Silverlight is installed on every pc on the network) This is my preferred front end. However (correct me if i'm wrong) I tried SQLite-net and I needed to add the sqlite3.dll to my windows/system32 folder, but on the network PC's I don't have access to the Windows folder, so this can not be done.

Also I read that SQLite or files in general can become corrupt when accessed by multiple users as one, so maybe I thought locking was an idea.

Which solutions are there to my problem?

Upvotes: 4

Views: 2324

Answers (3)

user564548
user564548

Reputation:

You should take a look at ScimoreDB. It's an embedded database that supports multi-process read/write access. If needed it can also act as a client/server database; even as a distributed database with multiple nodes.

It's free to use and deploy. It has support for C++ and .NET. Only disadvantage is that it only works on Windows.

Upvotes: 1

RemedialBear
RemedialBear

Reputation: 644

I worked for a company for several years writing software for police departments to manage traffic collision reports. Police stations usually have little-to-no IT support, so we faced many similar limitations. The company actually did pretty well using Microsoft Access databases, with the setup looking something like this:

The shared drive had an Access database file (.mdb or .accdb) which was the actual "database". Client computers (at the officers' desks) had Access applications with local "utility" tables for temporary storage, UI defined in Forms, and logic defined in Modules. Each of the client machines were connected to the repository on the shared drive by using linked tables. Local client configuration was stored either in the Access application in a config table, or in a text file on the machine.

It's not the cleanest solution, but it would allow you to create and maintain a unified solution using files that don't need to be installed and don't require any funny permissions, as long as everyone has read/write access to the shared drive.

Upvotes: 2

jgauffin
jgauffin

Reputation: 101150

Create a website. Today you can host ASP web apps in a stand alone .exe. By doing so you can make sure that the shared files are only accessed by one process. You can also limit the access to sqlite.

It also means that you do not have to distribute anything. Simply start your application and tell your users which url and port they have to browse too.

As for permissions, only the account running your webhost requires access to shared files etc.

Upvotes: 2

Related Questions