---
title: "Using SOA on existing N-tier applications"
url: "https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.md"
canonical: "https://osherove.com/blog/2004/1/17/using-soa-on-existing-n-tier-applications.html"
published: "2004-01-17T20:58:00"
updated: "2004-01-17T20:58:00"
tags: [".Net Original"]
author: "Roy Osherove"
description: "Udi Dahan writes very eloquently and shows a simple implementation example using Service Oriented Architecture. While I agree with the main theme, I can't help but wonder, What happens when you need to introduce the SOA…"
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# Using SOA on existing N-tier applications

By Roy Osherove January 17, 2004 In [.Net Original](https://osherove.com/blog/category/net-original)

**Historical article** · Originally published January 17, 2004; technical details may be outdated.

[Udi Dahan](http://udidahan.weblogs.us/) writes very eloquently and [shows a simple implementation example](http://udidahan.weblogs.us/archives/012683.html) using Service Oriented Architecture.

While I agree with the main theme, I can't help but wonder, What happens when you need to introduce the SOA theme on an existing N-tier application?  Udi recommends:

"_step 1 is to create a new layer, called Entities ( or something else if you prefer ) and copy all the classes of your BL that are part of the domain model to it. Next, remove all methods from those classes_"

If I got this correctly this does not take into account a (probable) situation in which the application needs to **add** services to it's functionality while keeping the current behavior for existing clients. You can't just move half of your logic layer into a different one. Instead it seems to me that a services layer can be put **on top** of the existing logical layer as an _optional_ way to communicate from the client. This way existing client applications that used the N-tier model successfully can keep using the logic layer directly, while the services layer allows remote clients access the logical functionality using a fixed set of one-entry point classes, much like Udi's description. Am I missing something here?

## More in .Net Original

[All posts in .Net Original](https://osherove.com/blog/category/net-original)

- Jan 20, 2004

    ### [Is SmallTalk a real option?](https://osherove.com/blog/2004/1/20/is-smalltalk-a-real-option.html)

- Jan 17, 2004

    ### [Learning from mistakes: the Don Quixote pattern](https://osherove.com/blog/2004/1/17/learning-from-mistakes-the-don-quixote-pattern-1.html)

- Jan 16, 2004

    ### [Three free recipes from "ADO.NET Cookbook"](https://osherove.com/blog/2004/1/16/three-free-recipes-from-quotadonet-cookbookquot.html)

- Jan 10, 2004

    ### [Service announcement: Source code for MSDN articles now available](https://osherove.com/blog/2004/1/10/service-announcement-source-code-for-msdn-articles-now-avail.html)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
