1

Предположим, что у меня есть собственный бизнес-уровень, содержащий мои бизнес-объекты и мои бизнес-сервисы. И я решил создать «приложение SilverLight Business Application» (с SL v 4.0), и я хочу использовать свой уже использованный бизнес-уровень из приложения SL, которое планирую разработать.Как я могу реализовать существующий бизнес-уровень для приложения SilverLight 4.0?

Я знаю, что я не могу включить проект, который не является проектом SL.

Можете ли вы посоветовать мне hos, я могу это достичь?

Благодаря

ответ

3

Поскольку SL! = .NET, вам нужно собрать их в Silverlight сборки, с помощью Silverlight компилятор. Другими словами, вы не можете напрямую потреблять их без малейшего обмана.

Один из вариантов - создать проект Silverlight, а затем использовать привязку к файлам для совместного использования кодовых файлов из проекта .NET (без их дублирования). Обычный проект владеет файлами, содержащимися в нем, но «связанный» файл включен для компиляции, не будучи полностью принадлежащим проекту. Файлы связаны, перейдя в диалог «Добавить файл> Добавить существующий файл», посмотрите в нижнем правом углу, и вы увидите, что вы можете «связать» существующий файл.

Что вы можете сделать:

  • Есть свой обычный проект .NET, с вашим .cs файлами
  • Есть Silverlight проект, который ссылки на свой первый код проектов FILES

Когда вы компилируете проект Silverlight, он будет обрабатывать связанные файлы, как если бы они принадлежали проекту SL (но на вашем диске есть только одна копия внутри вашего проекта .NET).


Задача вы можете столкнуться, состоит в том, что не все типы .NET поддерживаются в Silverlight, так что если ваш бизнес-объекты содержат эти, то ваш код .NET не может скомпилировать под Silverlight. Вы можете использовать пред-компиляторные директивы, чтобы иметь 2x сигнатуры методов для этих случаев: 1x .NET и 1x SL совместимые. Вы бы установили директиву (то есть: Silverlight==True), и компилятор выбрал тот или другой.

Например:

#IF SILVERLIGHT 
    public void SomeMethod(SilverlightType someParam) 
#ELSE 
    public void SomeMethod(SomeDotNetType someParam) 
#ENDIF 

Here's a link with a walkthrough from Rocky Lhotka (автор/CSLA.net рамки дизайнер). Он упоминает использование связанных файлов и/или частичных классов для выборочной компиляции для каждой платформы.

0

Если вы используете службы RIA, вы обнаружите, что можете использовать всевозможные умные трюки на стороне сервера (включая ссылки на полные библиотеки .Net). Клиентская сторона должна использовать только библиотеки Silverlight.

Задача с Silverlight состоит в том, чтобы выявить соответствующие бизнес-правила, на стороне клиента, через разметку атрибутов RIA и пользовательские валидаторы.

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