如何将现有业务层实现到SilverLight 4.0应用程序?

时间:2010-09-20 11:47:56

标签: .net asp.net silverlight silverlight-4.0 business-logic-layer

让我们假设我有自己的业务层,其中包含我的业务对象和我的业务服务。我决定创建一个“SilverLight业务应用程序”(使用SL v 4.0),我想使用我计划开发的SL应用程序中已经使用的业务层。

我知道我不能包含一个不是SL项目的项目。

你能告诉我我能做到吗?

由于

2 个答案:

答案 0 :(得分:3)

由于SL!= .NET,您需要使用Silverlight编译器在Silverlight程序集中编译它们。换句话说,你不能在没有一点诡计的情况下直接消费它们。

一种选择是创建一个Silverlight项目,然后使用文件链接来共享.NET项目中的代码文件(不要复制它们)。普通项目拥有其中包含的文件,但包含“链接”文件以进行编译,而不是项目完全拥有。通过转到“添加文件>添加现有文件”对话框链接文件,查看右下角,您将看到可以“链接”现有文件。

然后你可以做什么:

  • 使用您的.cs文件
  • 拥有正常的.NET项目
  • 拥有一个Silverlight项目,链接到您的第一个项目代码文件

当您编译Silverlight项目时,它会将链接文件视为属于SL项目(但在您的驱动器上,.NET项目中只有一个副本)。


您可能遇到的一个挑战是Silverlight中并不支持所有.NET类型,因此如果您的业务对象包含这些类型,那么您的.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框架设计师)。他提到使用链接文件和/或部分类来为每个平台选择性地编译。

答案 1 :(得分:0)

如果你使用RIA服务,你会发现你可以做各种聪明的技巧服务器端(包括链接到完整的.Net库)。只有客户端才能使用仅限Silverlight的库。

Silverlight的挑战实际上是通过RIA属性标记和自定义验证器向客户端公开适当的业务规则。

在实践中你会发现客户端规则与服务器端的区别可能有所不同,所以稍微重新思考一下客户端实际需要验证的内容并不是一件坏事。