我有像这样的WCF服务服务方案
命名空间Company.BO.Contracts {
public interface ITypeService { }
public partial interface IType1Services : ITypeService
{
[OperationContract()]
Type1 GetType1(System.Int32 idValue);
[OperationContract()]
Type1 Save(Type1 myType1, System.Int32 changeUser);
}
public partial interface IType2Services : ITypeService
{
[OperationContract()]
Type2 GetType2(System.Int32 idValue);
[OperationContract()]
Type2 Save(Type2 type2, System.Int32 changeUser);
}
}
命名空间Company.ContractFulfillment {
public class Type1Services : IType1Services
{
public MyType1 GetType1(System.Int32 idValue)
{
return new Type1();
}
}
public class Type2Services : IType2Services
{
public Type2 GetType2(System.Int32 idValue)
{
return new Type2();
}
}
}
当我将上述代码公开为WCF服务时,BizTalk无法在Type1.Save()和Type2.Save()之间进行区分。有没有办法不修改服务,因为服务是框架的一部分,需要在其他依赖的地方进行更多的更改?
对于BizTalk以外的客户端,服务访问层被包装到类型库(type1,type2等)中,客户端将此类型库作为普通类库进行访问。
答案 0 :(得分:0)
你能在类型1界面上放一个[ServiceContractAttribute(Namespace =“http://company.com/services/type1/”)]吗?为每个服务合同使用不同的命名空间,因为它们是不同的合同。
答案 1 :(得分:0)
您可以构建一个放置在框架和Biztalk之间的WCF服务
在这个新服务中将Type1.Save()实现为Type1.SaveType1()。
不是特别优雅,但它会起作用。