in

Community Blogs

Blogs of different SQL/Developers Community Members

This Blog

Syndication

DamirDobric

listopad 2011 - Posts

  • Windows 8 touch interactions

    Press and hold to learn. This functionality is similar to “hover”.







    Hold to show tooltip.
    image 

    image
    Touch for action.
    Used to open some item or to start some action.
    image
    Slide to drag image
    Swipe to select.
    Swipe again to unselect.
    See the menu at the bottom which appears after selection.










    In applications which use scroll-bar functionality in vertical direction you can use horizontal swiping (picture at the right)
    image imageimageimage
    image 
    Pinch to zoom
    There are two kinds of the zoom: Optical and Semantic.






    To understand semantic zoom take a look on transition from tile view.
    image

    image image image
    Swipe can be used to show command bar of the system and application.





    Swipe from the right edge shows system UI.












    Swipe from button shows application command bar.



    Swipe from left pull in the last suspended app in the front. Similar to ALT+Tab.


    image

    image
    image

    image
    Rotate fingers to rotate content. image
       
  • WCF Binding Performance comparison–Part 2

    In the previous post I have described group of WCF performance binding test which we did. This post contains results and comparison of various scenarios and bindings.

    Influence of message size


    Following picture shows the operation execution time in dependence on the message size. For this test NetTcpBinding has been used without message security and reliable session (blue) and BasicHttpBinding with no security session (red).

    image

    Next diagram shows more precisely  the same result by smaller messages sizes.

    image

    Following table shows values represented in diagrams:

       

    20 B

    1 kB

    10 kB

    100 kB

    625 kB

    6 MB

    17 MB

    20 MB

    40 MB

    NetTcp

     

    1,18

    1,09

    1,19

    2,05

    8,93

    69,9

    188,7

    209,3

    412

    basicHttp

     

    1,22

    0,99

    1,24

    2,41

    15,43

    240

    270

    309,6

    616,2



    We have also tried to determine if there is some meaningful correlation between shown values which would describe this function like:

                                                  time = f (message size)

    Unfortunately, this function is not linear one!

    Following configuration has been used:

    <binding name="NetTcpNoAnythingBinding_ISampleService" closeTimeout="00:01:00"

                                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"

                                    transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"

                                    hostNameComparisonMode="StrongWildcard" listenBacklog="10"

                                    maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"

                                    maxReceivedMessageSize="6553600">

                    <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384"

                        maxBytesPerRead="6553600" maxNameTableCharCount="16384" />

                    <reliableSession ordered="false" inactivityTimeout="00:10:00"

                        enabled="false" />

                    <security mode="None">

                    

                    </security>

    </binding>

    NetTcp and BasicHttp bindings (no reliable sessions and no security session) have very similar transfer rate up to 10 kB message size!

    Influence of reliable  session and message size


    In this test I compared all session capable bindings. Note that in all four tests message security has been enabled. That means that all messages have been encrypted in all tests shown below.

    image

    How much WCF-trace does slow down message transfer?

    You will sometimes have to enable tracing in production. In this case you might ask yourself, how much will the WCF trace slow down the performance. Following diagram shows result:
    image

    Following table shows all values more precisely:

    image

    How much WCF trace does slow down message transfer?

    Following diagram shows the influence of Fiddler. In this test all messages have been transferred to  Fiddler-Proxy and then to service.
    image

     

    All Test results in one Table

    image

    Posted lis 26 2011, 01:29 by anonymous
    Filed under:
  • Service Bus MessageQueue error


    When working with Queues in AppFabric ServiceBus you might get following exception:

    It is not possible for an entity that has group support enabled to create a non grouped message receiver.

    This exception is caused usually by following line of code:

    MessageReceiver myMessageReceiver = myQueueClient.CreateReceiver(ReceiveMode.PeekLock);

    This call creates receiver from the queue which should not be session-enabled.

    If the queue has been created as session enabled the error shown above will be thrown.

    To workaround this error either create the queue with RequiresSession = FALSE

    Queue myQueue = namespaceClient.CreateQueue(QueueName, new QueueDescription() { RequiresSession = FALSE});

    or create the session-aware receiver

    SessionReceiver myMessageReceiver = myQueueClient.AcceptSessionReceiver("mysession2", ReceiveMode.PeekLock)

  • Advanced Developer Conference 2011– WCF Internals

    Agenda for my ADC Session: “WCF Internals – Leistungsoptimierung”

    Who should attend this session?
    This sessions is designed for all architects and developers who are interested to see some undocumented WCF internal topics. Please not that don’t have to be WCF expert to attend, but you should know at least some basics.

    Session Level: 300-400

    For more information please take a look on picture below.

    image

    Performance undocumented…

    image

    Building and putting types on “the fly” while service is running…

     

    Flatten WCF WSDL without making any change to service…

    Creating of flatten WSDL contract from WCF service:

    FlattenXml http://localhost/Daenet.TrackingService/TrackingService.svc Out

    Sollte dies nicht reichen, bitte auf Details achten. Bitte in die Dose reinzoomen:

    image

    Es stellt sich immer noch eine Frage: “Was ist mit weiteren 5% passiert?” Smile

    Posted lis 25 2011, 12:01 by anonymous
    Filed under:
  • WCF Binding Performance comparison

  • Http message transfer enabled message security and disabled reliable session. (Test name: reliable Session - Msg Security)
  • Http basic binding with enabled streming (Test name: BasicStreamed).
  • All these tests invoke same operation:

    [OperationContract]
    int DoWork(string msg); Second group covers following scenarios (of course no encryption digital signature and session):

    • Sending of a binary array. (Test name: Testname: Mtom_Test)
    • Streaming of data via streamed contract (StreamedOverHttp_Test)

    Results will be published soon.

    Posted lis 21 2011, 09:24 by anonymous
    Filed under:

    WCF is definitely powerful  foundation for connecting systems by using various protocols. However many people complains that all around WCF is a bit complicate.
    This is true, but we all have to understand that “connecting systems” knowledge requires the truth architecture knowledge of connected systems and of the world between and around them. Because of that most developers just consume WCF at the simples possible way. This is probably in many cases the best way to get something just working.
    Unfortunately if you want to get more from WCF, you will need much more time and understanding of all artifacts which most developers likely do not have to consider.This post should help all developers to find out as quick as possible the best possible tuning option for communication. More over it is recommended to all architects to take a look on results presented here.

    Following table shows the list of more or less all WCF common bindings (source Aaron post ).

    Binding Class Name
    Transport
    Message Encoding
    Message Version
    Security Mode
    RM
    Tx Flow*
    BasicHttpBinding
    HTTP
    Text
    SOAP 1.1
    None
    X
    X
    WSHttpBinding
    HTTP
    Text
    SOAP 1.2
    WS-A 1.0
    Message
    Disabled
    WS-AT
    WSDualHttpBinding
    HTTP
    Text
    SOAP 1.2
    WS-A 1.0
    Message
    Enabled
    WS-AT
    WSFederationHttpBinding
    HTTP
    Text
    SOAP 1.2
    WS-A 1.0
    Message
    Disabled
    WS-AT
    NetTcpBinding
    TCP
    Binary
    SOAP 1.2
    Transport
    Disabled
    OleTx
    NetPeerTcpBinding
    P2P
    Binary
    SOAP 1.2
    Transport
    X
    X
    NetNamedPipesBinding
    Named Pipes
    Binary
    SOAP 1.2
    Transport
    X
    OleTx
    NetMsmqBinding
    MSMQ
    Binary
    SOAP 1.2
    Message
    X
    X
    MsmqIntegrationBinding
    MSMQ
    X**
    X
    Transport
    X
    X
    CustomBinding
    You decide
    You decide
    You decide
    You decide
    You decide
    You decide

    Depending on what are you going to do the decision of what the binding is the best for you will not be easy. Because this is an obvious issue in the community in context of performance, we (daenet) have decided to prepare lot of measurements for our WCF-Internals session at  Advanced Developer Conference 2011 in Germany. Please also take look on this measurement provided by Microsoft few years ago.
    For this performance test we created following WCF contract:

      [ServiceContract()]//SessionMode=SessionMode.Allowed)]

        public interface ISampleService

        {

            [OperationContract]
            int DoWork(string msg);
            

            [OperationContract]
            int PushStream(Stream msg);
     

            [OperationContract]
            int PutData(string msg, byte[] data);
        }

     
    We also have implemented the service for this contract. Please see comments to understand what is the purpose of what operation.

    public class SampleService : ISampleService

        {

            /// <summary>

            /// Invoked by all tests instead of streaming and MTOM.

            /// </summary>

            /// <param name="msg"></param>

            /// <returns></returns>

            public int DoWork(string msg)

            {

                return new Random().Next(int.MaxValue);

            }

     

     

            /// <summary>

            /// Invoked by streaming test (StreamOverHttp).

            /// </summary>

            /// <param name="msg"></param>

            /// <returns></returns>

            public int PushStream(Stream msg)

            {

                return new Random().Next(int.MaxValue);

            }

     

            /// <summary>

            /// Invoked by MTOM test only.

            /// </summary>

            /// <param name="msg"></param>

            /// <param name="data"></param>

            /// <returns></returns>

            public int PutData(string msg, byte[] data)

            {

                return new Random().Next(int.MaxValue);

            }

        }


    Then we installed the service on IIS with HTTP and TCP enabled protocols:

         <endpoint address="basic" binding="basicHttpBinding" bindingConfiguration="basicBinding" contract="PerformanceSamples.ISampleService" />

     

            <endpoint address="basicStreamed" binding="basicHttpBinding" bindingConfiguration="basicStreamedBinding" contract="PerformanceSamples.ISampleService" />
     

            <endpoint address="mtom" binding="basicHttpBinding" bindingConfiguration="basicMtomBinding" contract="PerformanceSamples.ISampleService" />

           

            <endpoint address="tcp" binding="netTcpBinding" bindingConfiguration="tcpNoSessionBinding" contract="PerformanceSamples.ISampleService">
            </endpoint>

     

            <endpoint address="tcpSession" binding="netTcpBinding" bindingConfiguration="tcpSessionBinding" contract="PerformanceSamples.ISampleService"/>

     

            <endpoint address="tcpNoAnything" binding="netTcpBinding" bindingConfiguration="tcpBinding" contract="PerformanceSamples.ISampleService"/>

     


    Bindings for shown endpoints look like shown in following table. You do not have to read all details here. They are here if you want to know how exactly we have configured specific bindings.

     <basicHttpBinding>

           

            <binding name="basicBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"

                     maxBufferSize="2147483647"  maxBufferPoolSize="1" maxReceivedMessageSize="2147483647"

                     messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

            

              <security mode="None">

               

              </security>

            </binding>

     

            <binding name="basicStreamedBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:11:00" allowCookies="false" bypassProxyOnLocal="false"

                     hostNameComparisonMode="StrongWildcard"

                     maxBufferSize="65535" maxBufferPoolSize="65535" maxReceivedMessageSize="2147483647"

                     messageEncoding="Text" textEncoding="utf-8" transferMode="Streamed" useDefaultWebProxy="true">

             

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

     

              <security mode="None">

     

              </security>

            </binding>

     

     

            <binding name="basicMtomBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:11:00" allowCookies="false" bypassProxyOnLocal="false"

                   hostNameComparisonMode="StrongWildcard"

                   maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"

                   messageEncoding="Mtom" textEncoding="utf-8" transferMode="Streamed" useDefaultWebProxy="true">

     

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />

     

              <security mode="None">

     

              </security>

            </binding>

          </basicHttpBinding>

     

          <netTcpBinding>

            <binding name="tcpNoSessionBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" transactionFlow="false"

                     transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="6553600"

                     maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" />

              <reliableSession enabled="false" />

              <security mode="Message"></security>

            </binding>

     

            <binding name="tcpSessionBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"

                     transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard"

                     listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" />

              <reliableSession enabled="true" />

              <security mode="Message"></security>

            </binding>

     

     

            <binding name="tcpBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"

                     transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard"

                     listenBacklog="10" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">

              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="2147483647" maxNameTableCharCount="16384" />

              <reliableSession enabled="false" />

              <security mode="None"></security>

            </binding>

           

           

          </netTcpBinding>


    Then we have implemented tests which invoke named service operations by sending of messages of different size like: 10kb, 100kb, 600kb, 6MB, 17MB, 20MB and 40MB. Then we have grouped test in two groups. First group of tests uses operation DoWork(string) . Second group of tests is related to sending of binary array and stream. 

    First group covers following scenarios:
    • Simple Http text message Transfer. (test name: Basic Unencrypted – No credentials)
    • Simple Tcp text message transfer (test name: NetTcp No Reliable session – no credentials)
    • Http text message transfer with enabled message security. (Test name:WsHttp No reliable session – Msg security)
    • Tcp  text message transfer with enabled message security.(Test name: NetTcp no reliable session – Msg security)
    • Http message transfer with message security and enabled reliable session.(Test name: WsHttpNo reliable Session - Msg Security)
  • When is the WCF service auto-started?

    Windows Server AppFabric offers the more or less well-known auto-start feature. Because many people seem to be confused with this I decided to post shorty few important facts.

    How to enable Auto-Start?

    1. To enable this feature you need to enable the it on application which host your service or on the service itself. I have described this in this article at TechNet..

    2. You need to set the pool to AlwaysRunning. Open C:\Windows\System32\inetsrv\config\applicationHost.config and change the pool settings as shown below:
    <applicationPools> <add name=”MyAppPool” startMode=”AlwaysRunning” /> </applicationPools>

    How to figure out that it works?

    1. Open following Operational-Event-Log, restart the pool and notice following messages:
    imageimage

    If these messages are not there or if some error/warning is to see, the auto-start didn’t work. If the service starts, but not in the expected pool apply following patch.

    2. If you have a custom behavior attach debugger to it or trace-out some messages. After pool is restarted your behavior will be immediately executed.

    3. If you have a singleton service the constructor will be invoked after pool has successfully started.

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
        public class Calculator : ICalculator
        {

            public Calculator()
            {
                Debug.WriteLine("AUTOSTARTED");
                Debugger.Break();
            }
      }
    }

     

    When is this feature helpful?

    1. It enables the service warm-up. For this reason it is not necessary to send the first message to service to perform initialization.
    Unfortunately this works only if your service is singleton (InstanceContextMode = Single) or if you initialization is implemented in one WCF extensibility point like behavior etc.

    2. Some protocols, such as the WS-Discovery protocol, require applications to be always available. If you ever tried WCF-Discovery have have probably noticed that it does not work in IIS. This can be worked around by enabling auto-start of the service which has to be discovered.

    3. This feature also enables hosting of services in IIS if they are configured to use service bus rely-bindings.

    4. You can implement the singleton service whose constructor will be invoked when the pool starts or restarts. In this scenario you can implement the service functionality which is similar to classical  Windows Service.

    5. daenet has implemented Workflow Activity which ensures that your service (implemented as activiy) is started after pool start (machine start). The good thing on this activity is that this implementation is in fact the implementation of singleton service service in cluster. Try to do it with any existing technology and you will see how difficult this can be. In other words WCF singleton implementation is not real singleton. .It is singleton at one machine or even application (site) only.

    Is there anything what does not work, but is should?

    Yes and No. Yes, because the most common issue is a service which is not a singleton, which use some static variables with long initialization time. Because the service is not singleton, the constructor is not called on auto-start. So the initialization cannot be done.
    If you use extensibility points, this will help, but usually the service should never know about extensibility point and service should not know anything about extensibility point. To make it working extensibility point would perform initialization and set result to some variable like GLOBALCONTEXT.Result.
    The service can read the result by GLOBALCONTEXT.Result. This will work, but it is very bad design and voted for ‘No

    Hope this clarifies few auto-start gotchas.

    Damir

    Posted lis 19 2011, 11:45 by anonymous
    Filed under: ,
  • Announcing WpWidgetLibrary – HTML Widgets for Windows Phone


    If you are thinking about cross device support for Android, IPhone and Windows Phone you will probably have to target the HTML5 wave. Unfortunately as Windows Phone developer you will figure out that putting of your app on device is not very trivial task. This fact will limit you to build apps in HTML5 in offline mode (app which do not need network all the time).

    if you are WP developer and wants to build the app once and run it on all devices at the market this is the right project for you. If you are not a WP developer (WP stands for Windows Phone) and wants to run you app at WP, this project will makes you more than happy.

    daenet team is proud to announce the first version of the WpWidgetLibrary CodePlex project, which provides support for HTML5 Widgets for Windows Phone. We have been inspired with the great idea of Windows Mobile 6.5 Widget Apps. Now after we have demoed* it live at Mobility Day and after powerful and promising MANGO has been released we are moving step forward and announcing the first version of WpWidgetLibrary (HTML Widgets support for Windows Phone) on CodePlex (http://wpwidgetlibrary.codeplex.com).


    Damir

    *We have shown at Mobility day in two sessions how Widgets work on Windows Phone, Windows 8 Metro platform and Android. Sorry for IPhone, but we did two sessions only :)

  • Tuning IIS for large WCF Message

    Sometimes there are situations which require transfer of large messages when using web services. When working with WCF you will run in this issue very easy. The most prominent error message in this context is probably “The remote server returned an error: (404) Not Found.”.

    You have to notice that this message is thrown either by processing of request inside of Service Model at the server side or by processing of request inside of HTTP pipeline in IIS.

    WCF stack tuning

    Usually you should enable WCF tracing at service side to figure out what is going on.If the error is caused by WCF you will find warning or errors which describe briefly what to do.One of solution for such issues if to increase maxBufferPoolSize, maxBufferSize or even readerQuotas. Here is great post Yi-Lun which describes undocumented details about how this works.

    IIS http runtime tuning

    Unfortunately there are messages which break through IIS defined limits. In this case you will get again “The remote server returned an error: (404) Not Found.”, but this time WCF Trace Viewer will not write any error. This is because the message does not reach WCF stack at all, It is rejected by IIS.

    To fix this problem try following:

    <system.web>

        <httpRuntime maxRequestLength="2147483647" />

      </system.web>

    IIS request Content  tuning

    If previous two workaround do not work, there is one more (last) chance to get it working, You need to setup the IIS content length of one request.

      <system.webServer>

        <security>

          <requestFiltering>

            <requestLimits maxAllowedContentLength="2000000000" />

          </requestFiltering>

        </security>

      </system.webServer>

    Last but not least, this post describes issues which happen, when sending messages larger than 10MB or 50MB. I would recommend to use streaming in such cases rather than default buffered transfer. It is faster and it does not require large buffer sizes.

    Posted lis 13 2011, 05:53 by anonymous
    Filed under: ,
  • Flatten WCF WSDL

    When working on hybrid solutions with WCF you will definitely get a requirement to share your WSDL. All of you who are working on such project already know or even feel that this can be a serious issue.
    WSDL typically describes the contract and configuration of one Web Service. Unfortunately when working with WCF you will figure out that downloaded WSDL is a file which reference number of types shared in several schema document (unflatten WSDL). In fact we should not care about this as long we have the access to the service URL. The problem is if the URL of the service is not reachable or if the service even not exist yet. This is exactly how typical project runs. One or more teams agree the contract (WSDL) which should be created and shared to teams.

    In this it is easiest way for WCF developer to build the mock service which exactly implement defined contract. But, how to send that WSDL to somebody else?
    by using of SVCUTIL it is possible to download all metadata locally.
    This is how it works:

    svcutil /t:metadata http://youserviceusr?wsdl

    This command downloads all related documents locally. After you have all needed documents you can compress them and send to other team.  Unfortinatelly this will not work. You should never send downloaded metadata to anybody, because they are not usable. Here is why…

    image

    Open any of downloaded documents which contains reference to other document (import element). You will notice that attribute location points to the original URL suffixed with schema name. Practically that means that somebody who wants to generate proxies from these metadata will be implicitly redirected to the original URL. Remember our assumed constrains was “There is no running service or/and there is no access to it”.

    To make this clear. Imagine you are the guy who has received these documents. If you want to create WCF proxies from them you would type:

    svcutil tempuri.org.wsdl  (where tempuri.org.wsdl is the name of the root metadata document downloaded by previous command)

    This command will fail, because no any of references hidden in downloaded documents can be resolved. This seems to be bug in SVCUTIL. I have figured out that this is not the bug. It is by design of SVCUTIL. This is painful, but why somebody decided to build such design of /t:metadata?
    The reason for this is a huge limitation of SVCUTIL. This tool is not capable of referencing of any metadata document which does not starts with http://…
    I have tried to replace  all imports to file:///MyService.wsdl, but without success.

    To make this working there are few tools like http://wcfextras.codeplex.com/. Unfortunately I always had some difficulties and decided to do it different way. In general I don’t like to make any change in my service to flatten XML. This is what all these tools require.

    I wrote the simple program called FlattenXml.exe which downloads all metadata from service as it is and automatically replace all references from http://…/DOC to wsdl/DOC.
    This means that all references will point to relative URL /wsdl/referencedDocumentName.xy. With knowing this you can simply create a web application in IIS with physical location to folder with downloaded metada data.

    Here is one example what to do:

    Export, Prepare and Send metadata

    1. Execute flattenxml.exe to download and correct metadata references

        FlattenXml http://localhost/service/servicefile.svc?wsdl OutputFolder

    2. Compress all data and send them to other team

    Create proxies from exported metadata

    1. The team which has received metadata will uncompress all files in one folder like c:\temp\metadata.

    2. The team will have to create an application in IIS with the  name WSDL (this is hardcoded name in tool and it cannot be changed)
         image

    3. Now the team can create the proxy

    svcutil http://localhost/wsdl/therootmetadatadocument.wsdl

    The root document has always extension WSDL. Sometimes there is another WSDL document. Note that only one document reference to onother one. If you are not sure take a look in file map.xml which has been generated in output folder. This is how this file looks in my case. I have used service with very complex contract defined by EPCIS specification.
    image

    Lookup the URL with “?wsdl” in URL .(blue fame). The name of the root file is in filename attribute (red frame). So, to create metadata browse for
    svcutil http://localhost/wsdl/TrackingServiceSoap.wsdl

    The tool can be downloaded here.

    Posted lis 09 2011, 12:08 by anonymous
    Filed under: ,
Copyright of SQL/Developers Community
Powered by Community Server (Commercial Edition), by Telligent Systems