WCF Services - разбиение кода на несколько классов - PullRequest
0 голосов
/ 24 сентября 2010

Я в настоящее время смотрю на разработку службы WCF впервые, но я немного сбит с толку.

Допустим, у меня есть приложение для Windows, которое собирается вызывать этот веб-сервис, этот сервисЗатем будет вызывать наши методы данных для извлечения и сохранения данных.

Теперь, скажем, например, у нас есть 2 класса в нашем решении, Клиент и Продукт.Все ли методы внутри службы должны входить в один и тот же файл класса (например, MyService.svc), или они могут быть разбиты на несколько классов, дублирующих основной слой данных, т.е. Customer.cs и Product.cs.Если их можно разделить, как их вызвать из приложения Windows Form?Будет ли каждый класс иметь разные конечные точки?

В данный момент я могу получить доступ к методам в основном классе (например, MyService.svc), но я не вижу никаких методов в других классах, дажехотя я приписал их "ServiceContract" и "OperationContract".

У меня такое ощущение, что где-то упускаю что-то простое, просто не знаю, что именно.

Я был бы признателен, если бы какой-нибудь приятный человек мог указать мне направление обучения, как это делается, поскольку каждый найденный мной урок включает только один класс:)

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 24 сентября 2010

Что вам нужно определить - это контракты на предоставление данных для вашей услуги

Теоретически, этими контрактами на данные могут быть ваши бизнес-объекты (начиная с 3.5 SP1 и его поддержки WCF poco)

Хотя лучше создать отдельные сущности для вашей службы, а затем создать классы преобразования, которые могут преобразовывать ваши бизнес-сущности в сущности службы и наоборот

0 голосов
/ 24 сентября 2010

Похоже, вам нужен только один сервис.Однако, если вам нужно создать несколько сервисов.Рассмотрим this в качестве примера.

[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

Помните, что вы можете создавать несколько контрактов данных внутри одной службы, и это лучшее решение для метода, который потребует ссылки на Customer(и) и Продукт (ы).

Может быть полезно взглянуть на пример контракта данных MSDN здесь .

0 голосов
/ 24 сентября 2010

На самом деле, после множества поисков, я наконец-то, казалось, нашел то, что искал, сразу после публикации своего вопроса (типично).

Я нашел следующую страницу - http://www.scribd.com/doc/13136057/ChapterImplementing-a-WCF-Service-in-the-Real-World

Хотя я еще не прошел через это, похоже, он покроет то, что мне нужно.

Извиняюсь за потраченное время :) Надеюсь, это будет полезно для тех, кто ищет то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...