我以WSDL和XSD为起点。 (WSDL使用WCSF Blue工具从XSD生成)。从WSDL中,使用工具生成服务代码。项目名称为“Autogenerated_Service_Project”。在这个项目中,它将具有[ServiceContract]和[DataContract]类。它有一个名为“EmployeeDataContract”的数据协定。在GetEmployee()服务操作中,此datacontract将返回给客户端。
我有一个名为“Business_Project”的业务层项目。它有一个返回“Employee”实体对象的方法。
目前,我在“Autogenerated_Service_Project”中引用“Business_Project”。
Business_Project.MyClass b = new Business_Project.MyClass();
EmployeeDataContract d = b.GetAssociate();
return EmployeeDataContract;
当WSDl发生变化时,挑战就来了。当WSDL被更改时,将重新创建“Autogenerated_Service_Project”并且上面提到的代码将丢失。
克服此代码丢失的解决方案是什么?
注意:“Autogenerated_Service_Project”是最重要的项目。理想情况下,它不能被任何其他项目引用。
答案 0 :(得分:2)
您可以更改调用业务层的方式(可能您的解决方案需要额外的层)
但是以简单的方式,当WSDL发生更改时,您可以生成一次代理
手动处理更改,或仅将工具用于新服务
如果WSDL上的服务细化,则该解决方案可能适用。
答案 1 :(得分:1)
可以通过在其他文件中使用Partial Classes来解决此问题。问题中给出的代码可以移动到这个新的分部类文件中。即使重新创建自动生成的文件,此文件也会保留。