У меня есть следующая структура проекта:WCF повторное использование типов в той же библиотеке
- Api Project: Содержит WCF SVC конечных точек
- ClientServer проекта Библиотека: Содержит классы, которые используются сервером
Что я хочу сделать, это распространять мою библиотеку ClientServer как всеохватывающую оболочку API, которую клиенты могут использовать для подключения к API и получения информации.
Поскольку API использует типы, определенные в библиотеке ClientServer я хотел бы надеяться, что добавление ServiceReference в библиотеке ClientServer бы понять, что типы возвращаемых API фактически из тех же библиотек, как ссылки будут.
Причина, по которой я делаю это, заключается только в том, что я должен определять классы, которые отправляются на сервер и с сервера в одном месте, а также предоставлять встроенный механизм для использования API без каких-либо знаний от как он соединяет и без и дополнительные библиотеки зависимостей (например, выделенная библиотека моделей).
Ниже основной пример того, как я хочу это работать:
ClientServer Библиотека:
public class Person {
public string Name { get; set; }
public int Age { get; set; }
.....
}
[ServiceContract]
public interface IPeopleService {
[OperationContract]
public Person[] Find(Person person);
}
Api Project
public class PeopleService : ClientServerLibrary.IPeopleServer {
public ClientServerLibrary.Person Find(ClientServerLibrary.Person person) {
// implementation for finding people based on the input person criteria.
}
}
Учитывая приведенный выше пример Я хочу добавить ссылку на PeopleSer заместитель в библиотеку ClientServer так, что люди, которые используют мою библиотеку можно сделать что-то вдоль линий:
PeopleServiceClient people = new PeopleServiceClient() // Generated from the service references
// Here "Person" needs to be of type ClientServerLibrary.Person
Person person = people.Find(new Person() { Name = "Gary" });
Но в настоящее время его регенерирующие все классы. Я пробовал тикать и развязывать все варианты в «Добавить служебный диалог», но его всегда тот же результат.
Надеюсь, я хорошо объяснил свои намерения? Спасибо.
EDIT: Все проекты используют C# .NET v4, поэтому никаких расхождений нет.
Веб-сервисы не обязательно должны быть такими же сложными, как и WCF. Используйте [ServiceStack] (https://servicestack.net/) – theMayer
@ rmayer06 Спасибо за ссылку, но, к сожалению, использование другой структуры не является вариантом atm. Особенно тот, который стоит 200 долларов за разработчика. Спасибо, в любом случае, оцените ввод. –
@ rmayer06 Кроме того, проблема не нужна со стороны службы, я ищу средство для создания библиотеки-обертки, которая повторно использует существующие типы, а не генерирует их собственные. –