0

I've got an ASP.net MVC 4 application that is a basic purchase tunnel application

The project structure looks something like

MyProject.DomainModel

MyProject.Repository

MyProject.Service

MyProject.UI.PurchaseTunnel

I need to add call centre functionality, that will allow the call centre users to log in and place orders for people over the phone and do admin tasks.

For security reasons we don't want to deploy call centre functionality on to our public facing web servers, we just want the purchase tunnel.

How do we keep the call centre functionality separate from the purchase tunnel but not duplicate the purchase tunnel code into another project?

I've played around with areas but the "callcenter" area is deployed with the application, which is making the stake holders nervous.

Any ideas?

BenMorel
  • 34,448
  • 50
  • 182
  • 322
user1838438
  • 155
  • 5

1 Answers1

0

I've never had a flawless experience with areas. They work in principal to create a new section of the site with separate configuration, but it's almost always a pain to serve CSS/JS/img assets.

You have a few options. It largely depends on how much code you'll share with the public facing and call-center sides

  • use the same site with different roles. If the call-center site is effectively the same thing, they can use the same application but have different security roles that grand them access to specific functionality (you'd likely do this if you were going with areas as well.) The risks you run are someone forgetting to limit admin functionality to the right role, or an average user finding a way to become admin (high functionality sharing)
  • Build all your controllers in a separate assembly and the public and admin facing websites will contain only controllers that inherit those base controllers. This post has more information about putting controllers in a separate assembly. (medium functionality sharing)
  • push as much logic as you can into MyProject.Service and call services from two web front ends (low functionality sharing)
Community
  • 1
  • 1
pnewhook
  • 4,048
  • 2
  • 31
  • 49