Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / SL3+WCF: повторное использование типов в прокси-классах / 3 сообщений из 3, страница 1 из 1
19.03.2010, 09:32
    #36530063
Comanche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL3+WCF: повторное использование типов в прокси-классах
Итак, есть SL3 приложение, использующее WCF-службы и разрабатываемое под VS2008/SP1. Никакие фреймворки типа RIA Services не используются.
Веб-проект этого SL-приложения содержит (в числе прочего):
Класс OwnCompany со скалярными свойствами ID, Code и Name.

Класс ClientAccount с несколькими скалярными свойствами (ID, Name etc) и одним нескалярным свойством (OwnCompany, типа OwnCompany, упомянутого выше)

Service contract IClientAccounts, содержащий (в числе прочего) operation contract List<ClientAccount> GetClientAccounts();

Service contract IOwnCompanies, содержащий (в числе прочего) operation contract List<OwnCompany> GetOwnCompanies();

Два класса - ClientAccounts and OwnCompanies - реализующих вышеупомянутые интерфейсы (сервисные контракты).

Я иду в клиентский проект SL-приложения и добавляю ссылки на обе службы, обзывая ссылки ClientAccounts_ServiceReference и OwnCompanies_ServiceReference, соответственно. Теперь если я открою оба сгенерированных файла Reference.cs, то увижу ДВА разных типа OwnCompany - один в файле Reference.cs расположенном под ClientAccounts_ServiceReference (и в неймспейсе MyApp.ClientAccounts_ServiceReference) и другой - в файле Reference.cs расположенном под OwnCompanies_ServiceReference (и в неймспейсе MyApp.OwnCompanies_ServiceReference).

Понятно, что из-за этого у меня проблемы, поскольку это два РАЗНЫХ типа. Мне же, разумеется, хотелось бы получить один тип OwnCompany на все мои клиентские прокси-классы. Можно ли этого как-то добиться?!

PS: конечно, мне известна галочка "Reuse types in referenced assemblies" в настройках службы, но я не уверен, что она меня выручит. Ведь (AFAIK) её смысл в том, чтобы и клиентская сборка, и серверная ссылались на одну и ту же сборку, а в последней были бы определены общие типы... но SL3 и FW3.5 бинарно не совместимы, поэтому смысла вытаскивать мои entity-типы в отдельную сборку нет! Далее, у утилиты svcutil вроде есть ключик "/r" - как раз для решения проблем, подобных моей, - но я не представляю, какова best practice использования этой утилиты в Студии напрямую, минуя Студийный обёртыш, вызываемый по меню "Add service reference". Подозреваю, что после запуска svcutil придётся ещё делать кучу всего руками... так ли это?!

PPS: сливать два моих сервис-контракта в один - не вариант, т.к. на самом деле их не два, а больше, и получим в итоге одну службу-помойку вместо набора из нескольких небольших служб, чётко разграниченных по функционалу.
...
Рейтинг: 0 / 0
19.03.2010, 17:54
    #36531688
Comanche
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL3+WCF: повторное использование типов в прокси-классах
Нашёл простое решение: http://10rem.net/blog/2009/07/13/sharing-entities-between-wcf-and-silverlight
...
Рейтинг: 0 / 0
22.03.2010, 17:05
    #36535163
LR
LR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SL3+WCF: повторное использование типов в прокси-классах
ComancheНашёл простое решение: http://10rem.net/blog/2009/07/13/sharing-entities-between-wcf-and-silverlight
Угу, тоже так делаю, подсмотрел здесь - Sharing Business Logic Between The Server And Client . Кстати, делаю эти классы partial, и "довешиваю" по надобности серверными и клиентскими "собачьими хвостами".

What’s New in Silverlight 4?The .NET Common Runtime (CLR) now enables the same compiled code to be run on the desktop and Silverlight without change. - надо понимать такой проблемы уже не будет?
...
Рейтинг: 0 / 0
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / SL3+WCF: повторное использование типов в прокси-классах / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]