programming services-slides
DESCRIPTION
TRANSCRIPT
![Page 1: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/1.jpg)
![Page 2: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/2.jpg)
![Page 3: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/3.jpg)
![Page 4: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/4.jpg)
![Page 5: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/5.jpg)
public abstract class Message : IDisposable {// numerous overloads for creating messagespublic static Message CreateMessage(...);// reads the body as XMLpublic XmlDictionaryReader GetReaderAtBodyContents();// deserializes the body into a .NET objectpublic T GetBody<T>(XmlObjectSerializer serializer);// numerous methods/overloads for writing messagespublic void WriteMessage(XmlDictionaryWriter writer);...
}
![Page 6: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/6.jpg)
![Page 7: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/7.jpg)
public class Invoice {
public string CustomerId;
private DateTime InvoiceDate;
public string SomePrivateData;
...
}
[DataContract]
[DataMember]
[DataMember]
![Page 8: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/8.jpg)
public interface IInvoiceService {
void SubmitInvoice(Invoice invoice);
InvoiceStatus GetStatus(Invoice invoice);
void CancelInvoice(Invoice invoice);
}
[ServiceContract]
[OperationContract(IsOneWay=true)]
[OperationContract]
![Page 9: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/9.jpg)
public class InvoiceService : IInvoiceService{
public void SubmitInvoice(Invoice invoice) {
... // implementation omitted
}
...}
[ServiceBehavior(InstanceContextMode=InstanceContextMode.Single,ConcurrencyMode=ConcurrencyMode.Multiple)]
[OperationBehavior(
Impersonation=ImpersonationOption.Required)]
![Page 10: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/10.jpg)
![Page 11: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/11.jpg)
![Page 12: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/12.jpg)
class Program {
static void Main(string[] args) {
ServiceHost host =
new ServiceHost(typeof(InvoiceService));
... // configure the host before opening
try {
host.Open();
Console.ReadLine();
host.Close();
}
catch (Exception e) {
Console.WriteLine(e);
host.Abort();
}
}
}
<%@ ServiceHost Service="InvoiceService" %>
![Page 13: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/13.jpg)
![Page 14: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/14.jpg)
<configuration><system.serviceModel>
<!-- this is where you configure your WCF applications --></system.serviceModel>
</configuration>
![Page 15: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/15.jpg)
...host.AddServiceEndpoint(
typeof(IInvoiceService), new BasicHttpBinding(), "http://server/invoiceservice");
host.AddServiceEndpoint(typeof(IInvoiceService), new NetTcpBinding(),"net.tcp://server:8081/invoiceservice");
host.Open();...
![Page 16: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/16.jpg)
<configuration><system.serviceModel><services><service name="InvoiceService"><endpoint address="http://server/invoiceservice"
binding="basicHttpBinding"contract="IInvoiceService"/>
<endpoint address="net.tcp://server:8081/invoiceservice"binding="netTcpBinding"contract="IInvoiceService"/>
</service></services>
</system.serviceModel></configuration>
![Page 17: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/17.jpg)
![Page 18: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/18.jpg)
![Page 19: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/19.jpg)
![Page 20: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/20.jpg)
BasicHttpBinding b = new BasicHttpBinding();b.Security.Mode = BasicHttpSecurityMode.Transport;b.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Basic;
host.AddServiceEndpoint(typeof(IInvoiceService), b,
"http://server/invoiceservice");...
![Page 21: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/21.jpg)
<configuration><system.serviceModel>
<services><service name="InvoiceService">
<endpointaddress="https://server/invoiceservice"binding="basicHttpBinding"bindingConfiguration="MyBindingConfiguration"contract="IInvoiceService"/>
...</service>
</services><bindings>
<basicHttpBinding><binding name="MyBindingConfiguration">
<security mode="Transport"><transport clientCredentialType="Basic" />
</security></binding>
</basicHttpBinding></bindings>
</system.serviceModel></configuration>
![Page 22: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/22.jpg)
![Page 23: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/23.jpg)
...
ServiceHost host =
new ServiceHost(typeof(InvoiceService));
ServiceMetadataBehavior smb =
new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);
host.Open();
...
![Page 24: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/24.jpg)
<configuration><system.serviceModel>
<services>
<service name="InvoiceService"
behaviorConfiguration="MetadataBehavior">
...
</service></services>
<behaviors>
<serviceBehaviors>
<behavior name="MetadataBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
![Page 25: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/25.jpg)
<configuration><system.serviceModel>
<services><service name="InvoiceService"
behaviorConfiguration="MetadataBehavior"><endpoint
address="net.tcp://server:80801/invoiceservice/mex"binding="mexTcpBinding"contract="IMetadataExchange"/>
...
![Page 26: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/26.jpg)
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode xmlns:a="..." xmlns="">a:InternalServiceFault</faultcode>
<faultstring xml:lang="en-US" xmlns="">The server was unable to process the request
due to an internal error...</faultstring>
</s:Fault>
</s:Body>
</s:Envelope>
![Page 27: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/27.jpg)
<configuration><system.serviceModel>
<behaviors><behavior name="Default">
<serviceDebug includeExceptionDetailInFaults="true" /></behaviors>
</behaviors></system.serviceModel>
</configuration>
![Page 28: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/28.jpg)
...
public void DoSomething(string input) {
...
throw new FaultException("Something bad happened");
}
![Page 29: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/29.jpg)
![Page 30: Programming services-slides](https://reader034.vdocuments.pub/reader034/viewer/2022051816/546fd6edaf7959a90a8b4692/html5/thumbnails/30.jpg)