Hi, I am a professional accountant, not a computer programmer but I know programming concept and love it, in past have learned VB.Net in the year 2008. I want to use my accounting experience in programming by developing Web-Based ERP/Accounting Software integrated with to eCommerce platform. I want to develop ERP and eCommerce for a particular industry which can be used by 100+ companies. I am not very sure which programming language and framework I should use for the project. I found that Python-Django is the most powerful platform/framework to build any kind of application. Sometimes I am thinking about ASP.NET because I have learned little .Net concept. Now I want to invest my time and money in something which is very robust and helps to develop my project. So, I am very much confused between ASP.Net or Django. Please could anybody advise me which framework would be ideally good to develop this project which will carry for coming many years... Many thanks for your suggestions and advice.
If you are starting from scratch, I would recommend Express.js as a backend web framework. It is faster and more flexible than Django. Express makes it easy to build web applications offering numerous benefits such as efficiency and quicker development times. Some features that are worth mentioning: middlewares, templating, routing, and debugging.
The most important element that is missing the stack is the database. A Web-Based ERP/Accounting Software require a powerful Relational Database to comply with ACID princliples (Atomicity, Consistency, Isolation and Durability). By atomicity, we mean that that database is able to perform the transactions in an atomic manner. A transaction is just a single unit of work, which can either be one query, or multiple queries. Let's say that we have two accounts. And we need to transfer $100 from account one to account two. Now this transfer is just one transaction, but it is going to consist of three different steps. The first step is checking if the account one does have $100. The second would be upgrading the amount of account one to be $900. And the third would be taking this $100 and making the balance and account two be $200. If the database does support atomic transactions, if one of these three steps fail, the whole transaction should fail. This is what atomicity is.
Consistency means that the database should help in achieving the correct data state, adding certain constraints. We can add a constraint on the amount column that it can never be negative, and the database must make sure that this constraint must always be followed.
Then, we have isolation, which is mainly about the concurrency control. Let's say that we have an account which has $1,000, and there are two persons A and B trying to get the money out of this account. So $1,000 and $100. If we let both of these transaction happen at the same time, this would result in the reduction of $1,100. So the balance will result in the negative $100. Isolation prevents this to happen.
Finally, durability means that once a transaction is committed, the data must be written to the non volatile memory or the storage. So that even if the crash happens or something wrong happens with the database, the data must be there and not be corrupted.
In terms of relational database my recomendation is using Postgres. Postgres is an object-relational database, while MySQL is a purely relational database. This means that Postgres includes features like table inheritance and function overloading. Postgres also adheres more closely to SQL standards.
You are making a choice beween a non-typed language (Python) and a typed one (C#). Bear in mind that complex projects always need the clarity and order that a typed language brings. Although I still love Django, I recommend it for small project. Large projects needs types.
Thank you very much for your suggestions. I also prefer ASP.Net, but while looking at currently scenario it seemed Python-Django growing up so it confused me whether ASP is good idea to look into.
If you already have some knowledge in C# you can go with ASP.NET Core MVC and continue your learning path (if you liked the language in the first place). but both solution will allow you to build an ERP/eCommerce project.
There is not too much difference between Django and ASP.Net Core MVC both follow the same design principles for building application, they both flexible, provide a lot of library, have a great community support..
The downside (thats my opinion) with ASP.Net Core you are going to follow the Microsoft philosophy of doing thing and you will mostly by tight to there products lineup. Instead of Django where you'll have more freedom.
If your concern is - Robustness: both are valid choice - Long Term Support: Go ASP.Net why? Because the project is maintained by Microsoft the chance that the project go unmaintained is low. Django is more Open Source we never know when it will stop be maintained.
The best I can give you, it's to try both and make your own opinion. Build a Proof of Concept and see by yourself.
Thank you Guillaume Maka for your recommendations. It is quite difficult to make up the mind when both choices are quite similar in terms of giving the the result. so as you suggested, I would try both at the initial level and see where i get comfort.