tags:

views:

45

answers:

3

Hi All,

I'm currently looking at developing a WCF Service for the first time, but am a bit confused.

Say I've got a windows application that is going to call into this web service, that service is then going to call our data methods to retrieve and save the data.

Now, say for example we have 2 classes in our solution, Customer and Product. Do all methods within the service have to go into the same class file (e.g. MyService.svc), or can they be split into several classes replicating the main data layer, i.e. Customer.cs and Product.cs. If they can be split, how do these get called from within the windows forms application? Would each class be a different end point?

At the moment I can access the methods within the main class (e.g. MyService.svc), but I can't see any of the methods in the other classes, even though I have attributed them with "ServiceContract" and "OperationContract".

I have a feeling I'm missing something simple somewhere, just not sure what.

I would be grateful if some nice person could point me in the direction of a tutorial on doing this, as every tutorial I've found only includes the single class :)

Thanks in advance.

+1  A: 

What you need to define is Data Contracts for your service

Theoretically, these data contracts could be your business entities (since 3.5 SP1 and its WCF poco support)

It's better though to create separate entities for your service and then to create conversion classes that can convert your business entities into service entities and the other way around

vc 74
I agree, but didn't see your answer...
Lucas B
Sorry; I thought your trouble came from the fact you were exposing your business entities. Glad to see you've been able to find an answer
vc 74
A: 

Actually, after loads of searching, I finally seemed to find what I was looking for just after posting my question (typical).

I've found the following page - http://www.scribd.com/doc/13136057/ChapterImplementing-a-WCF-Service-in-the-Real-World

Although I've not gone through it yet, it does look like it will cover what I'm after.

Apologies for wasting anyones time :) Hopefully this will be useful to someone else looking for the same thing.

RedMan
A: 

It sounds like you only need one service. However, if you need to create multiple services. Consider this as an example.

[ServiceContract(Name = "Utility", Namespace = Constants.COMMON_SERVICE_NAMESPACE)]
public interface IService

[ServiceContract(Name="Documents", Namespace = Constants.DOCUMENTS_SERVICE_NAMESPACE)]
public interface IDocumentService

[ServiceContract(Name = "Lists", Namespace = Constants.LISTS_SERVICE_NAMESPACE)]
public interface IListService

Remember that you can create multiple data contracts inside a single service, and it is the best solution for a method that will require a reference to Customer(s) and Product(s).

It might help to take a look at MSDN's data contract example here.

Lucas B