views:

200

answers:

3

Hi,,,

I’m working on an application which has been designed using n-tire application architecture .The application was developed in the .NET platform utilizing C#,VB.NEt, Framework 3.5, Dataset, WCF, asp.net update panel, JavaScript ,Josn, 3rd Party tools. my current proposed layout is such

presentation layer -> Business Logic -> WCF -> DAL->Data access

The point Is: Is the above layout the right way to build SOA systems ?

As always, your advice is greatly appreciated

A: 

Your services should be business operations, not data operations. A better version of your design would be: presentation layer -> WCF -> Business Logic -> Data access.

N-tier / layering is a pretty dated concept these days. It always broke down. Instaed, think of your software as a number if interacting services.

James L
+1  A: 

Looks like it COULD be correct although I'd put WCF between your Pres and Biz layers too. Also, don't be afraid of having a non-linear path for your SOA architecture (i.e. having side services like an "EmailService" and "WeatherDataService" that come from the side of your N-Tier path. Obviously the WeatherDataService would come from the side of your DAL but the EmailService might come from the side of your Biz layer.

Some great links for you:

Jaxidian
+2  A: 

This depends on your definition, see Fowler's comments.

Generally, in order to get the most benefit from something SOA, you're services should be designed to be reusable by multiple consumers. This means placing your business logic "beneath" your WCF layer. Then you can have, for instance, a Silverlight client, a WPF client, etc. using the same services and business logic.

Change your scenario to:

Multiple Presentation Layers -> WCF -> Business Logic -> DAL-> Data access

greglev
Can I have oracle application or java applicatin to use the same services and business logic too ?
kathy
Yes, Kathy. The architecture would allow you to consume the services from virtually any client. You just need to make sure that your services are created using a format that can be understood by other systems. The only worry I would have about your scenario is how .NET DataSets are serialized.
greglev
Actually, I'm using a Dataset and a DataTable to get the data form the stored procedure in the database.Is that may cause any problem?
kathy
You just have to make sure that the DataSet/DataTable serialize the way you want. I think using a straightforward DataSet with one DataTable should be no problem, but you'll have check within your environment. I was cautioning for the cases when the DataSet has multiple DataTables with relationships.
greglev