Building and "Open Source" .Net project using Visual Studio 2015 new features

Project Phases

Phase 1 (Windows)      Phase 2 (Android)      Phase 3 (Mac & IOs)            Phase 4 (Linux)
- Desktop                        - Mobile                        - Desktop (Mac)                  - Desktop
- Web                               - Tablet                         - Web (Mac)                         - Web
- Mobile                                                                 - Mobile (IOs)                      - Mobile
- Tablet                                                                  - Tablet (IOs)                        - Tablet


INFORMATION REQUIRED (refer to attachments)

Type
      - WinForms or WPF for desktop application, keeping in mind the open source concept which will serve for the longer run?
      
Framework
      - I am exactly not sure which fits for which Type of project. Fill free to link up the visio file and respost.
      
Code Structure (This will depend on the type of Framework chosen, needs to be modular and reusable)
      1. Independent Database Repository/DBContext layer
            i.  Based on  Open Source concept the Application should be smart enough to detect the appropriate Database
            ii. Serve as the database layer
      2. Entity Layer (more likely to be the code first approach)
      3. Business Logic/Validation layer
      4. User Interface
            i.  There are lots of frameworks for the UI development like AngularJS, DevExpress, Kendo, etc...
            ii. Which will be the best fit for this project?
EE_Project_Structure.jpg
EE_Project_Structure.vsdx
poisonGCAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Michael FowlerSolutions ConsultantCommented:
Is this to be only a website which will then have associated mobile apps calling it using REST services or do you intend to build desktops apps as well. If you plan on have desktop apps then I would strongly suggest that you develop in Java from the beginning as this would simplify your project greatly and significantly reduce the workload. While windows is available for Linux and Apple it is not mature and likely to cause issues for your project.

As for the structure I would create web services to provide connectivity to the database and perform the business logic and then connect to these services from the desktop and mobile apps
Olaf DoschkeSoftware DeveloperCommented:
Your question is very broad, but if you intend on VS2015 community edition being the core of it of course Java isn't the answer.

If you think about platform independence in the first place Java is one answer, HTML/CSS/JS is the other, but as you know there are lots of UI frameworks,

I came across applicationcraft.com yesterday when using mobile-frameworks-comparison-chart.com to find something universal. I can't really say anything about it, but it promises very much (not to say it looks promising)

Of course I can't tell you anything about my experience with this, as said I just came across that yesterday.

Bye, Olaf.
poisonGCAuthor Commented:
@Michael
The project choice is C# .Net so Java is not an option out here. Yes as mentioned under project phases the application will be delivered for desktop, web, mobile and tabs. I agree to your point out there that windows is not that mature enough for Linux and Apple but by the time the 2 phases of the projects are delivered i bet Microsoft along with the open source community will come out with much more better solutions on those.

Regarding the structure I have limited knowledge on .Net have mostly worked on legacy MS technologies

To deliver the project in different applications (desktop/web/mobile/tab) i am looking for separate layered architecture.

1. The design should be such that the Database, Entity and Business Logic layers are common and the UI is derived based on the application type (desktop/web/mobile/tab) may be some github references will be a good starter
2. I am not sure to go with Web Services or Web API. Not sure how these will go along with the desktop based application with either Winforms or WPF
3. Also if i have to adapt a framework which one would serve my need for delivering for all application types (dekstop/web/mobile/tab)


@Olaf
Interesting applicationcraft site there. Additionaly I checked the comparision site and when chose language as C# it displayed me only KendoUI. , i'll require some time to go through it and check how it fits my purpose.
Big Business Goals? Which KPIs Will Help You

The most successful MSPs rely on metrics – known as key performance indicators (KPIs) – for making informed decisions that help their businesses thrive, rather than just survive. This eBook provides an overview of the most important KPIs used by top MSPs.

Olaf DoschkeSoftware DeveloperCommented:
Microsoft currently goes the opposite route after having ported part of the .net framework for OS X and Linux with less success than MONO has: The promise to run AndroidApps on Windows. Not as hard as it seems, as the core of that is supporting Java, which is of course possible on Windows.

I don't think mobile-framework-comparison-chart.com wil ever point you to VS2015, though as far as I see MS relies much on Xamarin for targeting other platforms in about the same way as applicationcraft incorporates PhoneGap/Cordova.

Bye, Olaf.
Michael FowlerSolutions ConsultantCommented:
A Web API is a development in Web services where emphasis has been moving to simpler representational state transfer (REST) based communications. RESTful APIs do not require XML-based Web service protocols (SOAP and WSDL) to support their interfaces.
https://en.wikipedia.org/wiki/Web_service

I would tend towards using RESTful services due to the decreased overhead.

Winforms are easier to develop but WPF is more flexible and look better.

Here is an example of using a web service with winforms
http://www.c-sharpcorner.com/Blogs/12411/how-to-use-a-web-service-in-windows-form-application.aspx

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Olaf DoschkeSoftware DeveloperCommented:
1. What's unclear in this demand is, if you only need a local database (on the device/client) or a global one. A hosted database (cloud or not) would benefit from an API, as Michael suggests
2. For sure data hosted is also accessible for desktop apps through APIs, if not directly via SQL. A local database always is faster, but local. Whenever data is fed by the community of users you need a centralized database anyway.
3. You'll have to use several UI frameworks, unless you would be satisfied with a browser based solution. HTML Frontends can do anything a desktop app needs including drag&drop. KendoUI is an example working that way.

Here is an overview of what VS2015 has to offer (most probably not at all considered on the framework somparison site): https://www.visualstudio.com/en-us/features/mobile-app-development-vs.aspx

Here you can see C# allows you to do native apps using the Xamarin route. Xamarin limits you to use the full set of C# capabilities. I don't know if they now support generics, but that would be your main vector using VS2015 to target all platforms.

Bye, Olaf.
poisonGCAuthor Commented:
@Michael
I agree and will be taking the REST Web APIs with JSON output. I am not familiar with WPF but will go with it over Winforms

@Olaf
The DB will be ofcourse centralized  and project will be hosted on Azure

@Michael/Olaf
Any references for the Database Repository layer which will be one project referred across devices?
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
.NET Programming

From novice to tech pro — start learning today.