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

Posted

技术标签:

【中文标题】如何将现有的业务层实施到 SilverLight 4.0 应用程序?【英文标题】:How can I implement my existing Business Layer to a SilverLight 4.0 Application? 【发布时间】:2011-04-14 15:34:53 【问题描述】:

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

我知道我不能包含非 SL 项目的项目。

你能告诉我我能做到这一点吗?

谢谢

【问题讨论】:

【参考方案1】:

由于 SL != .NET,您需要使用 Silverlight 编译器在 Silverlight 程序集中编译它们。换句话说,你不能不花点小技巧直接消费它们。

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

然后你可以做什么:

拥有普通的 .NET 项目和 .cs 文件 有一个 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 框架设计师)。他提到使用链接文件和/或部分类为每个平台选择性地编译。

【讨论】:

【参考方案2】:

如果您使用 RIA 服务,您会发现您可以在服务器端执行各种巧妙的技巧(包括链接到完整的 .Net 库)。只有客户端必须使用 Silverlight 专用库。

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

在实践中,您会发现客户端规则与服务器端规则可能略有不同,因此稍微重新考虑客户端上实际需要验证的内容并不是一件坏事。

【讨论】:

以上是关于如何将现有的业务层实施到 SilverLight 4.0 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

win10 silverlight环境配置

如何将现有的地理服务器独立应用程序迁移到 Web 存档?

如何手动将现有的配置文件和证书添加到 fastlane 匹配?

Azure 可以实现 3 层应用程序架构?

如何让一个现有的程序集运行在Silverlight环境中

如何将现有的非文档核心数据存储转换为 uimanageddocument?