Как я могу реализовать свой существующий бизнес-уровень в приложении SilverLight 4.0? - PullRequest
1 голос
/ 20 сентября 2010

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

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

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

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

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

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

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

Когда вы компилируете проект 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

Вот ссылка спрохождение от Rocky Lhotka (автор / дизайнер фреймворка CSLA.net).Он упоминает об использовании связанных файлов и / или частичных классов для выборочной компиляции для каждой платформы.

0 голосов
/ 20 сентября 2010

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

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

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

...