dimanche 23 août 2015

Good architecture to shift a WPF desktop application to Client Server technology

I have a working WPF application that works on a single PC. I have used SQL server database, Entity Framework to communicate with database and RDLC reporting in the application. Now the requirement has arrived to make this application work on the local company network where multiple users (normally around 25 at max) will access application depending upon there roles and permissions set. I did some R&D on this and used primarily the architecture mentioned here http://ift.tt/1AfxOx2, and after doing so, I have made a paper design/architecture of the application that will look like this

A WCF service running on a high end server within the company network

  1. GPC.Service itself - defines the protocol to connect to the service and all other necessary information
  2. GPC.Algorithm - will be the main business logic layer that will contain the logic and will be interface to the clients for calling the database layer methods
  3. GPC.Persistance - will have actual database interaction methods like fetching/storing/updating/deleting records in the database
  4. GPC.Data - This will contain the edmx schema for the Entity Framwework
  5. GPC.Entites - This will contain the entities of the database schema and addional partial classes

**

Clients:

The client will a WPF Application based on MVVM pattern for now (may be in future we will need to move to the Web application but not required for now). Main components of the application are:

  1. Import from excel: Currently all data is in Excel files. All that data needs to be imported into the system.
  2. Edit/Update/Delete: Once data is imported, allow interface to user to edit/update/delete records
  3. Generate reprots (using RDLC for this)
  4. Users/Roles management etc.

Shared: This is a library that contains differnet miscelenious classes like code to read excel file, Handle errors, Collections that will be bind to the UI etc.

DB context: Will be created in a using statement inside the Persistance layer for each method to ensure no stale information is left.

Does this architecure follow the n-tier architecture and is it flexible? What improvements are required in this and please guide me how to improve whatever issues are there. I want to make sure this is a good architecture before I go ahead and change my existing application.

Aucun commentaire:

Enregistrer un commentaire