locked
Design Question RRS feed

  • Question

  • User1442286028 posted

    I am preparing to start to write an app that is going to continually be built up.  Right now there are about 6 distinct known parts.  Right now the main focus is for a web application.  I am trying to learn MVC and would really like to create this app in MVC.  There is a possibility that We will create many apps based on these different parts, some apps maybe on 2 parts other maybe all 6 and there is the possibility that new parts will be though up at a later time.  No of course all of the parts need to be able to be changed as needed.  Also even thought this is mainly going to be a web app there is also the possibility that windows apps may be created that would use some of the same parts.

    My first idea is to break the parts into distinct DLL that can then be referenced by whatever app is being created at the time.  Then if need I could extend parts of the dll for custom issues.

    I would like to build a DAL DLL and BL DLL for each part and then pass the connection string to the SQL database from the calling app.  It will be a SQL backend and since they will be distinct apps when finished I was thinking I would just clone the database as needed.  That way if in the future I need to move them to different servers I would be able to move over the database completely rather than have to go in and separate  the data form one big master database.

    Is this a solid design or is there a better approach.  I want to make this as scalable as possible, and will need to be able to maintain and enhance easily.  One of the big issues is the end product is very fluid and in constant flux.   

     

    Thursday, September 26, 2013 1:18 PM

All replies

  • User-851967432 posted

    If the functions are going to be shared across different platforms, WCF would be a good start.

    Thursday, September 26, 2013 1:34 PM
  • User839260933 posted

    Hi

    Windows Communication Foundation (Code named Indigo) is a programming platform and runtime system for building, configuring and deploying network-distributed services. It is the latest service oriented technology; Interoperability is the fundamental characteristics of WCF. It is unified programming model provided in .Net Framework 3.0. WCF is a combined features of Web Service, Remoting, MSMQ and COM+. WCF provides a common platform for all .NET communication.

    Advantages

    1. WCF is interoperable with other services when compared to .Net Remoting,where the client and service have to be .Net.
    2. WCF services provide better reliability and security in compared to ASMX web services.
    3. In WCF, there is no need to make much change in code for implementing the security model and changing the binding. Small changes in the configuration will make your requirements.
    4. WCF has integrated logging mechanism, changing the configuration file settings will provide this functionality. In other technology developer has to write the code.

    You can see more at http://wcftutorial.net

    http://www.codeproject.com/Articles/406096/A-beginners-tutorial-for-understanding-Windows

    Thursday, September 26, 2013 1:37 PM
  • User-488622176 posted

    I tend to disagree with the WCF statements at this moment in time. WCF itself is not the solution alone, and far as I see it is currently not even a part of the solution.

    First on the database part. If you create multiple applications that are not related, you can split the data in different databases, or use one database with different schemes to create tables & view into.  If the applications are related I suggest creating 1 database with either relations between the different tables of the different modules, or replacing these relations with a coded alternative. All solutions will work for you. If you consider our applications to be part of a suite => use 1 dbase. 

    In case you incrementally add new functionality domains to your application, working in a modular way is definately the way to go. I suggest you take a look at PRISM. It shows how to create modular applications. Each module can have it's separate BL en DAL. The integration will be done from either the service layer (for example when using business process driven application) or at presentation layer level (for pure data centric applications).

    WCF only comes in the moment you really need to split the layers on different tiers. When you separate the web UI from the BL or service layer you should wrap the communication using WCF. If you use a service application you can easily wrap existing services. I only see this handy the moment you need both the web UI and Win UI presentation layer. If you start with the WebUI, you should provide a service layer in your application. If you add the Win UI : wrap the services through WCF and create a new presentation layer using WinUI technologies such as WCF or Winforms.

    Friday, September 27, 2013 7:31 AM