More Reasons to Not use ASMX Services in New Code

Many people continue to use ASMX web services despite my earlier post “Microsoft says: ASMX Web Services are a “Legacy Technology”” and other such warnings. This is, of course, a matter of personal preference. Here are some of the many reasons why I personally prefer not to use ASMX services for new development:

  1. ASMX web services are Microsoft’s first attempt at web services. They were a good start – they showed us why we need WCF.
  2. There are very few extensibility points.
  3. ASMX supports only SOAP 1.1 and 1.2, and can be coerced into returning JSON for JavaScript support. WCF supports those features plus everything else.
  4. ASMX can only be  hosted in IIS
  5. No support for any of the WS-* standards
  6. Again, ASMX Web Services are a “Legacy Technology”
  7. They are based on the old XML Serialization technology, which is not getting bug fixes. (see Microsoft comment on 1/11/2010)
  8. only proactively fixing the most critical customer impactful issues in XmlSerializer and xsd.exe, which are the technologies on which the SOAP support of ASMX services are based (see Microsoft comment on10/1/2008)
  9. no longer making enhancements to ASMX (see Microsoft comment on 6/29/2009 7:09 PM)

Whenever I’m asked, I recommend requiring that any new code deployed into a Production environment should be based on technology that is supported by the vendor. To me, this isn’t a simple matter of whether the code is on the vendor’s “supported” list. After all, ASMX is part of .NET 2.0, which is still supported. To me, it’s a question of, “if this technology breaks in my Production environment, can I count on the vendor fixing the bug”. In the case of ASMX web services and their underlying XML Serialization technology, the answer is, “no”.

As the links above demonstrate, we can count on Microsoft not fixing such bugs


7. Posted by Microsoft on 1/11/2010 at 11:34 PM

We have confirmed that the inherited properties do not show up in SOAP Sample on the browser and that is indeed a bug in the product.
At this point, this area is in maintainance (sic) mode, and no active work is planned.
thank you for reporting it.

8. Posted by Microsoft on 10/1/2008 at 10:10 AM

Thanks for finding this. We have investigated the issue and it is a bug. A workaround is to modify the generated schema to trick the code generation logic to not generate the multi-dimensional array. You can do this by adding a dummy attribute to the schema type. Unfortunately, we’re only proactively fixing the most critical customer impactful issues in XmlSerializer and xsd.exe. If this issue is causing business impact please contact Microsoft Product Support Services and we will be happy to explore various options.
Ed Pinto

9. Posted by Microsoft on 6/29/2009 at 7:09 PM

We’re no longer making enhancements to ASMX; we continue to support its existing functionality, but where possible, we recommend using WCF instead.

Posted in ASMX, Web Services, XML Serialization | Leave a comment

My Favorite Backup Software is Back from the Dead

I’ve been in the IT industry since the days when 6250 bpi reel to reel magnetic tape was a big deal. I’ve done a lot of backups, and one thing I’ve learned is: it’s not a backup if you can’t restore it.

After years of frustration with IOMEGA Backup (which often could not restore a backup), I found salvation in the form of a product named Dantz RetrospectThese people understood backup. Their software wasn’t the easiest to use in the world, but once set up, it pretty much just worked. I never found a situation where it couldn’t restore files correctly.

Unfortunately, it was sold to EMC back in 2004. Now, although EMC knew hardware, they proved to me that they didn’t know backup software. I pretty much stopped buying upgrades for Retrospect by version 7.5.

But today, I got an email telling me about “Retrospect 9 for Mac”. Now, I don’t have a Mac, but the idea of a new version of software named Retrospect interested me enough to browse to their site, where I read:

PLEASANTON, Calif.—November 2, 2011—Retrospect, Inc., a privately‐held company recently founded by longtime Retrospect team members, announced today the immediate availability of its first independent product offering, Retrospect 9 for the Mac. With features like data deduplication, network backup of Mac, Windows, and Linux computers, and new support for cloud‐based storage, Retrospect 9 provides critical functionality for professionals and small businesses that need more than basic data protection.

That’s some of the best news I’ve heard this year!

Posted in Technology | Leave a comment

Hypocritical Methods

I haven’t posted for a while, but I’ve just got to post about this.

I commented on a question on stackoverflow.com (“How to find the source of a request”, http://stackoverflow.com/questions/6551954/how-to-find-the-source-of-a-request):

Why do you want to do this? It sounds like a bad idea. What if you add another assembly? What if you move functionality from one assembly to another? Perhaps you should instead add a parameter to this method, and set it differently between the calls.

This promoted Dan Abramov (http://stackoverflow.com/users/458193/dan-abramov) to give the best answer I’ve ever seen to this class of question (http://stackoverflow.com/questions/6551954/how-to-find-the-source-of-a-request/6552237#6552237).

The question as asked was a specific case of a very general situation I see fairly frequently. You’ve got a method or other piece of code and you want it to behave differently in different contexts. You decide you need to understand the context of the call in order to decide how to behave. You ask about looking at the stack trace, or the calling web page or something like that.

The answer, as Dan puts it so eloquently, is to pass a parameter instead (in the case of wanting a UI control or other object to behave differently, the answer may be to set a property instead).

Posted in Uncategorized | Tagged | Leave a comment

Quick Hint for Troubleshooting XML Serialization Issues

 In the thread "pregenerated xmlserializers.dll is not beeing used", Nathan Anderson of Microsoft made the following suggestion:

to be really sure you can save any generated .cs files with this in your app.config:

<system.diagnostics>
      <switches>
         <add name="XmlSerialization.Compilation" value="1" />
      </switches>
</system.diagnostics>

This will drop any generated cs files in \Users\\AppData\Local\Temp (you can use process monitor to find out exactly).

Posted in Serialization | Leave a comment

La Película más Perfecta

Ayer, he vista al “Laberinto del Fauno”, una película de Guillermo del Toro. 

¡Actualmente, lo he vista dos veces! Esta película se habla enteramente en español.

Yo nunca veo las películas en español porque yo no hablo muy bien el español (como se puede ver). Parece que el arte es más fuerte de la lengua – yo entendió a eso de ¾ de las palabras.

¡Si ya no lo ha vista, véalo!

Posted in Personal | Leave a comment

Where to Find Forums on Microsoft Development

There are many good places to ask questions about Microsoft Development technologies. In fact, there are so many that it can become confusing. This article will be my start at clearing up the confusion. This is not the final form of the article: I hope to hear from you in the comments about how you think I should change it.

The Starting Point – MSDN

The central source of information on Microsoft technologies from a Developer’s point of view is the Microsoft Developer Network (MSDN). Some of you may think that MSDN is only the magazine or the subscription service, but that’s very far from the truth. The MSDN web site at http://msdn.microsoft.com/ is the place to start when you’re looking for information. It now includes more than just information from Microsoft, and links out to blogs and other sources of information outside of Microsoft.

Part of the MSDN site is the MSDN Forums. I recommend everyone to click that link, then click the “collapse all” button and scan the list of categories – there’s a huge number of individual forums there, having to do with .NET, Visual Studio, SQL Server and SharePoint development, Office development, and even native Windows development.

Other Microsoft Forums

Some groups at Microsoft have their own “center” sites, and some of these have forums of their own:

Area Site Forums
http://www.asp.net/ http://forums.asp.net/
http://silverlight.net/ http://silverlight.net/forums/
http://www.iis.net/ http://forums.iis.net/
http://windowsclient.net/ http://windowsclient.net/Forums/

 

Stack Overflow

Of course, there are many places outside of Microsoft where you can get help and ask questions about Development issues. One of those is http://stackoverflow.com/, which is actually not a discussion forum. StackOverflow is a question and answer (Q&A) site: you can do a quick search to see if someone has already answered your question, and if not, click “Ask a Question” to get started.  StackOverflow is community-managed: community members may comment on your question, asking for clarification of your question; you should clarify it by editing the original question, not by making a new post: a new post would be an Answer, not a question. If your question, subject line or tags are not clear, someone may edit your question to make it clearer.

For this and more about how StackOverflow differs from other discussion forums, please read the faq: http://stackoverflow.com/faq.

Posted in Development | Leave a comment

Microsoft says: ASMX Web Services are a “Legacy Technology”

Microsoft is finally acknowledging in public something that I’ve been failing to convince people about for a while now. From “XML Web Services Created Using ASP.NET and XML Web Service Clients” on MSDN:

This topic is specific to a legacy technology. XML Web services and XML Web service clients should now be created using Windows Communication Foundation (WCF).

You will find this paragraph on many pages under this topic, and I hope this paragraph will be placed on every page associated with ASMX in the near future.

Also, consider: if ASMX is "legacy", then what does that make WSE, which is based on ASMX? Still obsolete.

Posted in Web Services | 2 Comments