У меня есть система XBap, разработанная как трехслойное приложение. Клиент XBap использует логику через службу WCF с использованием netTcpBinding.
Для простоты привязки данных и возможности повторного использования проверки данных, встроенной в мои бизнес-объекты, я решил ссылаться на библиотеку бизнес-объектов из клиента xBap вместо генерации прокси.
Эти объекты не реализуют никакой логики, кроме как они проверяют основные данные. Настоящая бизнес-логика реализована внутри моей службы WCF.
Теперь я сталкиваюсь с большой проблемой. Мне нужно перенести xBap на silverlight, поэтому мне нужно мое приложение silverlight. использовать ту же бизнес-логику (которая также используется в LOB-приложении winforms).
Некоторые проблемы, которые возникают:
1) Невозможно ссылаться на библиотеку бизнес-объектов из клиентского приложения silverlight, поскольку она скомпилирована как обычная dll, а не как silverlight.
2) Не могу скомпилировать ее как библиотеку silverlight, потому что я потеряю много функциональности и, очевидно, в любом случае это не очень хорошая идея. Если в будущем появится новая платформа .net, я не гарантирую, что модифицированная (silverlight) dll будет работать.
У меня была некоторая надежда, когда я обнаружил RIAServices. Я где-то читал, что могу реализовать сервис и использовать любой вид DAL. (У меня есть собственный), но я не нашел пример, показывающий, как поставить RIAServices поверх существующего бизнес-уровня. Стоит сказать, что мы не используем (и не планируем) LINQ. Каждый найденный мной пример начинал с использования RIAServices и с нуля писал бизнес-логику с помощью LINQ.
RIAServices генерирует готовый к привязке данных клиентский код, но я чувствую, что мне придется изменить весь бизнес-уровень, и это будет очень дорого.
Итак, решение, похоже, заключается в том, чтобы продолжать использовать WCF, особенно теперь, когда silverlight 3.0 поддерживает новое двоичное связывание, и работать с прокси вместо реальных бизнес-объектов.
Проблема в том, что эти прокси не включают проверку данных, уведомление об изменении свойства и отслеживание изменений, три аспекта, которые выполняет мой бизнес.
RIAServices разрешает эти и другие аспекты, но требует работы с проектами silverlight. WCF (SVCUtil.exe) генерирует прокси, но они не являются «полными» для наших нужд. Поэтому мне, кажется, придется разработать собственную утилиту для генерации прокси-серверов, принимающих бизнес-объект в качестве входных данных.
Прежде чем я начну это делать, я хотел бы знать, сталкивался ли кто-нибудь уже с этой проблемой и смог решить ее удобным и безболезненным способом.
Заранее спасибо,
Гонсало