Jean-Sebastien Delfino wrote:
Anderson, Jeff T (CA - Toronto) wrote:
Our client is also very interested in this topic, be very interested in seeing how it performed tighter integration, such as being able to declare an intent on a wcf service method and use the Tuscany or other SCA policy framework to satisfy the intent at runtime. Just one of many examples, I don't know a lot about W.CF but it does seem that the approach is very similar to SCA, so in theory, a binding shouldn't necessarily be Uber difficult.
Is anybody else interested in tighter integration up there?
Regards
Jeff

________________________________

From: Simon Nash [mailto:[EMAIL PROTECTED]
Sent: Mon 2007-10-22 10:33
To: tuscany-user@ws.apache.org
Subject: Re: SCA WCF Integration



You are correct that in Tuscany currently we don't have any way to
make a WCF Web service part of the SCA domain.

I think there are (at least) two options for how you could do this.

1. Use <binding.ws> on a SCDL reference to connect from the SCA domain
    to the WCF Web service.  The reference is part of the SCA domain but
    the WCF Web service that it invokes is not part of the SCA domain.

2. Create an SCA service that encapsulates the WCF service, and wire
    to this SCA service in the usual way.  The encapsulating SCA service
    is part of the SCA domain.  It would be possible to create a new
    component implementation type <implementation.wcf> to specify this
    encapsulation and perform the necessary WCF invocations.

This is a great topic to discuss and I'm sure others will have other
alternatives and opinions on the pros and cons of various approaches.

   Simon

James, Steven wrote:

I have a question regarding WCF and SCA integration which I am hoping
someone in this list can give clarity to.

As far as I see it currently a WCF Web service is not part of the
SCADomain. If a composed component had a dependency on a WCF component
could an explicit reference be set to that WCF web service in the SCDL
file? Or is this an internal matter and how we connect and invoke the
WCF component should be encapsulated in our SCA component?

Regards,

Steve


A few more thoughts, using the WCF Getting Started Calculator example at http://msdn2.microsoft.com/en-us/library/ms751519.aspx to illustrate what could be done...

- Step 1: Model the WCF service as an SCA reference with a WS binding, would look like this:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
          targetNamespace="http://sample";
          xmlns:sample="http://sample";
          name="Calculator">

   <!-- A Java Calculator service component,
       delegating the "add" operation to the WCF Calculator service -->
   <component name="CalculatorServiceComponent">
       <implementation.java class="calculator.CalculatorServiceImpl"/>

<!-- the addService reference bound to the WCF Calculator service -->
       <reference name="addService">
           <binding.ws port="...the WCF Calculator WSDL..."/>
       </reference>

   </component>

</composite>

Here the SCA domain only contains a reference to the external WCF service and its WSDL configuration.


- Step 2: Model the WCF Calculator as an SCA component implementation, like that:

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
          targetNamespace="http://sample";
          xmlns:sample="http://sample";
          name="Calculator">

   <!-- A Java Calculator service component
delegating the "add" operation to the WCF Calculator service component -->
   <component name="CalculatorServiceComponent">
       <implementation.java class="calculator.CalculatorServiceImpl"/>

<!-- the addService reference wired to the WCF Calculator service component --> <reference name="addService" target="WCFCalculatorServiceComponent"/>

   </component>

   <!-- A service component representing the WCF Calculator example -->
   <component name="WCFCalculatorServiceComponent">

       <!-- Web.config defines the app's services and references -->
<implementation.net config="C:\WCF-Samples\TechnologySamples\Basic\GettingStarted\CS\service\Web.config"/>

   </component>

</composite>

Here we would represent the WCF app as a component implementation, introspect its WCF Web.config or App.config file to determine the services it offers, its references and configuration. Once you've represented the WCF app as an SCA implementation + component you can start using SCA wiring in your SCA domain as usual.


To get Step 1 going will only require some configuration and Axis2 / WCF interop testing.

Step 2 will take a little bit of coding to support <implementation.net> and introspect WCF configs but it should be pretty easy to do...

Thoughts?


A few more code snippets to help illustrate Step 2:

This Web.config could be represented as an SCA component providing a service:
<configuration>
 <system.serviceModel>
   <services>
     <service
         name="Microsoft.ServiceModel.Samples.CalculatorService"
         behaviorConfiguration="CalculatorServiceBehavior">
<!-- ICalculator is exposed at the base address provided by host: http://localhost/servicemodelsamples/service.svc -->
       <endpoint address=""
                 binding="wsHttpBinding"
                 contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at http://localhost/servicemodelsamples/service.svc/mex -->
       <endpoint address="mex"
                 binding="mexHttpBinding"
                 contract="IMetadataExchange" />
     </service>
   </services>

<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
   <behaviors>
     <serviceBehaviors>
       <behavior name="CalculatorServiceBehavior">
         <serviceMetadata httpGetEnabled="True"/>
         <serviceDebug includeExceptionDetailInFaults="False" />
       </behavior>
     </serviceBehaviors>
   </behaviors>
 </system.serviceModel>
</configuration>


And that App.config could be represented as an SCA component with a reference:
<configuration>
 <system.serviceModel>
   <client>
     <endpoint address="http://localhost/servicemodelsamples/service.svc";
               binding="wsHttpBinding"
               contract="Microsoft.ServiceModel.Samples.ICalculator" />
   </client>
 </system.serviceModel>
</configuration>

Hope this helps.

--
Jean-Sebastien


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to