5

Is it possible the following scenario in Azure?

I need to get data from customer premises into windows azure, process it and save it in db or table storage. The customer premises are behind firewall/nat .. etc. What is the best way to build one single solution (that will run for all customers) and allow me to get the data of a specific customer.

Basically the worker role will get the data from customer 1, process it and save it; than from customer 2 and so on.

I thought using service buss relay, but is it possible to build a custom wcf service that will run for many users, exposed in the same endpoint and allow the worker role to request data to that endpoint but for a specific customer?

David Dury
  • 5,537
  • 12
  • 56
  • 94

2 Answers2

2

I'm somewhat confused - if you need to GET data from your customers, can't they simply call your service? typically firewalls will allow outbound requests?

The Service Bus Relay would have come really handy if you wanted to send data to your customers in an async or semi-unsolicited fashion

Yossi Dahan
  • 5,389
  • 2
  • 28
  • 50
2

David, The Service Bus Relay is an ideal solution for this. You can write a WCF service that will run on each customer premise and connect to your single service in the cloud. Using Service Bus relay gives you a lot of advantages here: 1) For the client side service, you do NOT need to open any inbound ports in their NAT/Firewall since the Service Bus client will make an outbound connection. 2) You can run a single or multiple instances of your service in the cloud and listen to a single or multiple addresses/endpoints on Service Bus. That way you can both scale across the service or isolate per customer depending on your needs. 3) We support load-balancing where you can have several senders (from customer locations) connect to a single endpoint address, and here again for you cloud based listener service you can connect multiple instances to that same endpoint 4) Extensive WCF binding support is available so you can choose the appropriate channel for your needs

The following are additional resources to get started: Overview: http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-relay/ Sample: http://code.msdn.microsoft.com/windowsazure/Relayed-Messaging-Load-bd76a9f8

Abhishek Lal
  • 3,233
  • 1
  • 17
  • 16
  • However I have one question. In the sample you mentioned, how I can do it so that I will not use in the client the issuername: OWNER and it's secret key? I mean for security reasons, is it possible to create a custom issuername called: "MYCUSTOMER" and it's own key and this custom issuer name will not have full control like owner has .. ? Do you know what I mean? – David Dury Jan 25 '13 at 21:37
  • I know this question is 2 years old but I'm currently developing a very similar solution. In regard to creating additional identities for the Service Bus Authentication, have a look at SBAzTool from the Azure team, which is a command line interface and DLL that allows you to generate Service Bus identities and permissions (i.e. listen, send, receive) and keys programmatically. [Azure SBaZ Tool](https://code.msdn.microsoft.com/windowsazure/Authorization-SBAzTool-6fd76d93) Just putting this here in case anyone else comes across this question, as I did! – Ian Andrew Irwin Jan 23 '15 at 09:49
  • using Service Bus relay is fine, but for this either you need to have a wcf wrapper around your web service in on-prem or you need to make some config changes. Is it possible to call a on-prem web services from the azure web api without changing anything on the on-prem web services. – Ramprasad Aug 03 '17 at 16:54