views:

266

answers:

3

I have been working with webservices for over 2 years now. I have lot to say about services like Soap 1.2, WSDL, the way communication is taking place and 100 of other things.

I have seen people talking about their heavy ASMX background and web services expertize. But, when it comes to implementation I don't find anything but adding a web reference and calling few methods from C#. All the things that we talk about (serialization, deserialization, soap, blah blah) is taken care by Microsoft internally.

So I want to know if it is all we have to do while dealing with WebServices or is there anything more to it?

Rephrase: I wana know what an expert of ASMX must know about these services.

I'll appreciate if you can provide some good references, material or any comments on this.

+3  A: 

I think you are approaching this from a implementor/tools standpoint; yes, Visual Studio does a lot of the heavy lifting to make a developer feel like calling Web services is the same as calling any method -- but developers who use the tools blindly without knowing what code is being generated and how it all works are, as you suggest, not experts.

To say you are an expert, I think you would need to be able to talk about things like the following:

  • Pros and Cons of using services in your architecture (performance considerations, versioning issues, synchronous versus async, etc.)
  • Reasons you would want to use ASMX versus WCF
  • Internal implementaiton of the SOAP protocol, how SOAP headers can be used for security, etc.
  • Knowledge of the "internals", so you could potentially expose services for consumption by non-Microsoft clients (java, etc.)
  • Features of WSE, including the different versions
  • Security concerns -- how to secure access to a service, and how to secure the data being transferred back and forth
Guy Starbuck
Thanks Guy. Ok lets not talk about WCF here for now (that will be another huge topic). For ASMX, knowledge of internals or SOAP protocols gives you an edge in discussions or making an impression on manager or client, but how much of it we really use or need to know?Only aspect of ASMX sevice that I have touched in detail was Certificate based security.
noob.spt
Of course, how much you "need to know" depends on what you are trying to do. If you just want to develop web services and you are working in an environment that already has the protocols set up, you are probably fine knowing what you do now. If you want to architect SOA systems, or if you are in a role where you are championing their use to a client or manager, you would want to know more.
Guy Starbuck
Well, as of today I am just a "stick to your own work" kind of developer. But I wana know what it takes to become an architect. Could you guide me to some real world problems and what kind of solutions ppl came up with? But again I dont want to go here in depth of SOA, I am looking for hidden ASMX techniques that were used to handle these situations. I hope it makes sense.
noob.spt
A: 

I would say that just knowing ASMX and/WCF basics doesn't make an expert out of you from a web service point of view.

It is true that all the plumbing is taken care of, but you generally have to go back to it at one point or another. It's always very easy to connect asmx to asmx, wcf to wcf, axis2 to axis2... But once you start to make these communicate together, problems start to show. Did you ever worked on a project using web services where at some point you had issues with the generated WSDL, or the generated proxy?

I would say that for someone to claim being asmx expert, he shouldn't look surprised if you start talking about soap 1.1 and 1.2, WS basic profile, WS-*, and all those things that apears to be abstracted away at first sight, but which you'll have to come back to at some point.

Philippe
Thanks Philippe. Interoperability surely makes sense and could be challenging. Could you guide me to some particular direction or reference which explains these issues in detail? I never had any problem while generating WSDL. My client is using JAVA and various other platforms, but somehow I never had any interoperability issues. If you can provide me some link where ppl have faced similar problem or talks about how to attack such issues. Where we may need to go in details of SOAP and WS profiles?
noob.spt
A: 

If you want to consider yourself an expert in ASMX, then you need to understand the SoapExtension class and the related SoapExtensionAttribute. I do not feel that it's necessary to understand SoapExtensionImporter and SoapExtensionReflector.

You should also understand XML Serialization, since that is what is used to serialize and deserialize between objects and SOAP in an ASMX service.

You should also understand that Microsoft now considers ASMX web services to be "legacy technology" (reference on request).

John Saunders
@John: Glad to know that you are on this forum. Thanks for your input. Also, somehow today after this question I came across some interesting requirement in my project. Opening a new question for that. Guess, now I will learn inner details of ASMX.
noob.spt
+1..don't have enough reputation to VoteUp yet. Will surely do that later :)
noob.spt