我知道如何以 XSD 格式定义类/数据结构并自动生成等效的 C# 类(使用 xsd.exe 或更详细的 xsd2code.exe)。
我想使用利用上述定义的数据结构的方法来定义接口类。目标是创建一些具有强类型类和接口的进程到进程(在同一台机器上)通信协议。
我脑子里有一个大沙拉,由 XSD、WSDL、SOAP、REST 等组合而成。我应该使用哪种技术?
10x。
XSD 用于定义数据类型,而不是接口或协议。我会去混合
WSDL
和 XSD
。我的意思是,您创建一个定义接口和方法的 WSDL,然后将这些方法的参数绑定到 XSD 中定义的类型,无论是在 WSDL 的内部还是外部。
样品在这里。正如您所看到的,
logbus-management.wsdl
不仅包含自己的 XSD,还强烈引用 filter
中的 logbus-filters.xsd
命名空间。
从该 WSDL,您可以使用(在我的例子中)
wsdl /serverInterfaces logbus-management.wsdl logbus-filters.xsd
并将 C# interface
和所有数据类型放入一个 C# 源代码文件中。如果您还通过 Visual Studio 生成代理,则可以获得 SOAP。您可能需要一个 Web 服务(即 ASP.NET,可能在 serverless mode
中),但我不确定您是否可以通过远程处理运行 SOAP(您应该)或使用 WCF。
您现在需要使用
Remoting
让进程进行通信。 在这里我找到了一个教程。你的骨骼代码应该是这样的:
using System;
namespace addsubs
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public class addsubs : MarshalByRefObject, IMultiplier //what you compiled from WSDL
{
public int product;
public int multiply(int a, int b)
{
product = a * b;
return product;
}
}
}
两个应用程序必须共享
IMultiplier
接口(或其他),然后,当您获得对骨架对象的引用时(通过.NET应该为您创建的本地代理),将其投射到 IMultiplier
(我没有直接使用 .NET Remoting 的经验)。