This should be a no-brainer. Too bad it isn't.
The answer is WCF. It replaces the old ASMX web services. It's no longer accurate to say that WCF is the future - it's the present, and ASMX is the past, rapidly becoming ancient history.
The subset of WCF that you need to learn to do the same as you were doing with an ASMX service is really very easy.
- You don't need to know any binding by basicHttpBinding. Using this, your client programs can even continue to use Web References.
- You need to learn not to worry about the details of the XML your data contracts are being serialized to.
- You need to learn that the only parts of a DataContract that will be serialized are those marked as [DataMember]. It's an "opt-in" model instead of the "opt-out" model you had with the XML Serializer.
- You need to learn to define the contract of your service with an interface marked with [ServiceContract]
- You don't need a [WebService] class, but simply a class that implements your [ServiceContract] interface.
That's about all, really. You'll learn it very quickly. The rest of it is "gravy". It's a very rich gravy, with a lot of "meat" in it, but you can leave it on the side, or just take a little if you want it.