473,548 Members | 2,622 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

WCF and Service Broker Architecture

Lets say I have a number of web servers that all feed data to a common SQL
Server database, which processes and sends to a master SQL Server. I am
looking at a solution that involves Service Broker at the higher levels and
that all works fine. My question is: what is the recommended way to get data
from the web server to the first-tier Service Broker? I've done a lot of
searching and reading and have not found any definitive answers. But my
ideas are:

1) Write directly to the database from the web server.
I don't really like this solution because it violates the concepts OO design
and abstraction. It also doesn't give me any assurances that the data gets
moved, other than maybe some logging. It also shifts alot of the processing
onto IIS, which I would like to be as "light" as possible, simply servicing
requests.
2) Write to a local queue managed managed by a WCF service hosted in a
Windows Service.
This gives me some abstraction, but also adds some layers that may be
unnecessary. And, if I'm not mistaken, it forces me to use a local MSMQ if I
want to make sure that the messages are durable. And there is still the
question of writing to the queue - seems like I still need to do this from
the IIS hosted web application or use memory-mapping or something. Maybe
someone could elaborate on this one.
3) Install SQL Express on the web servers and use Service Broker all the way
up the line.
This seems a bit of a hack to me - to install SQL Express on the web
servers - but would work. Also, does anyone know how this impacts licensing;
is it really truly free to install Express anywhere, even if its 50-100 web
servers?

Beyond the options above, what is the recommended way to traverse that first
segment to Service Broker if one needs durable messages? What if volatile
messages are okay - should it be done a different way? I feel pretty
comfortable with Service Broker once it gets the initial data - my issue is
getting the data in the pipeline to start.

Thanks
K
Mar 19 '07 #1
4 8140
How does you middle tier normally talk to the database? If it uses TSQL
over normal SQL Client or OLEDB connections then this is the way to do the
Service Broker connection. Because the connection is transactional, if the
connection is lost the SEND will roll back and you can send it again.

If you decide to use SQL Express in the middle tier, you gain a little more
fault tolerance at the expense of a little more complexity. If your middle
tier can continue to queue messages while the database is down for
maintenance or the network isn't working, your application is significantly
more fault tolerant. I've always been a fan of reliability and fault
tolerance over OO purity and isolation.

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Karch" <no****@absotut ely.comwrote in message
news:O9******** ******@TK2MSFTN GP04.phx.gbl...
Lets say I have a number of web servers that all feed data to a common SQL
Server database, which processes and sends to a master SQL Server. I am
looking at a solution that involves Service Broker at the higher levels
and that all works fine. My question is: what is the recommended way to
get data from the web server to the first-tier Service Broker? I've done a
lot of searching and reading and have not found any definitive answers.
But my ideas are:

1) Write directly to the database from the web server.
I don't really like this solution because it violates the concepts OO
design and abstraction. It also doesn't give me any assurances that the
data gets moved, other than maybe some logging. It also shifts alot of the
processing onto IIS, which I would like to be as "light" as possible,
simply servicing requests.
2) Write to a local queue managed managed by a WCF service hosted in a
Windows Service.
This gives me some abstraction, but also adds some layers that may be
unnecessary. And, if I'm not mistaken, it forces me to use a local MSMQ if
I want to make sure that the messages are durable. And there is still the
question of writing to the queue - seems like I still need to do this from
the IIS hosted web application or use memory-mapping or something. Maybe
someone could elaborate on this one.
3) Install SQL Express on the web servers and use Service Broker all the
way up the line.
This seems a bit of a hack to me - to install SQL Express on the web
servers - but would work. Also, does anyone know how this impacts
licensing; is it really truly free to install Express anywhere, even if
its 50-100 web servers?

Beyond the options above, what is the recommended way to traverse that
first segment to Service Broker if one needs durable messages? What if
volatile messages are okay - should it be done a different way? I feel
pretty comfortable with Service Broker once it gets the initial data - my
issue is getting the data in the pipeline to start.

Thanks
K
Mar 19 '07 #2
By the way, here's a little extra reading on the subject:
http://msdn2.microsoft.com/en-us/arc.../bb245677.aspx
http://msdn2.microsoft.com/en-us/library/aa964144.aspx
--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Roger Wolter[MSFT]" <rw*****@online .microsoft.comw rote in message
news:FF******** *************** ***********@mic rosoft.com...
How does you middle tier normally talk to the database? If it uses TSQL
over normal SQL Client or OLEDB connections then this is the way to do the
Service Broker connection. Because the connection is transactional, if
the connection is lost the SEND will roll back and you can send it again.

If you decide to use SQL Express in the middle tier, you gain a little
more fault tolerance at the expense of a little more complexity. If your
middle tier can continue to queue messages while the database is down for
maintenance or the network isn't working, your application is
significantly more fault tolerant. I've always been a fan of reliability
and fault tolerance over OO purity and isolation.

--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Karch" <no****@absotut ely.comwrote in message
news:O9******** ******@TK2MSFTN GP04.phx.gbl...
>Lets say I have a number of web servers that all feed data to a common
SQL Server database, which processes and sends to a master SQL Server. I
am looking at a solution that involves Service Broker at the higher
levels and that all works fine. My question is: what is the recommended
way to get data from the web server to the first-tier Service Broker?
I've done a lot of searching and reading and have not found any
definitive answers. But my ideas are:

1) Write directly to the database from the web server.
I don't really like this solution because it violates the concepts OO
design and abstraction. It also doesn't give me any assurances that the
data gets moved, other than maybe some logging. It also shifts alot of
the processing onto IIS, which I would like to be as "light" as possible,
simply servicing requests.
2) Write to a local queue managed managed by a WCF service hosted in a
Windows Service.
This gives me some abstraction, but also adds some layers that may be
unnecessary. And, if I'm not mistaken, it forces me to use a local MSMQ
if I want to make sure that the messages are durable. And there is still
the question of writing to the queue - seems like I still need to do this
from the IIS hosted web application or use memory-mapping or something.
Maybe someone could elaborate on this one.
3) Install SQL Express on the web servers and use Service Broker all the
way up the line.
This seems a bit of a hack to me - to install SQL Express on the web
servers - but would work. Also, does anyone know how this impacts
licensing; is it really truly free to install Express anywhere, even if
its 50-100 web servers?

Beyond the options above, what is the recommended way to traverse that
first segment to Service Broker if one needs durable messages? What if
volatile messages are okay - should it be done a different way? I feel
pretty comfortable with Service Broker once it gets the initial data - my
issue is getting the data in the pipeline to start.

Thanks
K
Mar 19 '07 #3
OK, makes sense. Yes, in this case, my middle tier would be talking TSQL
over SQL Client. The transactional connection is good, but it only lets me
retry, while I would prefer to have the messages queued as you mention in
the second scenario. So, is this a recommended approach - to use SQL Express
along with the middle tier? Something about it seems like overkill. Does it
make any sense to use WCF with private queues on the web server and pick it
up on the middle tier, or is this just overcomplicatin g the situation? I
would like to have some fault tolerance and reliability on the web servers,
but it just seems strange to deploy SQL Express to them when maybe some
other transport might be more efficient.

"Roger Wolter[MSFT]" <rw*****@online .microsoft.comw rote in message
news:FF******** *************** ***********@mic rosoft.com...
How does you middle tier normally talk to the database? If it uses TSQL
over normal SQL Client or OLEDB connections then this is the way to do the
Service Broker connection. Because the connection is transactional, if
the connection is lost the SEND will roll back and you can send it again.

If you decide to use SQL Express in the middle tier, you gain a little
more fault tolerance at the expense of a little more complexity. If your
middle tier can continue to queue messages while the database is down for
maintenance or the network isn't working, your application is
significantly more fault tolerant. I've always been a fan of reliability
and fault tolerance over OO purity and isolation.

--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Karch" <no****@absotut ely.comwrote in message
news:O9******** ******@TK2MSFTN GP04.phx.gbl...
>Lets say I have a number of web servers that all feed data to a common
SQL Server database, which processes and sends to a master SQL Server. I
am looking at a solution that involves Service Broker at the higher
levels and that all works fine. My question is: what is the recommended
way to get data from the web server to the first-tier Service Broker?
I've done a lot of searching and reading and have not found any
definitive answers. But my ideas are:

1) Write directly to the database from the web server.
I don't really like this solution because it violates the concepts OO
design and abstraction. It also doesn't give me any assurances that the
data gets moved, other than maybe some logging. It also shifts alot of
the processing onto IIS, which I would like to be as "light" as possible,
simply servicing requests.
2) Write to a local queue managed managed by a WCF service hosted in a
Windows Service.
This gives me some abstraction, but also adds some layers that may be
unnecessary. And, if I'm not mistaken, it forces me to use a local MSMQ
if I want to make sure that the messages are durable. And there is still
the question of writing to the queue - seems like I still need to do this
from the IIS hosted web application or use memory-mapping or something.
Maybe someone could elaborate on this one.
3) Install SQL Express on the web servers and use Service Broker all the
way up the line.
This seems a bit of a hack to me - to install SQL Express on the web
servers - but would work. Also, does anyone know how this impacts
licensing; is it really truly free to install Express anywhere, even if
its 50-100 web servers?

Beyond the options above, what is the recommended way to traverse that
first segment to Service Broker if one needs durable messages? What if
volatile messages are okay - should it be done a different way? I feel
pretty comfortable with Service Broker once it gets the initial data - my
issue is getting the data in the pipeline to start.

Thanks
K

Mar 19 '07 #4
WCF with private queues will complicate the scenario and introduce
distributed transactions which have performance and reliability issues also.
I would be inclined to use Service Broker all the way out to the web server
layer and skip the middle layer if possible. With CLR stored procedures
it's generally not unreasonable to put enough logic into an activated stored
procedure to do the data validation that normally happens on the middle
tier - but that's a decision you will have to make based on the size and
complexity of your business logic.

--
This posting is provided "AS IS" with no warranties, and confers no rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Karch" <no****@absotut ely.comwrote in message
news:%2******** **********@TK2M SFTNGP05.phx.gb l...
OK, makes sense. Yes, in this case, my middle tier would be talking TSQL
over SQL Client. The transactional connection is good, but it only lets me
retry, while I would prefer to have the messages queued as you mention in
the second scenario. So, is this a recommended approach - to use SQL
Express along with the middle tier? Something about it seems like
overkill. Does it make any sense to use WCF with private queues on the web
server and pick it up on the middle tier, or is this just overcomplicatin g
the situation? I would like to have some fault tolerance and reliability
on the web servers, but it just seems strange to deploy SQL Express to
them when maybe some other transport might be more efficient.

"Roger Wolter[MSFT]" <rw*****@online .microsoft.comw rote in message
news:FF******** *************** ***********@mic rosoft.com...
>How does you middle tier normally talk to the database? If it uses TSQL
over normal SQL Client or OLEDB connections then this is the way to do
the Service Broker connection. Because the connection is transactional,
if the connection is lost the SEND will roll back and you can send it
again.

If you decide to use SQL Express in the middle tier, you gain a little
more fault tolerance at the expense of a little more complexity. If your
middle tier can continue to queue messages while the database is down for
maintenance or the network isn't working, your application is
significantl y more fault tolerant. I've always been a fan of reliability
and fault tolerance over OO purity and isolation.

--
This posting is provided "AS IS" with no warranties, and confers no
rights.
Use of included script samples are subject to the terms specified at
http://www.microsoft.com/info/cpyright.htm

"Karch" <no****@absotut ely.comwrote in message
news:O9******* *******@TK2MSFT NGP04.phx.gbl.. .
>>Lets say I have a number of web servers that all feed data to a common
SQL Server database, which processes and sends to a master SQL Server. I
am looking at a solution that involves Service Broker at the higher
levels and that all works fine. My question is: what is the recommended
way to get data from the web server to the first-tier Service Broker?
I've done a lot of searching and reading and have not found any
definitive answers. But my ideas are:

1) Write directly to the database from the web server.
I don't really like this solution because it violates the concepts OO
design and abstraction. It also doesn't give me any assurances that the
data gets moved, other than maybe some logging. It also shifts alot of
the processing onto IIS, which I would like to be as "light" as
possible, simply servicing requests.
2) Write to a local queue managed managed by a WCF service hosted in a
Windows Service.
This gives me some abstraction, but also adds some layers that may be
unnecessary . And, if I'm not mistaken, it forces me to use a local MSMQ
if I want to make sure that the messages are durable. And there is still
the question of writing to the queue - seems like I still need to do
this from the IIS hosted web application or use memory-mapping or
something. Maybe someone could elaborate on this one.
3) Install SQL Express on the web servers and use Service Broker all the
way up the line.
This seems a bit of a hack to me - to install SQL Express on the web
servers - but would work. Also, does anyone know how this impacts
licensing; is it really truly free to install Express anywhere, even if
its 50-100 web servers?

Beyond the options above, what is the recommended way to traverse that
first segment to Service Broker if one needs durable messages? What if
volatile messages are okay - should it be done a different way? I feel
pretty comfortable with Service Broker once it gets the initial data -
my issue is getting the data in the pipeline to start.

Thanks
K

Mar 19 '07 #5

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

Similar topics

2
300
by: Jason Schneekloth | last post by:
Hey all.... I'm writing an app that needs to send/recieve data from other applications running, I guess you could think of it as a data relay broker between running applications. I had planned on creating a windows service to handle this, but I found out that I cannot directly send/recieve data here, i can only signal it. First off, am I...
1
4460
by: benmorganpowell | last post by:
I have a small windows service which connects to a POP3 server at defined intervals, scans the available messages, extracts the required information and inserts the data into a SQL database. I am assuming that this is not an uncommon piece of software. I want to get an architecture that conforms as closely as possible with the...
2
2347
by: dkode | last post by:
Hello, I am laying out the architecture for a very large website that will scale to a very large degree. I have a couple of questions before I attempt to go and implement a Broker/Persistence Layer. 1. With a broker layer, does this layer sit at the same level as the Business Layer? So to speak, the presentation layer has knowledge of
0
1211
by: RAM | last post by:
Hello, I am learning SQL Server and I would like to ask you a question: what are applications of Service Broker? I would like to know in what puproses it can be used in database systems. Thank you very much for you answers /RAM/
7
3804
by: Chris Mullins | last post by:
I'm in the process of building a number of (Web) Services using .NET 3.0 and WCF. These services are intended to be deployed within the Intranet of a very, very large orginization. I need to have a discovery process by which applications can discover these services. What I really would like to avoid is static URL's scattered throughout...
3
2317
by: Joseph Geretz | last post by:
Our application is primarily VB6, however we are migrating toward .NET and a newer architecture. For the time being though, we're stuck with a hybrid approach with our ActiveX client application accessing .NET Web Services provided by the new server-side application. We like the benefits of Intellisense in the IDE. Visual Studio .NET will...
3
6601
dmjpro
by: dmjpro | last post by:
plz send me a good link which can clearify me how the J2EE framework works i want the details information .... plz help thanx
2
2120
by: fireball | last post by:
Some of my receiving service side applications usually work offline, and they only are supposed to get connected to the network once/few times a day, to send/receive Service Broker messages. Will my sending service side application (permanent connected to the network) keep retrying repeatedly to connect to the receiver? - Is retrying like...
0
1244
by: =?Utf-8?B?aWFtc2Rr?= | last post by:
I have a windows client that calls web service 1 (Broker) synchronously, web service 1 then calls web service 2 (Service) asynchronously, web service 2 sleeps its thread for 10 seconds. When I put a stopwatch on the windows client the call to web service 1 takes a fraction over 10 seconds. What I would think would happen is that I would get a...
0
7438
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...
0
7951
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
5362
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
5082
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...
0
3495
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...
0
3475
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
1926
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1051
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
0
751
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating...

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.