Question

I am a novice software developer and have only developed a few Java based applications. I want to make an ERP software for Windows using the .NET framework. I had decided upon using C# for GUI and logic.

I went through C# quickly as I am well versed with Java. I now also have an overview of Windows form.

I have a small application interacting with MS SQL server up and running. But I couldn't Google out of a few problems -

  1. What architecture should I follow. MVC was excellent for web-based apps, but is it equally effective for desktop apps..?? Also, how should the folder structure and classes hierarchy be..??
  2. Which database server to use..?? SQLite has some shortcomings over a network but if I plan to run my app over a single desktop, would it have any problems..??
  3. How do I package my database server along with the application..??
  4. If I plan to sell the software on CDs, how do i prevent multiple user usage..??

Links to reading resources would be very helpful..

Was it helpful?

Solution

I recommend doing some reading sir. One book I found that has given me a GREAT foundation on .NET architecture has been this book:

http://www.amazon.com/Microsoft%C2%AE-NET-Architecting-Applications-Pro-Developer/dp/073562609X

Goes into developing with testing in mind, n-tiered architecture, inheritance, everything.

OTHER TIPS

Quite many questions in one question ;-)

First, C# and Java are luckily not to different at all. You will be able to apply much of your knowledge from Java to C# - even many libraries were ported from Java to C#.

  1. For Windows Forms, MVP (Model-View-Presenter) is usually a good choice. It's a little bit different from MVC (I would even say it evolved from MVC and it's better in certain aspects). Using WPF, I would go with MVVM. Also see UI Design Pattern for Windows Forms (like MVVM for WPF)
  2. When using ADO.NET (or the Entity framework), you are able to easily change the underlying data base technology. Try to write your database code as generic as possible to enable switching from one system to another.
  3. You can create a Setup project for that (like you would probably do in Java)
  4. There are some commercial solutions out there - even more important than protection is obfuscation to prevent disassembling your code (same problem as in Java, though). I think, you will find many threads here on SO on licensing.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top