Link to home
Start Free TrialLog in
Avatar of poisonGC
poisonGC

asked on

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
Avatar of Michael Fowler
Michael Fowler
Flag of Australia image

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
SOLUTION
Avatar of Olaf Doschke
Olaf Doschke
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of poisonGC
poisonGC

ASKER

@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.
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.
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
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.
@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?