【问题标题】:Porting Silverlight to WPF将 Silverlight 移植到 WPF
【发布时间】:2016-07-13 22:52:57
【问题描述】:

我有一个大型 Silverlight LOB 应用程序,我正试图将它移植到桌面 WPF 应用程序(因为 Silverlight 的死机缓慢。)

xaml 和 c# 代码移植很好,但原始应用程序使用 WCF RIA 服务。 (超过 30,000 行。)我的问题是,我可以在我的 WPF 应用程序中使用相同的 WCF RIA 服务吗?

谢谢

【问题讨论】:

    标签: c# wpf silverlight wcf-ria-services porting


    【解决方案1】:

    这里有一些资源可以用来决定你是否想走这条路

    How to access a WCF RIA web service from a WPF client application

    How to use WCF RIA SERVICES with WPF application?

    How to open a WCF RIA Services application to other type of clients: the SOAP endpoint (3/5)

    他们主要围绕:

    1. 向 WCF RIA Web 服务公开 SOAP 端点

    2. 从 WPF 将 WCF RIA 服务作为 WCF Web 服务访问

    3. 使用 WCF SoapClient 访问 WCF RIA DomainService

    【讨论】:

      【解决方案2】:

      是的,你可以像我以前那样做,但是因为你只是点击端点并有效地执行 get 或 post,你失去了 ria wcf 服务附带的更改跟踪功能。

      【讨论】:

        【解决方案3】:

        在没有实际 RIA 服务客户端的情况下,我不同意其他回答者倾向于将 RIA 服务用于 WPF:如果您不按照他们的建议使用实际的 RIA 服务客户端组件,那通常意味着重写大部分无论如何,您在客户端上的数据处理代码。

        通常,自动生成的类在 RIA 服务应用程序中随处使用,并且它们的行为不容易重塑。事实上,这真的很难做到,你最好重写大部分内容。例如,您的应用是否没有将保存按钮的Disabled 属性绑定到XyzContext.HasChanges

        如果您的应用程序是典型的,那么您确实需要真正的 RIA Serives 客户端来获得干净的端口。

        幸运的是,RIA Services 已经开源,并且 WPF 支持也在他们的路线图上:OpenRiaServices

        我从未使用过它,我感觉这方面的进展有点慢,但是,根据你自己的喜好,使用它可能是一个现实的选择。你只需要期望通过这样做有点靠自己。

        另外,您是否使用任何依赖 RIA 服务的第三方库?例如,如果您使用 DevExpress,您还必须移植他们使用 RIA 服务的组件(RiaInstantFeedbackDataSource 等)。

        如果您尝试过,请在评论中说明效果。我自己也有一个大小相同的 RIA 服务应用程序。

        【讨论】: