locked
ERP architecture RRS feed

  • Question

  • User210984419 posted

    Hello,

    I'm going to start an ERP , about the architecture i was thinking to a "server" side with a windows service hosting a web api, and the "client" side with an asp.net MVC project.

    But i have one last question before, do you think that this architecture can provide good performance? Or make an windows destokp application will be really more powerfull?

    And if you think that MVC is enough, do you know how to call the api? I just find results where the api is in the same project. (Edit : I just have to made a service reférence right?)

    Thanks a lot

    See you

    Wednesday, April 16, 2014 3:26 AM

Answers

  • User1751268424 posted

    Hi,

    My friend Celes Eternal, I think your questions are too wide, very difficult to answer this kind of question. You may look and do some exercises using learning material from this site and other sites to familiarize this ASP.Net. All the item you said may use for an ERP project, and also your experience doing exercises is more important.

    Have fun 

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, April 16, 2014 6:58 AM

All replies

  • User1751268424 posted

    Hi,

    My friend Celes Eternal, I think your questions are too wide, very difficult to answer this kind of question. You may look and do some exercises using learning material from this site and other sites to familiarize this ASP.Net. All the item you said may use for an ERP project, and also your experience doing exercises is more important.

    Have fun 

    • Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
    Wednesday, April 16, 2014 6:58 AM
  • User210984419 posted

    Thanks for your answer Smile

    I just wanted to know if it wasn't a bad practice to use so many web service.

    I don't have any experience in Asp.Net, and just a few in C#. But i'm in study contract and my boss said to make it, so my first complex experience in C# and some Asp.net will be an ERP Tongue Out I'm going to have fun !

    So if you say Asp.net is okay, i'll take that, because it's better on old machine.

    Have a nice day

    Wednesday, April 16, 2014 8:54 AM
  • User1751268424 posted

    Hi,

    Based on my experiences, you can start the following items:

    1. Start using the latest ASP.Net MVC - at this site
    2. Web API
    3. For client framework, you can explore AngularJS, using Visual Studio 2013, you can find AngularJS template, and paid course AngularJS courses from pluralsight.com.

    These three item are most popular this time.

    Have fun

    Wednesday, April 16, 2014 9:15 AM
  • User-488622176 posted

    Performance is not the issue between asp.net and a desktop application. Both can be as slow or as fast, depending on the quality of your developers. In multi-user environments it is important to have a responsibe system. You can do this with asp.net or with winforms. For really large (enterprise class) systems, it is important to have a scaleable system. Therefore I'd recommend you not to simply use asp.net, but to use a solid service architecture & html 5. The first (service architecture) enables you to, in a later stage, decouple your service tier from the presenatation tier, the second (html 5) allows you to take maximum advantage of client device features to create a responsibe web application that is even device neutral (Tablet, pc, laptop,...)

    MVC is superb for highly flexibile/customisable ERP systems where the whole underlying model is modifiable. But I think this is a little too complex for a beginner :-)

    Wednesday, April 16, 2014 10:09 AM
  • User210984419 posted

    Yes too complex is the word , but my personnal aim is just to learn as much as possible asp.net MVC and C#, so if i don't finish it (and i don't think that it's possible for me to end this in one year...) , it's not a problem.

    But in your answer, i wonder if i have understand what i have to do.

    The MVC project hasn't just display html and communicate with the api? The whole model will be modifiable, it will be a dll because the asp.net project and the windows service will share this code. I'm on the wrong way?

    In the best case for you, what will be the job of the MVC project?

    Thanks 

    Wednesday, April 16, 2014 10:44 AM
  • User-488622176 posted

    I love your spirit. The best way to learn is to aim high, to fail, but to continue every time. If you need help, feel free to use this forum !!!

    I sense a little ambiguity in your setup. You'll make a modifiable model, but you fix the model with sharing code. Feel free how you see the model to be modifiable : by a developer or by end-users ?

    MVC is great for dynamism. I'm running a similar project with a similar objective, but much further in the realisation phase. We apply MVC, with a dynamic application entity model that runs from a service. All entities, relations, ... are customizable by a runtime application designer. The MVC is used to use generic "list", "detail" and "reporting" views that match definitions with customizable entities, while facilitating navigation.
    Example:

    • myurl/myapp/contacts/list => shows the default list view for the dynamic "contacts" entity
    • myurl/myapp/contacts/list/cc => shows the "cc" list view for the dynamic "contacts" entity (same entity listview, other content)

    We (our architect team) chose MVC for the statelessness, easy navigation, and extensive use of HTML5 features (responsive design, jquery, ...). However, we do not use WEB API, but native WCF sevice with specific methods & request - reply messages, with a small "specificity":

    • all logic is wrapped in 2 services : an entity service (with a set of service methods to query & use the dynamic entity model), and a metamodelservice that handles view definitions, ...
    • services are wrapped with WCF, and invoked by a servicmanager. This manager is configurable, and provides client proxy & server stub. By configuration we can make this provide a direct service interface and service implementation class (our "inprocess model"), for deployment on same machine, or a WCF client proxy to communicate over WCF with remote app server for multi-tier deployment. 
    • The WCF services are there by default, with jquery accessible methods to allow usage from html scripting

    In your case, I'd recommend:

    • Put all logic in services. These can be simple service classes implementing a service interface (native interface). 
      • Use a separate assembly for service interfaces, messages (in & output messages of the service interface methods), DTO's, ...)
      • Use a separate assembly for service implementation classes 
      • Put a service manager in a "logic" assembly. This one makes the binding between the service interface and backend class. It can also, in later phase, bind to a WCF service backend while providing the service interface class to the calling application
    • In your mvc project : include the logic & interface assembly. Only invoke services by calling the service manager

    example service manager:

    public class ServiceManager
    {
      public static ServiceManager Current { get;set;} // implement session singleton !
    
      public IMyService GetMyService()
      {
        // if config file says direct invoke: 
        if (<config file condition A>)
        {
          return new MyService();
        }
        else
        {
          // create dynamic wcf client proxy for IMyService, calling the remote WCF service MyService.svc
          // return this client proxy
        }
      }
    }

    Only use the MVC project for presentation logic, and to invoke services that  interact with your model.

    Friday, April 18, 2014 5:55 AM
  • User-1067017023 posted

    Please engage very competent domain experts, and even more competent architects for your project. Or are you doing this just for fun? 

    By the way, have you evaluated SAP, Oracle Peoplesoft, Microsoft Dynamics, and other ERP tools?  I am surprised by the number of posters on this forum who are seeking to develop their own ERP, CRM, Document Management, and other systems! But I would love to write my own operating system, so why not!  :-)

    Tuesday, May 6, 2014 11:53 PM