Открытая структура - веб-сервис WCF - PullRequest
0 голосов
/ 24 июля 2009

У меня есть отдельная сборка (ссылка WebService), в которой я создал класс (скажем, ABC) и коллекцию этого класса (ABCCollection: IList где T: ABC). Теперь, когда я создаю прокси-файлы (output.config и Service1.cs), определение этих двух классов не раскрывается. Вместо этого ABCCollection выставляется в Servic1.cs как ABCCollection4IP3.

Пожалуйста, дайте мне знать возможную причину этой проблемы ..

Ответы [ 2 ]

0 голосов
/ 24 июля 2009

Рекомендуется при проектировании службы WCF разбивать проект на отдельные сборки:

Сборка SomeProject.ServiceContract

Эта сборка содержит ваш контракт на обслуживание (только интерфейсы).

Пример:

[ServiceContract (...)]
public interface ICan {

   [ServiceOperation (...)]
   void EatCandies (MyListOfCandies candies);

}

Сборка SomeProject.DataObjects

Эта сборка содержит все ваши объекты данных, которые используются вашимконтракт на обслуживание.

Пример:

[DataObject]
public class MyListOfCandies : List<Candy> {
    ...
} 

В вашем проекте, который использует ваш веб-сервис, сделайте ссылку на сборку "SomeProject.DataObjects", а затем добавьте свой веб-сервис. Вы увидите, что Visual Studio больше не будет генерировать объекты-заглушки, а будет использовать вашу реализацию.

Вы можете сделать то же самое со сборкой ServiceContract. Таким образом, вы все еще можете использовать веб-сервисы, но при изменении интерфейса вы получите ошибки компиляции.

0 голосов
/ 24 июля 2009

Они не предназначены для того же типа. Это по замыслу. Подумайте, как это будет работать, если ваш сервис работает в .NET, а ваш клиент в Java. Это были бы два разных типа.

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