473,790 Members | 3,246 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Tiered architecture question

I'm in the early stages of working up the design for a large .Net web
application and want to make sure that we have the best possible physical
architecture to support the logical architecture and implementation. To
my way of thinking, that means that no only do we follow a 3-tier
approach from a logical view (data access, business logic, and UI) but
that we also separate the application into physical layers to improve
scalability and security.

My thoughts now, keeping it simple, are to have a SQL Server (SQL), a
Business Rules Server (BRS), and Web Server (UI). The Web server would
host the pages that make up the UI and it would make requests for data
(read/write) to the BRS which in turn would talk to the SQL server
through a logical data access layer.

The big question for me in all this is whether I should use Web Services
as the communications mechanism between the UI and BRS or if I should use
Remoting instead. I have experience with both so it's not a learning
curve issue and at the moment it would only be code that we control
talking to the BRS (later we may have a need for SOA functionality at
this layer).

Certainly the web services style is better supported in the IDE and
therefore easier to work with but that [for now] comes with a performance
penalty when compared with Binary Remoting over TCP. The thing is, even
though slower, web services could very well be "fast enough" since I
don't anticipate moving huge numbers of records between the BRS and UI
layers anyway.

Any comments/advise on this is greatly appreciated!

Ken
Sep 8 '06 #1
2 1258

Ken,

My rule of thumb is:
DotNet only. Use Remoting.
Hetereogeneous. Use Web Service.

You haven't listed Remoting thru IIS, which is another alternative. The
pro's of this approach is that you get all the built in "stuff" with IIS.
Aka, when the server reboots, IIS comes back up.
And you don't have to create a windows service to handle the tcp traffic.
I find the IIS approach is good, because it simplifies deployment
tremendously, but all I have to do is switch out a connection string if I
change from IIS to tcp.

Notice this example below:
//Use this syntax for a TCP deployed Remoting Service
//string sourceURL =
"tcp://localhost:9932/ShippingCostsCa lculatorTCPList ener";
//Use this syntax for a IIS deployed Remoting Service
string sourceURL =
"http://localhost/DotNetAssemblie s/GranadaCoder/Applications/RemotingExample
/IISRemotingSamp leDeploy/MyFirstRem.rem" ;

See my blog
http://sholliday.space s.live.com/?_c11_BlogPart_ n=1&_c11_BlogPa rt_handle=cns!A 68482B9628A842A !125&_c11_BlogP art_FullView=1& _c=BlogPart
(which is Page "2" of the listings) for a downloadable remoting example.
Mine talks about "secret code", but that's not a big issue for you if you're
doing a web based gui.

As far as the tiers,
see
http://sholliday.spaces.live.com/ 6/5/2006 5/24/2006

and I usually have the BizLayer and DataLayer on the same physical layer.
I find it more important to write good DAL code, which uses IDataReaders
(primarily) and when it updates the database, it gets in and out of the
database as quickly as possible.
(aka, no biz logic in the usp's (user stored procedures in Sql Server)

I'd suggest the IIS/Remoting approach. It would be much easier to go from
this .. to tcp/remoting then from webservices ... if you don't get the
performance you need.

...

"Ken Ross" <kr***@horizo n-boss.comwrote in message
news:Xn******** *************** **********@207. 46.248.16...
I'm in the early stages of working up the design for a large .Net web
application and want to make sure that we have the best possible physical
architecture to support the logical architecture and implementation. To
my way of thinking, that means that no only do we follow a 3-tier
approach from a logical view (data access, business logic, and UI) but
that we also separate the application into physical layers to improve
scalability and security.

My thoughts now, keeping it simple, are to have a SQL Server (SQL), a
Business Rules Server (BRS), and Web Server (UI). The Web server would
host the pages that make up the UI and it would make requests for data
(read/write) to the BRS which in turn would talk to the SQL server
through a logical data access layer.

The big question for me in all this is whether I should use Web Services
as the communications mechanism between the UI and BRS or if I should use
Remoting instead. I have experience with both so it's not a learning
curve issue and at the moment it would only be code that we control
talking to the BRS (later we may have a need for SOA functionality at
this layer).

Certainly the web services style is better supported in the IDE and
therefore easier to work with but that [for now] comes with a performance
penalty when compared with Binary Remoting over TCP. The thing is, even
though slower, web services could very well be "fast enough" since I
don't anticipate moving huge numbers of records between the BRS and UI
layers anyway.

Any comments/advise on this is greatly appreciated!

Ken

Sep 8 '06 #2
Thanks much!! I've been reading some other articles on your blog re this
sort of architecture although I hadn't run across the discussion of
hosting a Remoting interface through IIS - haven't looked at that before
and am looking forward to reading about it.

I'm like you with the DAL and BL - I want the business logic and DAL on
the same physical box, separate from both the SQL and UI boxes. Likely as
not we'll end up publishing *some* web services from the business layer,
if not for our application then for partners to connect through. My
thinking was that if I'm going to have web services there anyway, it
might just be cleaner to have everything use the same technology.

Thanks again for your feedback and insight!

Ken
"sloan" <sl***@ipass.ne twrote in
news:e#******** ******@TK2MSFTN GP05.phx.gbl:
>
Ken,

My rule of thumb is:
DotNet only. Use Remoting.
Hetereogeneous. Use Web Service.

You haven't listed Remoting thru IIS, which is another alternative.
The pro's of this approach is that you get all the built in "stuff"
with IIS. Aka, when the server reboots, IIS comes back up.
And you don't have to create a windows service to handle the tcp
traffic. I find the IIS approach is good, because it simplifies
deployment tremendously, but all I have to do is switch out a
connection string if I change from IIS to tcp.

Notice this example below:
//Use this syntax for a TCP deployed Remoting Service
//string sourceURL =
"tcp://localhost:9932/ShippingCostsCa lculatorTCPList ener";
//Use this syntax for a IIS deployed Remoting Service
string sourceURL =
"http://localhost/DotNetAssemblie s/GranadaCoder/Applications/RemotingEx
ample /IISRemotingSamp leDeploy/MyFirstRem.rem" ;

See my blog
http://sholliday.spaces.live.com/?_c...BlogPart_handl
e=cns!A68482B96 28A842A!125&_c1 1_BlogPart_Full View=1&_c=BlogP art (which
is Page "2" of the listings) for a downloadable remoting example. Mine
talks about "secret code", but that's not a big issue for you if
you're doing a web based gui.

As far as the tiers,
see
http://sholliday.spaces.live.com/ 6/5/2006 5/24/2006

and I usually have the BizLayer and DataLayer on the same physical
layer. I find it more important to write good DAL code, which uses
IDataReaders (primarily) and when it updates the database, it gets in
and out of the database as quickly as possible.
(aka, no biz logic in the usp's (user stored procedures in Sql Server)

I'd suggest the IIS/Remoting approach. It would be much easier to go
from this .. to tcp/remoting then from webservices ... if you don't
get the performance you need.

..
Sep 8 '06 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
1580
by: comp.lang.php | last post by:
I can't possibly reproduce the code for this as the 2 classes in question are about 1500 lines each and condensing is in this case impossible due to algorithmic logic dependencies. Let's say you have a Class A and a Class B. Let's say Class A is like this: class A { var $b;
0
1273
by: David | last post by:
Hi all, I am looking to do a little brainstorming. I am beginning to switch my mrogram over from a client/server architecture to a multi-tiered architecture. Since this is pretty much a shrink-wrapped progam, I do not know what technologies a company has at their location nor the level of IT staff to implement and maintain the program. Some of the companies that will be working with this program are large with lots of technical resources...
6
3831
by: Charles Law | last post by:
This is going to seem like a basic OO question, but it comes up and bites me every now and again. Suppose we have a multi-tiered protocol to implement, what is the logical, OO way to design the handler? For example, let's say that we have to implement the ISO 7-layer protocol, or something like an Allen-Bradley master-slave protocol. At the lowest layer we might only need to top and tail the data being transported, such as DLE STX DLE...
2
1779
by: hans | last post by:
Hi! I am new to .NET (coming from Java). We have to implement a desktop application which extracts data from a database, does some analysis, filtering etc. and displays the results. I have noticed that in .NET applications Windows widgets like the DataGrid are often directly bound to a DataSet Object. For me this means essentially a 2 tier architecture instead of a 3 tier architecture. I am used to seperating the application into 3 tiers:...
6
2953
by: Gary James | last post by:
This may not be a direct C# question, but since I'll be using using C# for development, I thought I'd pose the question here. I'll soon be involved in the design of a new software product that will employ a software "Plug-In" architecture. Taking the plug-in route will give us a design that can adapt to, as yet, undefined future requirements (within the scope of the plug-in interface spec of course). In the past I've done this with...
2
1776
by: John A | last post by:
I have a Web Service that I am reponsible for that we use for data integration purposes. Recently I have been tasked with sending some of this data to a third party. Because they need to receive the data in real time. They have requested that I subscribe to a Web Service that they have published. The only problem is that they often take longer than 30 seconds to process my data before I get a response back from them. This is taking far...
13
7207
by: rrs.matrix | last post by:
hi i have to detect the type of CPU. whether it is 32-bit or 64-bit.. how can this be done.. can anyone please help me.. thanks.
2
1116
Bob Ross
by: Bob Ross | last post by:
I am trying to get a better understanding of the three tiered architecture and would like some help clarifying the interaction between classes and structure. The Presentation layer - is easy it is simply the front end (pages, winforms, etc...) The Business Logic Layer - This contains the domain objects i.e Car() which will hold all the properties of a particular car. One object will be created per car. But would you have functions in here...
1
1379
by: Cirene | last post by:
Do you have any good book recommendations for learning Entity Framework, DAAB, and/or Tiered Architecture (business objects, etc)? I am a VB.net developer, but C# would be ok I guess.... Thanks
0
9666
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
9512
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
10419
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9987
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9023
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
6770
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
5424
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
5552
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
2
3709
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.