We have two modules: D and S. S has a Web Service interface, which is being used by D.
S's responsibility is managing a domain of objects held in a folder-like structure. So, it contains a method like:
object Get(Path path), where
Path DTO represents a collection of strings, which are components of a path (i.e. to get an object stored under
/x/y/z you call
path containing an array
['x', 'y' ,'z']). Conceptually path is an identifier of an object.
One of D's responsibility is to present charts with data acquired from some of S's objects. D allows users to choose desired S's object using a tree navigation view. So effectively, a user chooses a path, which is an "address" from which S's object needs to be retrieved from S.
The problem is that we don't want D to have "arrays of strings" floating around it.
However, we also don't want D to understand how path's work (i.e. what the separator is, that empty path components are not allowed, there must a leading separator to start from root, etc.) thus effectively duplicating S's logic.
And also, we don't want to have a dependency from D to S stronger than Web Service, because that's one of the point of Web Service's.
We obviously have some other ideas, but unsure about any of them.