Looking at the Pros and Cons of Using a Prefab Web Service
One of the great things about .NET is the capability to use someone else's software that was written as a Web service. This means that you don't have to reinvent the wheel every time you need to incorporate a needed piece of functionality. A Web service is a piece of reusable code that can be invoked over the Internet or on your local network. A building block service is a term that Microsoft came up with to describe the essential functionality, built with Web services, that is needed by most applications.
You have many options when it comes to building block services. Although Microsoft coined the term, many other companies provide these types of services in a slew of categories in all shapes and sizes. Even though determining which of the Web services you will consume in your own applications may be difficult, you should know that, normally, Web services (and those classified as building block services) offer these benefits (or pros):
- High ROI: ROI stands for Return On Investment. In other words, if someone could show you that you would save money by purchasing a specific software package, wouldn't it be a no-brainer to purchase it? Well, this is what defines ROI. In fact, ROI means that the investment made yields a very high return. This is not unlike when you buy a stock low and sell it.
- ROI is a relative term. The return might take years to quantify or realize. On the other hand, you may have an immediate cost savings. Most likely, with building block services, you'll see ROI quite soon. For example, you know that Microsoft charges an annual license fee of $10,000, plus a periodic compliance fee of $1,500, to implement Passport. This sounds like a lot of money, especially if your company is small. However, you are not only getting to use the functionality with only a few hours of coding, but you get the reputation carried by Microsoft. This all yields an incredibly high ROI.
- Scalability: Most building block services are scalable so that they can grow and shrink as your business changes. Because Web services to be hosted in a Microsoft environment are built by using the .NET Framework, scalability is already built in. In fact, it is one of the core design requirements of .NET. Therefore, make sure that you check with your building block services vendor to see if the vendor's product is scaleable (but most likely, it is).
- Reality: In reality, some Web applications are so unbelievably complex that nobody in your IT department could possibly create them from scratch. And paying another business to create such a service just isn't worth it. No matter how much the services cost, they are worth it if they are offered as a building block service. An example of this is the MapPoint .NET building block service. If you need to incorporate mapping functionality into your applications, you have no other way to go.
- Flexibility: Most building block services allow you to try before you buy. You can normally test the service, and if you decide you like it, then you can invest the money to purchase or license it. You may even determine, after evaluation, that you, in fact, want to develop similar functionality yourself from scratch.
In most comparisons, you must have cons along with the pros. Building block services are no exception. However, most likely you'll find that licensing building block services is the best route to get up and running quickly and effectively. Here's the downside (or cons) of using building-block services:
- Cost: Even if you want to use a building block service, such as Passport or MapPoint.NET, you may find the licensing cost too prohibitive to incorporate it no matter what! Going broke in order to access a service is not the wisest business decision!
- Functionality: Even though it may make sense for you not to do development work in-house, you may not get exactly the functionality that you require. Hopefully, the building block service is configurable enough to allow you to code the missing pieces. Even better, perhaps the building block service vendor is willing to make your requested changes so you don't have to do it internally. You should fully check out the functionality available through these services to see if it meets your needs.
- Lost productivity: Some of the building block services are so cool that your employees may just play with them all day long. Two services that fall into this category are MapPoint.NET and Instant Messaging (IM). Users may actually lose productivity if they are playing with the mapping functionality all day long, which is, after all, very neat! Also, if your employees are suddenly flaming each other with IMs and productivity goes down, you won't lose as much money as you would have if you built your own IM service from scratch — but you will lose money. These may not be issues — as long as you are aware that productivity may actually go down and put measures in place to prevent your staff from having too much fun.
- To nip the productivity issue in the bud, think about offering these services only to employees who have to use it, or set up rules for when the services are to be used — and when they should be set aside. (No using IM when e-mail, the phone, or a face-to-face conversation is possible!)
- Speed: From a purely theoretical point of view, the speed of implementing code that runs over the Internet is slower than code running on your own servers internally. The reality is that the Internet and broadband connections are getting better all the time. If the Web service is designed correctly, speed shouldn't be too much of a factor.