Service Oriented Architecture Question

D

Dave Johnson

I am familiar with 3 Tier Applications Architecture & totally new to
WebServices, Is there an Architecture i Should follow when Designing
WebServices in my Application, or both my DataAccessLayer & WebService will
connect to the Database Directly??
 
P

Peter Kelcey

Dave,

You've just jump into highly volatile and complex topic. People have
been having heated debates about SOA for years now and there is still
no great consensus on what exactly it is or how it's best be
implemented. There are a ton of information pieces out there about how
to design services and implement an SOA and the amount of information
they contain is way more than I can reasonably fit in here. What I will
try to suggest is a couple of good starting points for you.

The first thing I'll stress is that "web services" do not equal
services or SOA. When we talk about SOA, we are talking about a whole
range of things such as contract-first-design, chatty versus chunky
design, services providers, dynamic discovery of services, enterprise
service buses etc. Also, SOA refers to an architecture involving
multiple applications and really shouldn't be used within the confines
of a single application. With web services, we are really just talking
about a open standards based remoting technology that allows different
systems to easily communicate with one another. Sure, web services are
one of the major building blocks of SOA, but they are only that, a
building block.

If you are looking a good start on how to design a distributed system
that uses web services to connect different layers, I will recommend
the MSDN patterns and practices documents. A lot of work has been put
into these documents and describe all kinds of best practices for build
and developing distributed systems that use web services. The first
document I'd start with is
http://msdn.microsoft.com/practices...px?pull=/library/en-us/dnbda/html/distapp.asp
Its a great reference and since you are familiar with 3-tier design,
this document will be fairly easy to understand. It should help answer
your question about database access from different tiers. I'd also
recommend that your check out the articles in the "application
integration and web services" section.
http://msdn.microsoft.com/practices/apptype/appinteg/default.aspx

If you are looking for documents on SOA, I'll just recommend reading
articles from as many different authors as you can. There are so many
different opions about this beast, that you'll need to rely on more
than just one source in order to develop an informed opion of your own.

As to my personal opinion about your design, I wouldn't have my web
services access the db directly. I'd keep the data access layer as the
single entry point into the database and I'd design web services to sit
on top of business components that access this data access layer. I.e.
Presentation -> Web Services -> business facade -> data access
components -> db.

Good luck

Peter Kelcey
 
D

Dave Johnson

i took your Advice and done some research
http://www.15seconds.com/issue/031215.htm this article "Service-Orianted
Architecture with .net" supports your design <Presentation -> Web
Services -> business facade -> data access
components -> db.>

i approve on this desgin, but what about doing

<Presentation OR Web Services -> Business facade -> DataAccess>

do think it looks better this way?

You have been a GREAT help so far, thanks a lot :)
 
P

Peter Kelcey

Dave

With regards to your proposed architecture of "<Presentation OR Web
Services -> Business facade -> DataAccess>" it depends on what you are
trying to do.

Web services are not really a suitable technology for humans to
interface directly with. Therefore, if you've got people directly using
this sytem, you would still need somekind of client to site on top of
your web services. It could be a web application, a windows application
etc. But you will need something to nicely collect information from the
user, put it into a validate SOAP message and submit it to your
underlying web service.

If another system is accessing your application, then you can of course
forgo the nice and usuable presentation layer and have that other
application direclty consume your web service.

Of course, I have seen people develop web services and then access them
directly via their browser. The asmx web service will render up a basic
HTML page that will let a user input parameters and run the web
service. However, isn't what web services are intended to do and this
technique is really best suited for testing your service while you
develop it.

Peter Kelcey
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,768
Messages
2,569,575
Members
45,053
Latest member
billing-software

Latest Threads

Top