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 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
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
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
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 This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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...
|
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...
|
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
|
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/
|
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...
| |
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...
|
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
|
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...
|
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...
|
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...
|
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...
| |
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...
|
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...
|
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...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
|
by: muto222 |
last post by:
How can i add a mobile payment intergratation into php mysql website.
| |
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...
| |