programming services-slides

30

Upload: hoc-lap-trinh-web

Post on 22-Nov-2014

803 views

Category:

Education


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Programming services-slides
Page 2: Programming services-slides
Page 3: Programming services-slides
Page 4: Programming services-slides
Page 5: Programming services-slides

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
Page 7: Programming services-slides

public class Invoice {

public string CustomerId;

private DateTime InvoiceDate;

public string SomePrivateData;

...

}

[DataContract]

[DataMember]

[DataMember]

Page 8: Programming services-slides

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

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
Page 11: Programming services-slides
Page 12: Programming services-slides

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
Page 14: Programming services-slides

<configuration><system.serviceModel>

<!-- this is where you configure your WCF applications --></system.serviceModel>

</configuration>

Page 15: Programming services-slides

...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

<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
Page 18: Programming services-slides
Page 19: Programming services-slides
Page 20: Programming services-slides

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

<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
Page 23: Programming services-slides

...

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

<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

<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

<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

<configuration><system.serviceModel>

<behaviors><behavior name="Default">

<serviceDebug includeExceptionDetailInFaults="true" /></behaviors>

</behaviors></system.serviceModel>

</configuration>

Page 28: Programming services-slides

...

public void DoSomething(string input) {

...

throw new FaultException("Something bad happened");

}

Page 29: Programming services-slides
Page 30: Programming services-slides