簡體   English   中英

gSoap接口之間的共享數據類型

[英]gSoap shared data types between interfaces

我正在嘗試實現兩個Windows服務,每個服務都是自己的gSoap接口,並且都是每個接口的客戶端和服務器。 所以我的問題是我在兩個接口(帶有成員的類)中使用相同的數據類型,並使用soapcpp2.exe -q選項生成c ++代碼,這將創建兩個不同的命名空間,這很好,它可以工作,但問題是由於名稱空間分離,兩個接口中應該相同的數據類型現在是不同的,但是如果我刪除名稱空間,我將發生沖突,因為共享數據類型在兩個接口中具有相同的名稱。

“問題:

interface 1:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns1__getAddress(xsd__Address& ret);

---
interface 2:
---
>class xsd__Address 
{ 
   char *email; 
   char *url; 
}; 

>int ns2__setAddress(xsd__Address& ret);

---

在每個頭文件的定義之后我用soapcpp2.exe編譯它,例如:

soapcpp2.exe -qintf1 -n xxxx //用於接口1

soapcpp2.exe -qintf2 -n xxxx //用於接口2

所以當我的項目中使用兩個接口(接口1和接口2)時,我需要這樣的東西:

intf1::Interface1 int1;
int1.endpoint="xxx";
intf1::ns__Address address;
int1.ns1__getAddress(address);

intf2::Interface1 int2;
int2.endpoint="xxx";
int2.ns2_setAddress(address); //this don't compile like i was expecting because to the compiler they are not the same object (and it is wright...)

問題:

是否可以在兩個或更多接口之間共享數據類型? 是? 這是如何實現的?

如果不是,實施這個的最佳解決方案是什么?

最后我使用gSOAP(2008?),它沒有為共享結構提供任何靈活性。 如果今天可能在2013年,我無法發表評論。

但是,作為一種快速解決方法,您可以嘗試將兩個WSDL合並為一個(例如,作為構建的一部分),然后生成統一的SOAP堆棧。

您已經有兩種可能的解決方案:1。使用命名空間並以某種方式處理正式不同的數據類型。 2.合並WSDL文件並僅針對結果運行gSOAP編譯器一次。

我在2015年花了幾個星期試圖找到一個更好的解決方案,但沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM