創建使用請求/響應包裝器的可互操作的WebService所需的正確屬性標記是什麼?C#:可互操作的WebServices - 我應該用哪些屬性標記方法?
我創建的接口和功能已經(和我我的服務分成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()]
,我想知道這是否有必要。
XmlSerialization不是必需的。您將ServiceContract放在服務類上,OperationContract放在其方法上,DataContract放在您在這些操作中使用的所有複雜類型上,DataMember放置在您希望通過webservice界面可見的數據協定的所有屬性上。您還需要託管這些服務,最簡單的方法是在Visual Studio中創建新的WCF應用程序,手動完成這件事並不容易。 – fejesjoco 2010-12-23 13:51:32