I have started using Umbraco 7 and observed that same above issue, where I now I need to split my project into a three layered. For security, our web servers only have access to the application servers, which in turn can access the DB servers.
Thanks for the quick response!!!! Due to security reasons our web servers only have access to the application servers, which in turn can access the DB servers. I have observed after consuming Umbraco Nuget, UI project is now directly communicating to DB. I need a layer between Umbraco UI and Database, A Application service which will be deployed to different server and will communicate to DB Server for all operations.
Below is our architecture:
UI-AppService - Internet
AppService-DB - Intranet
We do not have and cannot have direct communication between UI - DB Server.
I'm thinking how to solve your problem.
It's unusual task.
Maybe you can use SQL Compact for Umbraco ?
You don't need to connect to umbraco database in this case. Database will store on the 'App_Data' folder.
I would not recommend using SQL Server CE. For one, because it is horrible in terms of scalability. Secondly, because you are then just putting the database on the same machine, which I suspect is not allowed anyway. And if it were, why not put an actual database (e.g., the free SQL Server Express) on the machine?
I think some clarification is required before your question can be answered properly. When you say "UI", do you mean:
Website. That is, the thing that most users see when they visit your domain.
Back Office. That is, the thing that your content editors see when they log in to Umbraco.
Both. Both user interfaces (i.e., the website and the back office).
If you mean website, then you may be in luck. I suspect your three-tiered architecture comes from a desire for security. If so, then you can do the following:
Create two web servers. One will be for the website, and the other will be for the back office. The website should work fine without a connection to the database (assuming you can copy the XML cache file from the back office server to the website server).
The website server will simply get information from the XML cache (using the Umbraco API that was built for this purpose).
The back office server will allow people in your company to edit the website. That server can reside entirely within the company's firewall, and so should not be subject to quite so stringent security requirements.
Periodically copy media from the back office server to the web server. Alternatively, you can implement your own media repository in Umbraco so that you pass through the application level to gain access to the media.
Here are some risks you may want to evaluate:
Can Examine indexes be built without a database connection? You will probably need whichever index is used to index media.
Will the website function without a database connection? I'm pretty sure I have seen it working fine, but you'll want to double check.
Is there ancillary functionality that may require a database connection (e.g., member login)?
Finally, you may want to consider whether or not Umbraco is the right solution given these requirements. Perhaps you can built your own CMS or avoid a CMS entirely. One thing to note is that Umbraco is open source, so you could hypothetically reengineer it so that it can use the three tiered architecture you need to deal with. Here's the source code: https://github.com/umbraco/Umbraco-CMS/
Keep in mind that trying to shoehorn Umbraco into this three tiered architecture may cost your company tens or hundreds of thousands of dollars. You may want to bring that up with them to see how they prioritize security when compared to cost.
Did you manage to find a solution for your project in the end? I am hoping to do something similar to you with Umbraco being separated from the main business logic and data by a WebAPI layer but haven't worked out whether this is sensible/achievable.
Umbraco 3 Layer Architecture
Hi All,
I have started using Umbraco 7 and observed that same above issue, where I now I need to split my project into a three layered. For security, our web servers only have access to the application servers, which in turn can access the DB servers.
Please let me know is this possible?
Hi Abhishek,
Yes. Why not? You can create such architecture.
What will Service project do ?
Thanks,
Alex
Hi Alex,
Thanks for the quick response!!!! Due to security reasons our web servers only have access to the application servers, which in turn can access the DB servers. I have observed after consuming Umbraco Nuget, UI project is now directly communicating to DB. I need a layer between Umbraco UI and Database, A Application service which will be deployed to different server and will communicate to DB Server for all operations.
Below is our architecture:
UI-AppService - Internet AppService-DB - Intranet
We do not have and cannot have direct communication between UI - DB Server.
Thanks in Advance...
Hi Alex,
Just checking, did you get a chance to look at above query?
Thanks In Advance !!!
Regards. Abhishek
Hi Abhishek,
I'm thinking how to solve your problem. It's unusual task. Maybe you can use SQL Compact for Umbraco ? You don't need to connect to umbraco database in this case. Database will store on the 'App_Data' folder.
Thanks, Alex
Thanks Alex.. I'll try to integrate the same only use case I can think of which can fail if with Load Balancing..
I would not recommend using SQL Server CE. For one, because it is horrible in terms of scalability. Secondly, because you are then just putting the database on the same machine, which I suspect is not allowed anyway. And if it were, why not put an actual database (e.g., the free SQL Server Express) on the machine?
I think some clarification is required before your question can be answered properly. When you say "UI", do you mean:
If you mean website, then you may be in luck. I suspect your three-tiered architecture comes from a desire for security. If so, then you can do the following:
Here are some risks you may want to evaluate:
Finally, you may want to consider whether or not Umbraco is the right solution given these requirements. Perhaps you can built your own CMS or avoid a CMS entirely. One thing to note is that Umbraco is open source, so you could hypothetically reengineer it so that it can use the three tiered architecture you need to deal with. Here's the source code: https://github.com/umbraco/Umbraco-CMS/
Keep in mind that trying to shoehorn Umbraco into this three tiered architecture may cost your company tens or hundreds of thousands of dollars. You may want to bring that up with them to see how they prioritize security when compared to cost.
Hi Abhishek,
Did you manage to find a solution for your project in the end? I am hoping to do something similar to you with Umbraco being separated from the main business logic and data by a WebAPI layer but haven't worked out whether this is sensible/achievable.
Cheers, George
is working on a reply...