创建使用请求/响应包装器的可互操作WebService所需的正确属性标记是什么?
我已经创建了界面和功能(我将我的服务分为3部分(Client.dll,Shared.dll,Server.dll):
Server.dll :
public sealed class CalcServer : ICalculator
{
public AddResponse Add(AddRequest request)
{
return new AddResponse(request.Value1 + request.Value2);
}
}
Shared.dll :
public interface ICalculator
{
AddResponse Add(AddRequest request);
}
public sealed class AddResponse
{
public int Value { get; private set; }
public AddResponse()
{
Init();
}
public AddResponse(int value)
{
Init(value);
}
private void Init(int value = 0)
{
Value = value;
}
}
public sealed class AddRequest
{
public int Value1 { get; private set; }
public int Value2 { get; private set; }
public AddResponse()
{
Init();
}
public AddResponse(int value1 = 0, int value2 = 0)
{
Init(value1, value2);
}
private void Init(int value1 = 0, int value2 = 0)
{
Value1 = value1;
Value2 = value2;
}
}
Client.dll :
public interface CalcChannel : ICalculator, IClientChannel
{
}
public sealed class CalcClient : ClientBase<ICalculator>, ICalculator
{
public CalcClient(String endpointConfigurationName) :
base(endpointConfigurationName)
{
}
pubic int DoAdd(int val1, int val2)
{
AddRequest request = new AddRequest(val1, val2);
AddResponse response = ((ICalculatr)this).Add(request);
return response.Value;
}
AddResponse ICalculator.Add(AddRequest request)
{
return Channel.Add(request);
}
}
我只是不确定将此作为可互操作的Web服务保留的必要属性标记。我在谷歌上查了一下,但似乎不同的来源使用不同的标签。有些使用[ServiceContract()]
,有些使用[WebService()]
。最重要的是有服务器端标签,如[ServiceBehavior()]
,我想知道是否有必要。
答案 0 :(得分:1)
您必须决定是否需要旧式Web服务(asmx)或WCF。前者使用[WebService]和[WebMethod],后者使用[DataContract],[ServiceContract],[OperationContract]等。它们完全不同。您需要不同的代码和项目类型来将它们作为服务托管。在Visual Studio中创建新的Web服务项目时,您始终可以获得示例代码,但Web也充满了它们。
答案 1 :(得分:0)
没有真正的决定。除非必须,否则永远不要使用旧的[WebService]
样式服务。简单。