如何在WPF桌面应用程序中开发公共API对象模型,以便从另一个.NET桌面应用程序实现进程外自动化 我们正在使用Windows演示基金会开发一个大型桌面应用程序。目前,该应用程序仅供内部使用,但最终将作为商业产品销售。我目前正在使用m-V-VM设计模式的一种变体,以使尽可能多的代码远离UI组件,如windows、用户控件。我知道在某个时候,我们将要公开一个公共API,以允许客户扩展应用程序,甚至可能使用另一个.NET应用程序中的公共API来自动化进程外的应用程序。我没有很多为桌面应用程序设计公共API的经验,所以我正在寻找有关最佳实践的信息

如何在WPF桌面应用程序中开发公共API对象模型,以便从另一个.NET桌面应用程序实现进程外自动化 我们正在使用Windows演示基金会开发一个大型桌面应用程序。目前,该应用程序仅供内部使用,但最终将作为商业产品销售。我目前正在使用m-V-VM设计模式的一种变体,以使尽可能多的代码远离UI组件,如windows、用户控件。我知道在某个时候,我们将要公开一个公共API,以允许客户扩展应用程序,甚至可能使用另一个.NET应用程序中的公共API来自动化进程外的应用程序。我没有很多为桌面应用程序设计公共API的经验,所以我正在寻找有关最佳实践的信息,.net,wpf,api,desktop-application,object-model,.net,Wpf,Api,Desktop Application,Object Model,以下是我目前的一些问题: 1如何设计WPF应用程序,使其能够从运行在自己进程中的另一个.NET应用程序中自动脱离进程?例如,假设客户有一个正在运行的控制台应用程序,他们希望自动打开WPF应用程序,然后在WPF应用程序中打开一个特定窗口。我不知道如何才能做到这一点。如果我有一个正在运行的控制台应用程序,并且我试图通过代码创建WPF应用程序的新实例,我将得到以下错误:无法在同一AppDomain中创建多个System.Windows.application实例。我理解发生此错误是因为控制台应用程序不

以下是我目前的一些问题:

1如何设计WPF应用程序,使其能够从运行在自己进程中的另一个.NET应用程序中自动脱离进程?例如,假设客户有一个正在运行的控制台应用程序,他们希望自动打开WPF应用程序,然后在WPF应用程序中打开一个特定窗口。我不知道如何才能做到这一点。如果我有一个正在运行的控制台应用程序,并且我试图通过代码创建WPF应用程序的新实例,我将得到以下错误:无法在同一AppDomain中创建多个System.Windows.application实例。我理解发生此错误是因为控制台应用程序不允许WPF应用程序在其当前AppDomain中启动,但我真正希望的是WPF应用程序在其自己的进程中运行,而.NET控制台应用程序通过公共API对其进行控制

2我知道我所要求的与Excel automation有些相似,后者使用COM+允许Excel在进程之外运行。然而,Excel是用非托管代码编写的,我们的WPF应用程序显然是100%托管代码。我真的需要借助COM+来允许WPF桌面应用程序通过另一个.NET应用程序的公共API对象模型进行进程外控制吗

3如果我想让我的应用程序通过公共API实现自动化,我应该研究.NET远程处理吗?或者,.NET远程处理是否被视为过时

4我非常了解如何允许使用在运行时加载的动态加载项。但是,我仍然需要一个公共API,外接程序中的代码可以使用它来操作WPF应用程序。关于桌面应用程序的API设计,有哪些好的资源

我感谢您的反馈。很难找到有关使用公共API开发.NET桌面应用程序的信息,该API允许从另一个.NET应用程序实现自动化

谢谢,
Chris.

是的,办公自动化模式仍然是实现过程外自动化的主要方式。最重要的是,几乎任何语言都支持它。在.NET中实现起来并不容易,它不支持进程外的即时COM激活。开始了解如何使用COM+进行此操作


是的,如果你的客户端是.NET应用程序,远程处理当然也会起作用。它并不完全过时,但实际上已经被WCF取代。

谢谢。所以,我说基本上有两个相关的选项可供选择,这将允许我实现WPF应用程序的进程外自动化,对吗?COM+或.NET远程处理