Ich bin ein Neuling in WCF, derzeit entwickle ich einen TCP WCF-Dienst und ich bin mir nicht sicher, ob ich verstehe, Parameter richtig zu übergeben oder nicht, also empfehle ich Ihnen, einen Kommentar zu geben und einen standardisierten Weg zu geben.Was ist der standardisierte Weg, um komplexe Typen in WCF zu übergeben?
Um die Dinge klar zu machen, habe ich einen kleinen Dienst für Testzwecke entwickelt, der eine einzige Methode hat und von einer externen .Net-DLL abhängt, die einzelne Klassen freilegt. Der Servicevertrag Code
[ServiceContract]
public interface IMyService
{
[OperationContract]
int Test1(actionType at, calculationType ct, action a);
[OperationContract]
int Test2(DataSeries s);
}
Wo actionType
, calculationType
, action
sind Aufzählungen in der die externen DLL erklären und DataSeries
ist eine Klasse, in der DLL erklärt.
Die origianl defination für die DataSeries
Klasse in der dll von [Serializable]
nur markiert und ohne [DataMember]
auf ihre Mitglieder.
ich die 3. dll auf dem Client und Server-Seite verwende, war meine Überraschung, beide Anwendungen arbeiten gut ohne [DataContract]
auf der Datenreihe Klasse zu setzen und ohne von [EnumMember]
innen Aufzählungen zu verwenden, [DataMember]
innerhalb der Klasse.
Also, was ist los?
Ein weiteres Experiment:
die dritte Partei von der Clientseite aus- und mit dem Service, wie es ist, fand ich, dass die VS2008 die Aufzählungen und die DataSeries
Klasse erzeugt und markes sie mit den richtigen Eigenschaften? wie
[System.CodeDom.Compiler.GeneratedCodeAttribute ("System.Runtime.Serialization", "3.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="actionType", Namespace="http://schemas.datacontract.org/2004/07/DBInterface")]
public enum actionType : int {
[System.Runtime.Serialization.EnumMemberAttribute()]
All = 0,
[System.Runtime.Serialization.EnumMemberAttribute()]
Buy = 1,
[System.Runtime.Serialization.EnumMemberAttribute()]
Sell = 2,
}
Dies ist eine gute Antwort, können Sie Link/Website oder Buch empfehlen, die mir Informationen in Details über WCF oder MSDN ist ausreichend? –