Technical Architecture Document
Technical Architecture Document
Table of Contents
1. Introduction 4
Purpose 4
Scope 4
Technical Architecture Reviewer : Lav & Manu 5
Audience : Team 5
Acronyms, Abbreviations, Terms and Definitions 5
2. Design Overview 5
2.1 Approach 5
2.2 Architectural Goals and Constraints 5
3. Topology Diagram 6
4. Application Architecture 8
5. Deployment Process 19
6. Reference Urls 20
Revision History
Purpose
To build a technical framework for XYZ ERP that’s developed and hosted by the SaaS vendor and
which the end user customer accesses over the Internet.
Scope
This architecture is scoped to facilitate the development of software which is subscription based.
All the upgrades are provided during the term of subscription. The application is hosted and updated on a
central location and does not reside on client computers.
Technical Architecture Reviewer :
Audience : Team
2. Design Overview
2.1 Approach
Using Enterprise Architecture with well-defined interfaces provide business functionality which can be
discovered and accessed through a supportive infrastructure.
Data Stores
Pros
Metadata associates each database with the correct tenant, and database security prevents any
tenant from accidentally or maliciously accessing other tenants' data.Giving each tenant its own
database makes it easy to extend the application's data model (discussed later) to meet tenants'
individual needs,Restoring a tenant's data from backups in the event of a failure is a relatively
simple. Cons
Cost:
This approach tends to lead to higher costs for maintaining equipment and backing up tenant data.
Hardware costs are also higher than they are under alternative approaches, as the number of tenants that can
be housed on a given database server is limited by the number of databases that the server can support.
Client (Users) :
The Client layer would consist of a web client like Microsoft Internet Explorer 8 +,Firefox & Safari.
Master page
All the pages inherit from a common Master page, hence the design is consistent and throughout the pages,
also any changes to master pages is reflected in all the pages hence the flexibility is evident. All the
common controls and Ajax UI etc are placed in the master pages and hence it is a common placeholder for
the controls.
Navigation controls
All the navigation in the system is dynamicall driven and is easily configurable.
Dundas Chart for .NET-With AJAX, Dundas Chart for .NET offers built-in capabilities to add many
exciting and useful functions to charts, all without using postbacks. Dundas is dedicated to create
sophisticated dashboards by building the most advanced data visualization solutions available.
• SSRS Reporting Services-We will be using SQL Server Reporting Services (SSRS) which is a
server-based report generation software system from Microsoft. It can be used to prepare and
deliver a variety of interactive and printed reports. It is administered via a web interface.
Reporting services features a web services interface to support the development of custom
reporting applications.We will be using SQL Server Reporting Services (SSRS) for the reports.
• Telerik Dock Control VS ASP.Net Web Parts-We will be using telerik Dock control instead of
ASP.Net Web Parts in our Dashboards.It is much light weight than the ASP.Net Web Parts.
Psuedo Code
Psuedo Code
IEnumerable<DataRow> Query = from c in dtTable.AsEnumerable()
where
c.Field<string>("RskCat_Name")==(hidRiskName.Value.ToString())
select c;
dtResult = Query.CopyToDataTable<DataRow>();
Session Management
The state management in the application uses the normal HTTPSession object, which is used to store
persistent data across the pages.
Psuedo Code
context.Session[PresentationConstants.USER_DATA] = objDtoUserProfile;
This assigns a value to the HTTPSession object with a key “PresentationConstants .USER_DATA”
Cache Management
While the session object is used to store user specific data the cache is used to store global data available to
all the users. This is not user specific and is used to store general items.
Caching is implemented in the application by using the HttpContext.cache object where these items (like
all ListItem Information) are stored using global keys, and retrieved wherever required in the application.
By this we remove the need to go back through the layers and retrieve the values every time an user request
it, rather we take them from cache. This improves the performance of the application as this eliminates
roundtrips to the server.
context.Cache[PresentationConstants.LISTITEM_DATA] = objListItems;
Psuedo Code
protected override void InitializeCulture()
{
if (Request.Form["ddlLanguages"] != null)
{
String selectedLanguage = “kn-IN”;
Page.UICulture = selectedLanguage;
}
base.InitializeCulture();
}
The above code sets the page culture to kannada. When the page is rendered the text is
automatically taken from the resource file named “userdata.aspx.kn-IN.resx”.For Javascript alert messages
and any text messages that we need to display to the used like “Record saved” ,”Record deleted”, “Please
select a record” etc.. we will make use of global resources. Global resources will reside in the
App_GlobalResources directory and key/value pairs put in this resource file can be accessed from any
page in the application. However the rules remain the same, we have to create a seperate resource file for
each culture.
Database support.
To store international language characters in the database, the column data type will have to be of Nvarchar
type.
Note: When not using MS Enterprise libarary we will have to pass the N character prefixed before the
input parameter .
de 0x0007 German
en-US 0x0409 English - United States
hi-IN 0x0439 Hindi - India
kn-IN 0x044B Kannada - India
Screen Shots of Login page which supports German,Hindi and Kannada based on selection made in the
dropdown box.German
Hindi
Kannada
Screen shot of data stored in the database and displayed in a grid (Hindi)
Email sending with html format, instead of using stringbuilder class and preparid html format and sent to
email service. If we want to change the html format we need to change code.
By using Email Template concept, we can change html format very easaly.
An XSLT file as a template file to store email templates. It specifically targets on usage of Custom Objects
Properties to be used in the XSLT file.
This Enterprise Library 4.1 Used for Database Service , Exception Handling Service and Logging Service.
• Enterprise Library 4.1 - DAAB (Data Access Application Block for Data access)
• Enterprise Library 4.1 – EHAB (Exception Handling Application Block)
• Enterprise Library 4.1 – LAB (Logging Application Block)
This Exception Handling Application Block Implemented in All the Layer except Business Entity Layer.
You need the same boilerplate code to handle an exception in all the layers.
try
{
//Some code
}
catch(Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException
(ex, <Name Of Policy>);
if (rethrow)
throw;
}
The Data Access layer provides data services to the Business Rules layer. All database transaction is
done in this layer. Data Access layer directly interacts with database.
In this Layer we used Enterprise Library 4.1 Data Access Application Block.
The business layer have to just call these methods and not concern itself with any of the database
related activities.
Any exception occurring in the layer is caught and propagated back to the previous layer.
Note:
Enterprise Library 4.1 References for each layer.
DataAccess Layer required Rererences 7 dlls. Those are
1. Microsoft.Practices.EnterpriseLibrary.Common;
2. Microsoft.Practices.ObjectBuilder;
3. Microsoft.Practices.EnterpriseLibrary.Data;
4, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
5. Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging;
6. Microsoft.Practices.EnterpriseLibrary.Logging;
5. Deployment Process
Reference Urls
Reference Architectures
Best Practices for .Net Enterprise Architecture.
Duwamish 7.0 Architecture.
http://msdn2.microsoft.com/en-us/library/aa288541(VS.71).aspx
Microsoft .NET Pet Shop 4.0 Architecture.
http://msdn2.microsoft.com/en-us/library/aa479071.aspx
Gang of Four Design Patterns - Enterprise Application Architecture.
http://www.dofactory.com/Framework/Framework.aspx
Reference Building Blocks
Microsoft Patterns & Practices Enterprise 4.1 - October 2008.
DAAB – Data Access Application Block.
EMAB – Exception Management Application Block.
LAB – Logging Application Block.
http://msdn2.microsoft.com/hi-in/library/aa480453.aspx
Deployment Practices
Deploying .NET Applications using VS.NET 2005.
http://msdn2.microsoft.com/en-us/library/aa479568.aspx