I'm fairly new to C# and .NET as a whole and I want to create an application, I have strong experience in Java, Hibernate and using MVC frameworks like Spring.
I want to create an application that will have the following purpose:
- Be accessible by people that can login to it (active directory)
- Store data that is relevant for the user logged in and be able to create events
- Events are persisted to a central database for all users, and back-end stuff can be done like calculations and checking
- Be able to see events, request events and also some users will have a management permission to be able to see others' events
The client-side application will need to be in C# running on Windows and will probably be using a WPF application to be able to access/insert data. I will also be using SQL Server for persistence but where I'm thrown off is where the service layer should exist.
The kind of framework I'm looking for invovled an N-Tier architecture, where I have a presentation layer (client), service layer (?1) and a persistence layer (?2).
?1 - I want to gather some suggestion on what I can use for creating a service layer. Would it be worth for me to use ASP.NET to create a Web API that I can access from my client? So I can communicate with the Web-API to access and add data, which in turn will persist?
Something of this sort:
Is this the correct way of thinking about this?
?2 - I would assume it would depend on the service layer to determine where the persistence layer should exist. I've had a look at Entity Manager and it seems like a good way of handling database, objects and entities. If my service layer exists on a web api of some sort, I believe that I could tie in the persistence layer behind that which would give me the ability to handle data and it would be good from a security point of view(?)
I hope there is enough information here, I am not interested in code or programs. I'd appreciate it very much if I could receive some sort of a pointer to what architecture I should use for an application like this and what semantics would be useful.