我知道如何以XSD格式定义类/数据结构并自动生成等效的C#类(使用xsd.exe或更精细的xsd2code.exe)。
我想用使用上面定义的数据结构的方法定义接口类。目标是使用强类型类和接口创建一些进程到进程(在同一台机器上)通信协议。
我有一个很大的沙拉,结合了XSD,WSDL,SOAP,REST等等......我应该使用哪种技术?
10倍。
答案 0 :(得分:1)
XSD用于定义数据类型,而非接口或协议。我会去混合WSDL
和XSD
。我的意思是,您创建一个定义接口和方法的WSDL,然后将这些方法的参数绑定到XSD中定义的类型,无论是在WSDL的内部还是外部。
Samples here。如您所见,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
让流程进行通信。 Here我找到了一个教程。您的骨架代码应如下所示:
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
界面(或其他),然后当您获得对骨架对象的引用时(通过,将其强制转换为IMultiplier
正如我所说,我没有使用.NET Remoting的直接经验。 如果我刚才所说的错误,请不要低估我的回答。相反,请帮助我们的朋友实现他的目标。
谢谢
答案 1 :(得分:0)
以下是我最终使用的解决方案:http://www.codeproject.com/KB/codegen/XSLCodeGen.aspx