Commits

Anonymous committed 0c2660f

Initial commit.

Comments (0)

Files changed (28)

+syntax: glob
+
+*.obj
+*.exe
+*.pdb
+*.user
+*.aps
+*.pch
+*.vspscc
+*_i.c
+*_p.c
+*.ncb
+*.suo
+*.tlb
+*.tlh
+*.bak
+*.cache
+*.ilk
+*.log
+*.lib
+*.sbr
+*.scc
+[Bb]in
+[Dd]ebug*/
+obj/
+[Rr]elease*/
+_ReSharper*/
+[Tt]est[Rr]esult*
+[Bb]uild[Ll]og.*
+*.[Pp]ublish.xml

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C# Express 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.client", "com.aschneider.examples.wcf.client\com.aschneider.examples.wcf.client.csproj", "{F778C81D-085D-4267-823D-7C56A100512B}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.contracts", "..\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts.csproj", "{7F78A369-2907-4B6E-8B85-03EE7458C0DB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{F778C81D-085D-4267-823D-7C56A100512B}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Debug|x86.ActiveCfg = Debug|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Debug|x86.Build.0 = Debug|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Release|Any CPU.ActiveCfg = Release|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Release|Mixed Platforms.Build.0 = Release|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Release|x86.ActiveCfg = Release|x86
+		{F778C81D-085D-4267-823D-7C56A100512B}.Release|x86.Build.0 = Release|x86
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|x86.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Program.cs

+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using com.aschneider.examples.wcf.client.EchoServiceReference;
+
+namespace com.aschneider.examples.wcf.client
+{
+    class Program
+    {
+        public Program()
+        {
+        }
+
+        /// <summary>
+        /// Displays the help message.
+        /// </summary>
+        /// <param name="args"></param>
+        private void ProcessHelpCmd(string[] args)
+        {
+            Console.WriteLine("Valid commands:");
+            Console.WriteLine("\thelp         - Brings up this menu");
+            Console.WriteLine("\techo         - Echos back text written after the command");
+            Console.WriteLine("\texit         - Quit the server application");
+        }
+
+        /// <summary>
+        /// Sends echo command to server and displays response.
+        /// </summary>
+        /// <param name="args"></param>
+        private void ProcessEchoCmd(string[] args, string allInput)
+        {
+            EchoServiceClient client = new EchoServiceClient();
+            EchoReq request = new EchoReq { Data = allInput.Substring(5) };
+            EchoRsp response = client.Echo(request);
+            client.Close();
+
+            Console.WriteLine("Server response: " + response.Data);
+            Console.WriteLine("Server timestamp: " + response.Timestamp);
+        }
+
+        /// <summary>
+        /// Runs the debug prompt until the exit command is entered
+        /// </summary>
+        public void UserInteractiveMode()
+        {
+            string input = "";
+            string[] inputArr = null;
+            bool stopServer = false;
+
+            while (!stopServer)
+            {
+                input = "";
+                inputArr = null;
+
+                Console.Write("Example Client> ");
+                input = Console.ReadLine(); // Console.ReadLine().Trim().ToLower();
+                inputArr = input.Split();
+                inputArr[0] = inputArr[0].Trim().ToLower();
+
+                // Parse commands
+                switch (inputArr[0])
+                {
+                    case "help":
+                        ProcessHelpCmd(inputArr);
+                        break;
+                    case "echo":
+                        ProcessEchoCmd(inputArr, input);
+                        break;
+                    case "exit":
+                        stopServer = true;
+                        break;
+                    default:
+                        if (inputArr[0] != "")
+                            Console.WriteLine("Unknown command: {0}", inputArr[0]);
+                        break;
+                }
+            }
+        }
+
+        static void Main(string[] args)
+        {
+            Program p = new Program();
+
+            Console.WriteLine("Example WCF Client");
+            Console.WriteLine("------------------");
+            p.UserInteractiveMode();
+            Console.WriteLine("Goodbye!");
+            Console.ReadKey();
+        }
+    }
+}

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Properties/AssemblyInfo.cs

+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ExampleWCFClient")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Embvue")]
+[assembly: AssemblyProduct("ExampleWCFClient")]
+[assembly: AssemblyCopyright("Copyright © Embvue 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("9558e01f-e47f-49e2-94c8-f5302225ed6e")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/EchoService.disco

+<?xml version="1.0" encoding="utf-8"?>
+<discovery xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/disco/">
+  <contractRef ref="http://localhost:8000/EchoService?wsdl" docRef="http://localhost:8000/EchoService" xmlns="http://schemas.xmlsoap.org/disco/scl/" />
+</discovery>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/EchoService.wsdl

+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:i0="http://embvue.com/api/Embvue.Generator.Contracts/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="EchoService" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:import namespace="http://embvue.com/api/Embvue.Generator.Contracts/" location="http://localhost:8000/EchoService?wsdl=wsdl0" />
+  <wsdl:types />
+  <wsdl:binding name="BasicHttpBinding_IEchoService" type="i0:IEchoService">
+    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
+    <wsdl:operation name="Echo">
+      <soap:operation soapAction="http://embvue.com/api/Embvue.Generator.Contracts/IEchoService/Echo" style="document" />
+      <wsdl:input>
+        <soap:body use="literal" />
+      </wsdl:input>
+      <wsdl:output>
+        <soap:body use="literal" />
+      </wsdl:output>
+    </wsdl:operation>
+  </wsdl:binding>
+  <wsdl:service name="EchoService">
+    <wsdl:port name="BasicHttpBinding_IEchoService" binding="tns:BasicHttpBinding_IEchoService">
+      <soap:address location="http://localhost:8000/EchoService" />
+    </wsdl:port>
+  </wsdl:service>
+</wsdl:definitions>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/EchoService.xsd

+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="anyType" nillable="true" type="xs:anyType" />
+  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
+  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
+  <xs:element name="boolean" nillable="true" type="xs:boolean" />
+  <xs:element name="byte" nillable="true" type="xs:byte" />
+  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
+  <xs:element name="decimal" nillable="true" type="xs:decimal" />
+  <xs:element name="double" nillable="true" type="xs:double" />
+  <xs:element name="float" nillable="true" type="xs:float" />
+  <xs:element name="int" nillable="true" type="xs:int" />
+  <xs:element name="long" nillable="true" type="xs:long" />
+  <xs:element name="QName" nillable="true" type="xs:QName" />
+  <xs:element name="short" nillable="true" type="xs:short" />
+  <xs:element name="string" nillable="true" type="xs:string" />
+  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
+  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
+  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
+  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
+  <xs:element name="char" nillable="true" type="tns:char" />
+  <xs:simpleType name="char">
+    <xs:restriction base="xs:int" />
+  </xs:simpleType>
+  <xs:element name="duration" nillable="true" type="tns:duration" />
+  <xs:simpleType name="duration">
+    <xs:restriction base="xs:duration">
+      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
+      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
+      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:element name="guid" nillable="true" type="tns:guid" />
+  <xs:simpleType name="guid">
+    <xs:restriction base="xs:string">
+      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
+    </xs:restriction>
+  </xs:simpleType>
+  <xs:attribute name="FactoryType" type="xs:QName" />
+  <xs:attribute name="Id" type="xs:ID" />
+  <xs:attribute name="Ref" type="xs:IDREF" />
+</xs:schema>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/EchoService1.wsdl

+<?xml version="1.0" encoding="utf-8"?>
+<wsdl:definitions xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://embvue.com/api/Embvue.Generator.Contracts/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://embvue.com/api/Embvue.Generator.Contracts/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+  <wsdl:types>
+    <xsd:schema targetNamespace="http://embvue.com/api/Embvue.Generator.Contracts/Imports">
+      <xsd:import schemaLocation="http://localhost:8000/EchoService?xsd=xsd0" namespace="http://embvue.com/api/Embvue.Generator.Contracts/" />
+      <xsd:import schemaLocation="http://localhost:8000/EchoService?xsd=xsd1" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
+    </xsd:schema>
+  </wsdl:types>
+  <wsdl:message name="IEchoService_Echo_InputMessage">
+    <wsdl:part name="parameters" element="tns:Echo" />
+  </wsdl:message>
+  <wsdl:message name="IEchoService_Echo_OutputMessage">
+    <wsdl:part name="parameters" element="tns:EchoResponse" />
+  </wsdl:message>
+  <wsdl:portType name="IEchoService">
+    <wsdl:operation name="Echo">
+      <wsdl:input wsaw:Action="http://embvue.com/api/Embvue.Generator.Contracts/IEchoService/Echo" message="tns:IEchoService_Echo_InputMessage" />
+      <wsdl:output wsaw:Action="http://embvue.com/api/Embvue.Generator.Contracts/IEchoService/EchoResponse" message="tns:IEchoService_Echo_OutputMessage" />
+    </wsdl:operation>
+  </wsdl:portType>
+</wsdl:definitions>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/EchoService1.xsd

+<?xml version="1.0" encoding="utf-8"?>
+<xs:schema xmlns:tns="http://embvue.com/api/Embvue.Generator.Contracts/" elementFormDefault="qualified" targetNamespace="http://embvue.com/api/Embvue.Generator.Contracts/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+  <xs:element name="Echo">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="request" nillable="true" type="tns:EchoReq" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="EchoReq">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Data" nillable="true" type="xs:string" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="EchoReq" nillable="true" type="tns:EchoReq" />
+  <xs:element name="EchoResponse">
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element minOccurs="0" name="EchoResult" nillable="true" type="tns:EchoRsp" />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+  <xs:complexType name="EchoRsp">
+    <xs:sequence>
+      <xs:element minOccurs="0" name="Data" nillable="true" type="xs:string" />
+      <xs:element minOccurs="0" name="Timestamp" type="xs:dateTime" />
+    </xs:sequence>
+  </xs:complexType>
+  <xs:element name="EchoRsp" nillable="true" type="tns:EchoRsp" />
+</xs:schema>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/Reference.cs

+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.239
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace com.aschneider.examples.wcf.client.EchoServiceReference {
+    using System.Runtime.Serialization;
+    using System;
+    
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="EchoReq", Namespace="http://embvue.com/api/Embvue.Generator.Contracts/")]
+    [System.SerializableAttribute()]
+    public partial class EchoReq : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string DataField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Data {
+            get {
+                return this.DataField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.DataField, value) != true)) {
+                    this.DataField = value;
+                    this.RaisePropertyChanged("Data");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
+    [System.Runtime.Serialization.DataContractAttribute(Name="EchoRsp", Namespace="http://embvue.com/api/Embvue.Generator.Contracts/")]
+    [System.SerializableAttribute()]
+    public partial class EchoRsp : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
+        
+        [System.NonSerializedAttribute()]
+        private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private string DataField;
+        
+        [System.Runtime.Serialization.OptionalFieldAttribute()]
+        private System.DateTime TimestampField;
+        
+        [global::System.ComponentModel.BrowsableAttribute(false)]
+        public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
+            get {
+                return this.extensionDataField;
+            }
+            set {
+                this.extensionDataField = value;
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public string Data {
+            get {
+                return this.DataField;
+            }
+            set {
+                if ((object.ReferenceEquals(this.DataField, value) != true)) {
+                    this.DataField = value;
+                    this.RaisePropertyChanged("Data");
+                }
+            }
+        }
+        
+        [System.Runtime.Serialization.DataMemberAttribute()]
+        public System.DateTime Timestamp {
+            get {
+                return this.TimestampField;
+            }
+            set {
+                if ((this.TimestampField.Equals(value) != true)) {
+                    this.TimestampField = value;
+                    this.RaisePropertyChanged("Timestamp");
+                }
+            }
+        }
+        
+        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+        
+        protected void RaisePropertyChanged(string propertyName) {
+            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
+            if ((propertyChanged != null)) {
+                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+            }
+        }
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    [System.ServiceModel.ServiceContractAttribute(Namespace="http://embvue.com/api/Embvue.Generator.Contracts/", ConfigurationName="EchoServiceReference.IEchoService")]
+    public interface IEchoService {
+        
+        [System.ServiceModel.OperationContractAttribute(Action="http://embvue.com/api/Embvue.Generator.Contracts/IEchoService/Echo", ReplyAction="http://embvue.com/api/Embvue.Generator.Contracts/IEchoService/EchoResponse")]
+        com.aschneider.examples.wcf.client.EchoServiceReference.EchoRsp Echo(com.aschneider.examples.wcf.client.EchoServiceReference.EchoReq request);
+    }
+    
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public interface IEchoServiceChannel : com.aschneider.examples.wcf.client.EchoServiceReference.IEchoService, System.ServiceModel.IClientChannel {
+    }
+    
+    [System.Diagnostics.DebuggerStepThroughAttribute()]
+    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
+    public partial class EchoServiceClient : System.ServiceModel.ClientBase<com.aschneider.examples.wcf.client.EchoServiceReference.IEchoService>, com.aschneider.examples.wcf.client.EchoServiceReference.IEchoService {
+        
+        public EchoServiceClient() {
+        }
+        
+        public EchoServiceClient(string endpointConfigurationName) : 
+                base(endpointConfigurationName) {
+        }
+        
+        public EchoServiceClient(string endpointConfigurationName, string remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public EchoServiceClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(endpointConfigurationName, remoteAddress) {
+        }
+        
+        public EchoServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
+                base(binding, remoteAddress) {
+        }
+        
+        public com.aschneider.examples.wcf.client.EchoServiceReference.EchoRsp Echo(com.aschneider.examples.wcf.client.EchoServiceReference.EchoReq request) {
+            return base.Channel.Echo(request);
+        }
+    }
+}

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/Reference.svcmap

+<?xml version="1.0" encoding="utf-8"?>
+<ReferenceGroup xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="76e4df44-d436-4330-8025-021ce254afc3" xmlns="urn:schemas-microsoft-com:xml-wcfservicemap">
+  <ClientOptions>
+    <GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
+    <EnableDataBinding>true</EnableDataBinding>
+    <ExcludedTypes />
+    <ImportXmlTypes>false</ImportXmlTypes>
+    <GenerateInternalTypes>false</GenerateInternalTypes>
+    <GenerateMessageContracts>false</GenerateMessageContracts>
+    <NamespaceMappings />
+    <CollectionMappings />
+    <GenerateSerializableTypes>true</GenerateSerializableTypes>
+    <Serializer>Auto</Serializer>
+    <UseSerializerForFaults>true</UseSerializerForFaults>
+    <ReferenceAllAssemblies>true</ReferenceAllAssemblies>
+    <ReferencedAssemblies />
+    <ReferencedDataContractTypes />
+    <ServiceContractMappings />
+  </ClientOptions>
+  <MetadataSources>
+    <MetadataSource Address="http://localhost:8000/EchoService" Protocol="http" SourceId="1" />
+  </MetadataSources>
+  <Metadata>
+    <MetadataFile FileName="EchoService.wsdl" MetadataType="Wsdl" ID="a28fca8e-dae4-44b9-b896-f7e2c24f321d" SourceId="1" SourceUrl="http://localhost:8000/EchoService?wsdl" />
+    <MetadataFile FileName="EchoService.disco" MetadataType="Disco" ID="94080d09-32ff-4c28-89d8-05afcb08939b" SourceId="1" SourceUrl="http://localhost:8000/EchoService?disco" />
+    <MetadataFile FileName="EchoService1.wsdl" MetadataType="Wsdl" ID="f0f3a956-51c4-4a5e-9875-f02f73fa88c7" SourceId="1" SourceUrl="http://localhost:8000/EchoService?wsdl=wsdl0" />
+    <MetadataFile FileName="EchoService.xsd" MetadataType="Schema" ID="dfa60c8d-253c-4581-8a0f-b6ef5e6363d8" SourceId="1" SourceUrl="http://localhost:8000/EchoService?xsd=xsd1" />
+    <MetadataFile FileName="EchoService1.xsd" MetadataType="Schema" ID="2fae31e2-1a3b-4b87-a9ca-e6e22b5c6f4c" SourceId="1" SourceUrl="http://localhost:8000/EchoService?xsd=xsd0" />
+  </Metadata>
+  <Extensions>
+    <ExtensionFile FileName="configuration91.svcinfo" Name="configuration91.svcinfo" />
+    <ExtensionFile FileName="configuration.svcinfo" Name="configuration.svcinfo" />
+  </Extensions>
+</ReferenceGroup>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/configuration.svcinfo

+<?xml version="1.0" encoding="utf-8"?>
+<configurationSnapshot xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:schemas-microsoft-com:xml-wcfconfigurationsnapshot">
+  <behaviors />
+  <bindings>
+    <binding digest="System.ServiceModel.Configuration.BasicHttpBindingElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; maxBufferSize=&quot;65536&quot; messageEncoding=&quot;Text&quot; name=&quot;BasicHttpBinding_IEchoService&quot; textEncoding=&quot;utf-8&quot; transferMode=&quot;Buffered&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message algorithmSuite=&quot;Default&quot; clientCredentialType=&quot;UserName&quot; /&gt;&lt;transport clientCredentialType=&quot;None&quot; proxyCredentialType=&quot;None&quot; realm=&quot;&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="basicHttpBinding" name="BasicHttpBinding_IEchoService" />
+  </bindings>
+  <endpoints>
+    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8000/EchoService&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IEchoService&quot; contract=&quot;EchoServiceReference.IEchoService&quot; name=&quot;BasicHttpBinding_IEchoService&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://localhost:8000/EchoService&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;BasicHttpBinding_IEchoService&quot; contract=&quot;EchoServiceReference.IEchoService&quot; name=&quot;BasicHttpBinding_IEchoService&quot; /&gt;" contractName="EchoServiceReference.IEchoService" name="BasicHttpBinding_IEchoService" />
+  </endpoints>
+</configurationSnapshot>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/Service References/EchoServiceReference/configuration91.svcinfo

+<?xml version="1.0" encoding="utf-8"?>
+<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="EKVqMvpl1cqT5ic+5YVmIh7Ui/w=">
+  <bindingConfigurations>
+    <bindingConfiguration bindingType="basicHttpBinding" name="BasicHttpBinding_IEchoService">
+      <properties>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>BasicHttpBinding_IEchoService</serializedValue>
+        </property>
+        <property path="/closeTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/openTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/receiveTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:10:00</serializedValue>
+        </property>
+        <property path="/sendTimeout" isComplexType="false" isExplicitlyDefined="true" clrType="System.TimeSpan, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>00:01:00</serializedValue>
+        </property>
+        <property path="/allowCookies" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/bypassProxyOnLocal" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/hostNameComparisonMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HostNameComparisonMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>StrongWildcard</serializedValue>
+        </property>
+        <property path="/maxBufferSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/maxBufferPoolSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>524288</serializedValue>
+        </property>
+        <property path="/maxReceivedMessageSize" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>65536</serializedValue>
+        </property>
+        <property path="/messageEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.WSMessageEncoding, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Text</serializedValue>
+        </property>
+        <property path="/proxyAddress" isComplexType="false" isExplicitlyDefined="false" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/readerQuotas" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxDepth" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>32</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxStringContentLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>8192</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxArrayLength" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxBytesPerRead" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>4096</serializedValue>
+        </property>
+        <property path="/readerQuotas/maxNameTableCharCount" isComplexType="false" isExplicitlyDefined="true" clrType="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>16384</serializedValue>
+        </property>
+        <property path="/security" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.BasicHttpSecurityElement</serializedValue>
+        </property>
+        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpSecurityMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>None</serializedValue>
+        </property>
+        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.HttpTransportSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.HttpTransportSecurityElement</serializedValue>
+        </property>
+        <property path="/security/transport/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpClientCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>None</serializedValue>
+        </property>
+        <property path="/security/transport/proxyCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.HttpProxyCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>None</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Never</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>TransportSelected</serializedValue>
+        </property>
+        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>(Collection)</serializedValue>
+        </property>
+        <property path="/security/transport/realm" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.BasicHttpMessageSecurityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.BasicHttpMessageSecurityElement</serializedValue>
+        </property>
+        <property path="/security/message/clientCredentialType" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.BasicHttpMessageCredentialType, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>UserName</serializedValue>
+        </property>
+        <property path="/security/message/algorithmSuite" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Security.SecurityAlgorithmSuite, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Default</serializedValue>
+        </property>
+        <property path="/textEncoding" isComplexType="false" isExplicitlyDefined="true" clrType="System.Text.Encoding, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.Text.UTF8Encoding</serializedValue>
+        </property>
+        <property path="/transferMode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.TransferMode, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>Buffered</serializedValue>
+        </property>
+        <property path="/useDefaultWebProxy" isComplexType="false" isExplicitlyDefined="true" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>True</serializedValue>
+        </property>
+      </properties>
+    </bindingConfiguration>
+  </bindingConfigurations>
+  <endpoints>
+    <endpoint name="BasicHttpBinding_IEchoService" contract="EchoServiceReference.IEchoService" bindingType="basicHttpBinding" address="http://localhost:8000/EchoService" bindingConfiguration="BasicHttpBinding_IEchoService">
+      <properties>
+        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>http://localhost:8000/EchoService</serializedValue>
+        </property>
+        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/binding" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>basicHttpBinding</serializedValue>
+        </property>
+        <property path="/bindingConfiguration" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>BasicHttpBinding_IEchoService</serializedValue>
+        </property>
+        <property path="/contract" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>EchoServiceReference.IEchoService</serializedValue>
+        </property>
+        <property path="/headers" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.AddressHeaderCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.AddressHeaderCollectionElement</serializedValue>
+        </property>
+        <property path="/headers/headers" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.Channels.AddressHeaderCollection, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>&lt;Header /&gt;</serializedValue>
+        </property>
+        <property path="/identity" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.IdentityElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.IdentityElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.UserPrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.ServicePrincipalNameElement</serializedValue>
+        </property>
+        <property path="/identity/servicePrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/dns" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.DnsElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.DnsElement</serializedValue>
+        </property>
+        <property path="/identity/dns/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/rsa" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.RsaElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.RsaElement</serializedValue>
+        </property>
+        <property path="/identity/rsa/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificate" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateElement</serializedValue>
+        </property>
+        <property path="/identity/certificate/encodedValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.CertificateReferenceElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>System.ServiceModel.Configuration.CertificateReferenceElement</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeName" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreName, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>My</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/storeLocation" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.StoreLocation, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>LocalMachine</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/x509FindType" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Cryptography.X509Certificates.X509FindType, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>FindBySubjectDistinguishedName</serializedValue>
+        </property>
+        <property path="/identity/certificateReference/findValue" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/identity/certificateReference/isChainIncluded" isComplexType="false" isExplicitlyDefined="false" clrType="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>False</serializedValue>
+        </property>
+        <property path="/name" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue>BasicHttpBinding_IEchoService</serializedValue>
+        </property>
+        <property path="/kind" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+        <property path="/endpointConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+          <serializedValue />
+        </property>
+      </properties>
+    </endpoint>
+  </endpoints>
+</SavedWcfConfigurationInformation>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/app.config

+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+    <system.serviceModel>
+        <bindings>
+            <basicHttpBinding>
+                <binding name="BasicHttpBinding_IEchoService" closeTimeout="00:01:00"
+                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
+                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
+                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
+                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
+                    useDefaultWebProxy="true">
+                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
+                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
+                    <security mode="None">
+                        <transport clientCredentialType="None" proxyCredentialType="None"
+                            realm="" />
+                        <message clientCredentialType="UserName" algorithmSuite="Default" />
+                    </security>
+                </binding>
+            </basicHttpBinding>
+        </bindings>
+        <client>
+            <endpoint address="http://localhost:8000/EchoService" binding="basicHttpBinding"
+                bindingConfiguration="BasicHttpBinding_IEchoService" contract="EchoServiceReference.IEchoService"
+                name="BasicHttpBinding_IEchoService" />
+        </client>
+    </system.serviceModel>
+</configuration>

com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client/com.aschneider.examples.wcf.client.csproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{F778C81D-085D-4267-823D-7C56A100512B}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>com.aschneider.examples.wcf.client</RootNamespace>
+    <AssemblyName>com.aschneider.examples.wcf.client</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Service References\EchoServiceReference\Reference.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Reference.svcmap</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Service References\" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+    <None Include="Service References\EchoServiceReference\EchoService.wsdl" />
+    <None Include="Service References\EchoServiceReference\EchoService.xsd" />
+    <None Include="Service References\EchoServiceReference\EchoService1.wsdl" />
+    <None Include="Service References\EchoServiceReference\EchoService1.xsd" />
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadataStorage Include="Service References\EchoServiceReference\" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\EchoServiceReference\EchoService.disco" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\EchoServiceReference\configuration91.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\EchoServiceReference\configuration.svcinfo" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Service References\EchoServiceReference\Reference.svcmap">
+      <Generator>WCF Proxy Generator</Generator>
+      <LastGenOutput>Reference.cs</LastGenOutput>
+    </None>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

com.aschneider.examples.wcf.contracts/com.aschneider.examples.wcf.contracts.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C# Express 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.contracts", "com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts.csproj", "{7F78A369-2907-4B6E-8B85-03EE7458C0DB}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

com.aschneider.examples.wcf.contracts/com.aschneider.examples.wcf.contracts/IEchoService.cs

+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Runtime.Serialization;
+using System.ServiceModel;
+
+namespace com.aschneider.examples.wcf.contracts
+{
+    /// <summary>
+    /// Defines an Echo request message.
+    /// </summary>
+    [DataContract(Namespace = "http://embvue.com/api/Embvue.Generator.Contracts/")]
+    public class EchoReq
+    {
+        [DataMember]
+        public string Data { get; set; }
+    }
+
+    /// <summary>
+    /// Defines an Echo response message.
+    /// </summary>
+    [DataContract(Namespace = "http://embvue.com/api/Embvue.Generator.Contracts/")]
+    public class EchoRsp
+    {
+        [DataMember]
+        public string Data { get; set; }
+        [DataMember]
+        public DateTime Timestamp { get; set; }
+    }
+
+
+    /// <summary>
+    /// Defines an Echo service.
+    /// </summary>
+    [ServiceContract(Namespace = "http://embvue.com/api/Embvue.Generator.Contracts/")]
+    public interface IEchoService
+    {
+        [OperationContract]
+        EchoRsp Echo(EchoReq request);
+    }
+}

com.aschneider.examples.wcf.contracts/com.aschneider.examples.wcf.contracts/Properties/AssemblyInfo.cs

+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("com.aschneider.examples.wcf.contracts")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Embvue")]
+[assembly: AssemblyProduct("com.aschneider.examples.wcf.contracts")]
+[assembly: AssemblyCopyright("Copyright © Embvue 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("88b4f9dc-e3b8-4e60-8c72-c85c626f9002")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

com.aschneider.examples.wcf.contracts/com.aschneider.examples.wcf.contracts/com.aschneider.examples.wcf.contracts.csproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7F78A369-2907-4B6E-8B85-03EE7458C0DB}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>com.aschneider.examples.wcf.contracts</RootNamespace>
+    <AssemblyName>com.aschneider.examples.wcf.contracts</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.Runtime.Serialization" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="IEchoService.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C# Express 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.server", "com.aschneider.examples.wcf.server\com.aschneider.examples.wcf.server.csproj", "{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.contracts", "..\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts.csproj", "{7F78A369-2907-4B6E-8B85-03EE7458C0DB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.services", "..\com.aschneider.examples.wcf.services\com.aschneider.examples.wcf.services\com.aschneider.examples.wcf.services.csproj", "{D32A9BC5-1F41-467B-92DD-D88E004E3523}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Debug|Mixed Platforms = Debug|Mixed Platforms
+		Debug|x86 = Debug|x86
+		Release|Any CPU = Release|Any CPU
+		Release|Mixed Platforms = Release|Mixed Platforms
+		Release|x86 = Release|x86
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Debug|Any CPU.ActiveCfg = Debug|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Debug|Mixed Platforms.Build.0 = Debug|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Debug|x86.ActiveCfg = Debug|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Debug|x86.Build.0 = Debug|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Release|Any CPU.ActiveCfg = Release|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Release|Mixed Platforms.ActiveCfg = Release|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Release|Mixed Platforms.Build.0 = Release|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Release|x86.ActiveCfg = Release|x86
+		{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}.Release|x86.Build.0 = Release|x86
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{7F78A369-2907-4B6E-8B85-03EE7458C0DB}.Release|x86.ActiveCfg = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|x86.ActiveCfg = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server/Program.cs

+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.ServiceProcess;
+using System.ServiceModel;
+using com.aschneider.examples.wcf.services;
+
+namespace com.aschneider.examples.wcf.server
+{
+    class Program : ServiceBase
+    {
+        private ServiceHost EchoServiceHost = null;
+
+        public Program()
+        {
+            this.ServiceName = "Example WCF Server";
+        }
+
+        public static void DisplayHostInfo(ServiceHost h)
+        {
+            foreach (System.ServiceModel.Description.ServiceEndpoint se in h.Description.Endpoints)
+            {
+                Console.WriteLine("Address:  {0}", se.Address);
+                Console.WriteLine("Binding:  {0}", se.Binding.Name);
+                Console.WriteLine("Contract: {0}", se.Contract.Name);
+            }
+        }
+
+        private void CloseAndNullifyHosts(ServiceHost h)
+        {
+            if (h != null)
+            {
+                h.Close();
+                h = null;
+            }
+        }
+
+        /// <summary>
+        /// Start/restart the server application
+        /// </summary>
+        /// <param name="args"></param>
+        protected override void OnStart(string[] args)
+        {
+            base.OnStart(args);
+            Console.WriteLine("OnStart called");
+
+            // If our host is still in existence, close and nullify it
+            //
+            CloseAndNullifyHosts(EchoServiceHost);
+
+            EchoServiceHost = new ServiceHost(typeof(EchoService));
+
+            EchoServiceHost.Open();
+
+            DisplayHostInfo(EchoServiceHost);
+        }
+
+        /// <summary>
+        /// Stop the server application
+        /// </summary>
+        protected override void OnStop()
+        {
+            Console.WriteLine("OnStop called");
+
+            CloseAndNullifyHosts(EchoServiceHost);
+
+            base.OnStop();
+        }
+
+        /// <summary>
+        /// Displays the help message.
+        /// </summary>
+        /// <param name="args"></param>
+        private void ProcessHelpCmd(string[] args)
+        {
+            Console.WriteLine("Valid commands:");
+            Console.WriteLine("\thelp         - Brings up this menu");
+            Console.WriteLine("\texit         - Quit the server application");
+        }
+
+        /// <summary>
+        /// Runs the debug prompt until the exit command is entered
+        /// </summary>
+        public void UserInteractiveMode()
+        {
+            string input = "";
+            string[] inputArr = null;
+            bool stopServer = false;
+
+            while (!stopServer)
+            {
+                input = "";
+                inputArr = null;
+
+                Console.Write("Example Server> ");
+                input = Console.ReadLine().Trim().ToLower();
+                inputArr = input.Split();
+
+                // Parse commands
+                switch (inputArr[0])
+                {
+                    case "help":
+                        ProcessHelpCmd(inputArr);
+                        break;
+                    case "exit":
+                        stopServer = true;
+                        break;
+                    default:
+                        if (inputArr[0] != "")
+                            Console.WriteLine("Unknown command: {0}", inputArr[0]);
+                        break;
+                }
+            }
+        }
+
+        /// <summary>
+        /// Server entry point.
+        /// </summary>
+        /// <param name="args"></param>
+        static void Main(string[] args)
+        {
+            Program p = new Program();
+
+            if (Environment.UserInteractive)
+            {
+                p.OnStart(args);
+
+                Console.WriteLine("Example WCF Server");
+                Console.WriteLine("------------------");
+                
+                p.UserInteractiveMode();
+
+                Console.WriteLine("Goodbye!");
+                Console.ReadKey();
+
+                p.OnStop();
+            }
+            else
+            {
+                ServiceBase.Run(p);
+            }
+        }
+    }
+}

com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server/Properties/AssemblyInfo.cs

+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("com.aschneider.examples.wcf.server")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Embvue")]
+[assembly: AssemblyProduct("com.aschneider.examples.wcf.server")]
+[assembly: AssemblyCopyright("Copyright © Embvue 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("58731d44-214d-4e77-927d-17254672b34e")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server/app.config

+<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+  <system.serviceModel>
+    <services>
+      <service name="com.aschneider.examples.wcf.services.EchoService">
+        <host>
+          <baseAddresses>
+            <add baseAddress="http://localhost:8000/EchoService"/>
+            <!--<add baseAddress="net.pipe://localhost/EchoService"/>-->
+          </baseAddresses>
+        </host>
+      </service>
+    </services>
+    <behaviors>
+      <serviceBehaviors>
+        <behavior>
+          <serviceMetadata httpGetEnabled="true"/>
+          <serviceDebug includeExceptionDetailInFaults="true"/>
+        </behavior>
+      </serviceBehaviors>
+    </behaviors>
+  </system.serviceModel>
+</configuration>

com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server/com.aschneider.examples.wcf.server.csproj

+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
+    <ProductVersion>8.0.30703</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{3CEA9788-D177-4B6C-BAC7-7FBCA1544022}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>com.aschneider.examples.wcf.server</RootNamespace>
+    <AssemblyName>com.aschneider.examples.wcf.server</AssemblyName>
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkProfile>Client</TargetFrameworkProfile>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <PlatformTarget>x86</PlatformTarget>
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="System.ServiceModel" />
+    <Reference Include="System.ServiceProcess" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Data.DataSetExtensions" />
+    <Reference Include="Microsoft.CSharp" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs">
+      <SubType>Component</SubType>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts\com.aschneider.examples.wcf.contracts.csproj">
+      <Project>{7F78A369-2907-4B6E-8B85-03EE7458C0DB}</Project>
+      <Name>com.aschneider.examples.wcf.contracts</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\com.aschneider.examples.wcf.services\com.aschneider.examples.wcf.services\com.aschneider.examples.wcf.services.csproj">
+      <Project>{D32A9BC5-1F41-467B-92DD-D88E004E3523}</Project>
+      <Name>com.aschneider.examples.wcf.services</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <WCFMetadata Include="Service References\" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="app.config" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>

com.aschneider.examples.wcf.services/com.aschneider.examples.wcf.services.sln

+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C# Express 2010
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "com.aschneider.examples.wcf.services", "com.aschneider.examples.wcf.services\com.aschneider.examples.wcf.services.csproj", "{D32A9BC5-1F41-467B-92DD-D88E004E3523}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{D32A9BC5-1F41-467B-92DD-D88E004E3523}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

com.aschneider.examples.wcf.services/com.aschneider.examples.wcf.services/EchoService.cs

+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using com.aschneider.examples.wcf.contracts;
+
+namespace com.aschneider.examples.wcf.services
+{
+    public class EchoService : IEchoService
+    {
+        public EchoRsp Echo(EchoReq request)
+        {
+            EchoRsp response = new EchoRsp();
+            response.Data = request.Data;
+            response.Timestamp = DateTime.Now;
+
+            return response;
+        }
+    }
+}

com.aschneider.examples.wcf.services/com.aschneider.examples.wcf.services/Properties/AssemblyInfo.cs

+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("ExampleWCFServices")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Embvue")]
+[assembly: AssemblyProduct("ExampleWCFServices")]
+[assembly: AssemblyCopyright("Copyright © Embvue 2011")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("d1fc4275-9618-43f2-a170-9e30b3b62e89")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]