C# 作为插件加载不同web引用的结构
我们在C#NET中开发了一个应用程序,它使用SOAP将数据(客户、订单)同步到PHP电子商务应用程序 PHP应用程序的WSDL作为.NET2.0Web引用添加到我们的应用程序中,因此.NETFramework生成与SOAPWeb服务通信的类和函数。 例如,我们可以发送如下股票信息:C# 作为插件加载不同web引用的结构,c#,.net,design-patterns,web-reference,C#,.net,Design Patterns,Web Reference,我们在C#NET中开发了一个应用程序,它使用SOAP将数据(客户、订单)同步到PHP电子商务应用程序 PHP应用程序的WSDL作为.NET2.0Web引用添加到我们的应用程序中,因此.NETFramework生成与SOAPWeb服务通信的类和函数。 例如,我们可以发送如下股票信息: catalogInventoryStockItemUpdateEntity stock = new catalogInventoryStockItemUpdateEntity(); stock.is_in_stock
catalogInventoryStockItemUpdateEntity stock = new catalogInventoryStockItemUpdateEntity();
stock.is_in_stock = 1;
stock.is_in_stockSpecified = true;
stock.qty = "10";
webserv.catalogInventoryStockItemUpdate(sessionid, itemcode, stock);
这很好,但是我们经常遇到这样的情况:我们的一个客户在WSDL中定义了其他(非标准)字段,并且希望在同步中使用这些字段。
我们目前的做法是为该客户创建一个新的代码分支,并更新web引用以使用客户的特定WSDL
为了防止我们得到一长串无法维护的软件分支,我计划对我们的应用程序的结构进行彻底检修。
现在我想知道处理这个问题的最佳结构是什么。我想把web引用放在它自己的类中并动态加载这个DLL,所以如果客户有一个非标准的WSDL,我们可以创建它自己的类并将它作为“插件”加载到我们的软件中。但是(例如)catalogInventoryStockItemUpdate中的附加字段在应用程序的主要部分中仍然不可用
是否有任何工具可以帮助实现这一目标?我希望有一个用于同步的主应用程序,并将所有特定于客户的映射和对WSDL的引用放在一个单独的类/项目中。首先,为您可以使用的应用程序添加插件支持。如果您受限于使用.NET 2.0,那么还有其他自定义方法来发现和加载插件(通过单独的应用程序域,或者直接将插件加载到主应用程序域) 至于设计,我会制作每个插件:
10
分配给stock.qty
sessionId
,stock
,等等)IStockInfo
接口,每个插件都应该受到约束,以提供自己的实现。当插件处理特定部分时,主机可以填充这些对象的公共属性李>