Need design guidence for .Net web application RRS feed

  • Question

  • Hi There,

    I want to design .net web application with following requirement.

    1. Should work on Desktop, tablets, iPad and mobile phone. Means that should contain responsive design.
    2. Should work on all major browsers (IE 8 and above, Firefox, Safari and Chrome).
    3. Also need to develop mobile application which contains with limited functionality. Means some specific modules like Customer Bills, Summary details and work flow for approvals. If want to publish that application on Windows and Android phones then need two separate application development or single application can work on that?

    Can you please advise what will be better design for that in .Net technology and techniques that I can use in that like  jQuery, Mobile jQuery, Bootstrap, Web services, WCF etc..?
    Wednesday, August 27, 2014 12:04 PM

All replies

  • My 2 cents;

    Web Layer edge I'd use Web Api, that way it will support both web and other clients.

    Web client tech, so much to choose from. Some people don't like jQuery these days as it's deemed heavy. But take your pick, there are lots to choose from. Although I'd be careful about IE8, that sounds pretty low.

    Phone development - I'd look at Xamarin, PCLs and MVVM-Cross. Even if you don't choose that, Java and C# are pretty similar so could get a fair amount of re-use from any mid-layer logic. Personally I really dislike html/js dev for native phone work but that's me.


    Wednesday, August 27, 2014 3:48 PM
  • I will recommend to go for SOA architecture to achieve this.

    In here , The middle layer as service based , It should connect with all the UI releted systems without any issues.

    for this service layer, my suggestions are in below.

    1. create a WCF transactional services for all desktop based applications.

    2. create WebApi's for the applications which is running on web browser.

    Frontent technicqes, you can build the applications like in below.

    1. for desktop purpose you can create a WPF client to communicate the WCF transaction service.

    2. for web browsers, you can use the ASp.net with MVC 4.0 and to connect the Web APi for interacting the database layer.

    3. For tablet and ipod you can any one of the development software they recommand and consume our web Api service as middle layer.

    we can use the middle layer as async operation then, the front end pages are more responsive in all the cases. In MVC web applications all the service calls are Ajax call's through the jquery or any one of the javascript framework like Angular.js or knockout.js then, Application should be parallel processing and also more responsive in front end.


    Wednesday, August 27, 2014 7:56 PM
  • Thanks a lot for all your responses.

    Sorry for some confusion over there. Desktop means client machines meas browsers (I should use correct words in my query.. :) ). My application will be web application only which can have web UI and mobile application UI.

    Can you please also provide me response for another query. If I want to provide same application (with limited functionality) as mobile application like user can install it in their mobile phones. So do I need to create two separate applications one for Android phone and one for windows phone. Or there is any technique available in which can create single application for both phone?

    I am also thinking to deploy this application as SOA means same services can handle request from Web server and from mobile application. So can please also suggest which is best option from security and performance point of view or if there is any other than following option?

    1. Web Service
    2. WCF with multiple binding (TCP with web server and http with mobile application)
    3. REST services

    Thursday, August 28, 2014 5:20 AM
  • Hi,

    I would recommend  WCF using REST which provides XML,JSON.

    Web Application created with Bootstrap framework will work with Computers,Tablets,Phones. There is no need to write styles for this. Bootstrap pre defined styles will do it for you. When you resize the browser , it ll optimize the content for you.So you can also use it on Android and windows phones.

    Hope it helps.

    • Proposed as answer by TheTomCat Thursday, August 28, 2014 6:15 AM
    • Unproposed as answer by TheTomCat Thursday, August 28, 2014 11:17 AM
    Thursday, August 28, 2014 5:30 AM
  • I would NOT recommend using WCF, Web Api is basically the replacement for WCF Rest. I would also challenge the need for SOA, but the problem here is more about the definition being used for SOA. prabakaran.M I assume you are recommending n-layer design rather than an autonomous service architecture?


    Thursday, August 28, 2014 6:48 AM
  • Thanks for your reply.

    Actually it is not mandatory that I want to implement SOA. My only requirement is my web application should work with distributed environment. like I will have 4 web server and 2 App server and 1 SQL server. Now client browser communicate with web server which contains .net web site. and mobile application will also use same business logic that's why I was thinking I will put business logic on APP server which accessible through services. As that will be accessible for web site and mobile application. As my Web and App server will be trusted domain so they can communicate through TCP protocol which will be fast than HTTP and mobile application can communicate with HTTP protocol.

    So Can you please suggest if it is best design for that type of application if not then what could be the best solution for that?

    I will appreciate your responses.

    Thursday, August 28, 2014 8:46 AM
  • Contrary to my previous post, about the only justification for WCF is if  some of you requirements are within a controlled network so you would get a performance gain from using TCP whereas others would use HTTP. Having said all of that I'd still be tempted to separate out and keep WebApi but in your scenario that isn't necessary. Although...why not just host the business layer on the presentation tier of web sites and remove the need for any comms issues?


    Thursday, August 28, 2014 3:42 PM
  • I meant in here of desktop application as windows installer applications.

    If you are using web based applications then, it is better to go with MVC architecture to develop applications with web API as a service layer of that application.

    In mobile applications, you can't go with same application for both the version of android and windows phones. It is possible when you are developing a application running in mobile browsers. but if you given as a install able application then, you should develop the application by using the compatibility software's which is used to develop app.


    Wednesday, September 3, 2014 5:26 AM
  • Hi Pkr2000,

    My post is mainly proposing the way of development which is supported for well unit testing and very good support for maintenance once the application is moved in to production.

    separating layers would be distributed access to test the layers independently by using all existing unit testing tools or Microsoft unit test projects.

    at the same time we can reuse the layer for both Web based applications and also mobile applications which is developed for android and windows mobile Os's. 


    Wednesday, September 3, 2014 5:35 AM
  • I appreciate the idea, but that doesn't preclude the deployment I suggested. For example, consider a function IsValidTelphoneNumber. You write a DLL that implements it. You put a WCF façade in front of it. You put a REST façade in front of it. You call it from a WinForm, you call it from it from JavaScript, you call it from a Unit Test. But what if we just deploy the DLL with the WinForm app, we deploy the DLL with the Unit Test project and we are left with the REST façade on a web server. Isn't that the same result?


    Wednesday, September 3, 2014 6:57 AM
  • Hi pkr2000,

    Once the system build and also tested with unit test projects then, we can say that is 100% perfect application. We should re-use the solution for all the components which is interacting with build unit.

    My recommendation is once we ensured the project is perfectly working, we should not split it in small unit and using some other projects. 

    because, if we are doing any changes in the logic after some time then, we should deploy the dll in all the projects. It is additional tasks involved in maintenance. May be some risk to miss somewhere.


    • Edited by Prabakaran.M Wednesday, September 3, 2014 7:29 AM
    Wednesday, September 3, 2014 7:28 AM
  • a) Unit Tests != 100% project *even* if you have the mythical 100% coverage

    b) Using the components by other components requires a separate set of integration tests. If you believe in (a) then you're not really saving anything by creating silos

    c) By creating silos you're introducing all the plumbing problems, networking unknowns, single points of failures, etc.


    Wednesday, September 3, 2014 9:26 AM