Как использовать устаревшую бизнес-логику из приложения silverlight? - PullRequest
3 голосов
/ 17 июля 2009

У меня есть система 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) генерирует прокси, но они не являются «полными» для наших нужд. Поэтому мне, кажется, придется разработать собственную утилиту для генерации прокси-серверов, принимающих бизнес-объект в качестве входных данных.

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

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

Гонсало

1 Ответ

1 голос
/ 20 июля 2009

Проверьте этот блог и пример - Пример бизнес-приложений для Silverlight 3 RTM и .NET RIA Services Июльское обновление: часть 8: Источник данных на основе WCF .

Это показывает написание DomainService с использованием .NET RIA Services, который предоставляет операции и модель клиенту Silverlight и, в свою очередь, работает против службы WCF.

Вам не нужно менять бизнес-логику. Служба DomainService в качестве слоя будет использовать его повторно, и это будет иметь смысл, если вы не сможете предоставлять свои бизнес-логические / WCF-сервисы как есть клиентам Silverlight ...

Надеюсь, это поможет.

...