API Management Products

Any one can suggest me a best product in the market to do following in API Management. Our public API developed using .NET Web API

1. Throttling
2. Caching
3. Transformation XML->JSON or JSON->XML  
4. Authentication
5. Analytics
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Have you looked at Azure API Management? Of course the assumption is that you host your services on the Azure platform. Other alternatives exist (Apigee, Mashery). Open source options (https://tyk.io/, http://apigrove.net/, http://apiaxle.com/, http://wso2.com/api-management/)

If you want to bang up your own bits and pieces, there are various solutions available to you:

Request throttling is not natively supported in ASP.NET Web API. You can however implement it with a custom HTTP handler. See here and here (https://www.nuget.org/packages/WebApiThrottle/)

You can ROYO or use libraries such as CacheCow (https://github.com/aliostad/CacheCow/wiki) and CacheOutput (https://github.com/filipw/AspNetWebApi-OutputCache). They offer attribute based caching options and a quick to get started with.

Transformation XML->JSON or JSON->XML
Not sure what the issue is here... the .NET framework provides this sort of thing out-of-the-box and your APIs can consume either XML or JSON input. This is done through the framework's built in content negotiation capabilities.

Have you looked at the build in authentication options? (http://www.asp.net/web-api/overview/security) also options like IdentityServer (https://github.com/IdentityServer/IdentityServer3)

Again, you probably have to ROYO analytics here. But you can rely on libraries such as GoogleAnalyticsTracker which uses an action filter approach (with an option to only monitor api endpoints that implement a give attribute).
JRR75Author Commented:
Thanks for the detail information.

For Transformation, there is an intermediate component which accepts the request only in JSON or XML format to process the user request.

 Here is the scenario, user send the request to Public API in XML/JSON format and then the call forwarded to either Private API1(accepts only json) or Private API2(accepts only XML) method for processing.
Your Public API... how does it call the internal APIs?

Client: The client for you Public API, can send data in Xml and JSON format
Public API: Your Public API uses content negotiation (supported out of the box by Web API for example) to deserialize the object. With C#, this all happens transparently and your controllers/services are not aware of these details. You just get a proper POCO passed to your code.
Internal API: Now you need to pass this to the internal APIs. You have received a POCO, you want to send this onto the other Internal APIs. When calling your internal APIs, it's a good idea to just use libraries such as RestSharp/Refit/etc which help with making the HTTP calls for you. These also allow you to serialise the POCO you just received and pass it onto them in the right format. Such as:
var client = new RestSharp.RestClient();
var request = new RestRequest(myInternalAPIUrl);
request.RequestFormat = DataFormat.Xml; //(or if you want JSON then set DataFormat.Json)

// add parameters for all properties on an object

// or just whitelisted properties
request.AddObject(thePocoFromThePublicAPI, "Property1", "Property2", ...);

//then execute the request, and you can even have RestSharp automatically deserialise the response from the internal api too.

Open in new window

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
JRR75Author Commented:
you have been wonderful by giving excellent solution. Thanks
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.