从 XSD 自动生成 C# 接口(带有函数原型)?

问题描述 投票:0回答:2

我知道如何以 XSD 格式定义类/数据结构并自动生成等效的 C# 类(使用 xsd.exe 或更详细的 xsd2code.exe)。

我想使用利用上述定义的数据结构的方法来定义接口类。目标是创建一些具有强类型类和接口的进程到进程(在同一台机器上)通信协议。

我脑子里有一个大沙拉,由 XSD、WSDL、SOAP、REST 等组合而成。我应该使用哪种技术?

10x。

c# interface methods xsd code-generation
2个回答
1
投票

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 的经验)。


0
投票

这是我最终使用的解决方案:http://www.codeproject.com/KB/codegen/XSLCodeGen.aspx

© www.soinside.com 2019 - 2024. All rights reserved.