I use a small webserver for inter-process-communication between .NET and and an executable process on the same machine, i.e. a POST request to http://localhost:3000/
This works fine on my local machine when I allow the process with Windows Firewall.
Having tried the same on Azure Websites, I get an error (kind of expected).
Now my question is, which of the other services allows me to open a port and listen locally? All of them? (VM, Workers, Web Roles)
Thanks
When you want to open a PORT (socket) you can use either of VM, Web Role or Worker Role. You just have to be aware of the specifics of each. Just quick tip for differences:
VM is a IaaS Service (Infrastructure-as-a-Service) - this is where you get a VM with OS and you take care of the OS from then on - updates, patches, everything
Web/Worker Roles are PaaS Service (Platform-as-a-Service) - here you get (a fully customizable) environment under Windows OS to run your code. However about OS and Framework patches and updates someone else is taking care of.
One very good article explaining IaaS, PaaS, SaaS is Pizza-as-a-Service. Which I recommend reading.
Then for your concrete scenario, I would advice you to go for a WebRole. You can combine WebRole with worker processes. Here is a quick tip on how to do this.
But, whenever you go for the cloud, be sure to check out the Azure migration cheat-sheet.
Related
We are looking to host a website (some css,js, one html file but not aspx, one generic handler).
We deployed in as:
1) Azure Web Site
2) Azure Cloud Service
Both solutions work. There is a question though: which way of hosting it is better and why? Second thing: as there might be a lot of traffic - which solution would be cheaper?
Thanks in advance,
Krzysztofuncjusz
You may want to review this article that explains the primary differences. Web Sites are best for running web applications that are relatively isolated (that do not require elevated security, remote desktop, network isolation...). Cloud services are more advanced because they give you more control over web sites while still remaining flexible. And VMs are for full control over applications that need to be installed and configured (like running SQL Server for example).
I think that main difference in abilities to modify VM and possibility to configure scalability. Web sites is something like classic hosting, without ability to login by rdp. Cloud Services allows you to configure VM and if necessary setup scalability and availability.
I am new to Microsoft windows azure cloud and want to run my game server using node.js in azure cloud. I read the windows azure Node.js Developer Center site and it seems my server can run in azure cloud multiple ways.
Which azure option is good for my TCP game server using node.js?
Three options:
Web Site
Cloud Service
Virtual Machine
Web Sites are essentially shared web hosting, which only supports HTTP, so not an option for you.
Cloud Services are probably what you want. This is the core PaaS offering on Windows Azure. It will let you run pretty much whatever you want, as long as it runs on Windows. It supports TCP endpoints. There's are pretty nice tools for Node.js. There are two flavors of running Node in a Cloud Service: a web role or a worker role. Web roles use IIS and run Node.js behind it. That won't work for your raw TCP connections, so you'll want to use a worker role. A worker role will simply launch your Node app and leave it running forever.
Virtual Machines would work fine too, but they don't provide much value compared to Cloud Services. In a cloud service, you can spin up new VMs on demand, a load balancer sits in front of your app distributing traffic, your app will get restarted if it ever crashes, you can have your VM automatically patched without downtime, etc. Unless you can't run in a cloud service for some reason, you rarely want to use a raw VM.
tl;dr You want a worker role in a cloud service. :-)
Windows Azure does have a toolkit for Social Games on Github, this might help you in you in your endeavours, not sure it supports Node.js mind you, there should be some takeaways to help you.
https://github.com/WindowsAzure-Toolkits/wa-toolkit-games
This blog post gives a good breakdown on where to run what and use cases for each.
http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx
It really depends on your application, what backend does it have, number of users, performance, latency etc...
A word of warning though, running Node.js on Windows is mostly fine but there are several libraries that will not work. Don't know if it's a hard requirement that you use Azure but there are other Node hosting solutions out there.
Nodejitsu
Nodester
Those are only two, there are more out there.
Disclaimer: I'm building a Node.js hosting solution, modulus.io.
Sorry for ambiguous question title! I have an asp.net app which works with an additional third party software(burning glass- connects to web app via tcp/ip, requires - properly configured dns entry, fixed ip and minimum of 8gb ram and it is completely managed via command prompt) in a single dedicated server.
I want to convert my web form app to MVC and deploy it in azure and also move the third party software I use( with above requirements). Is it possible to achieve the above requirements in azure?
Which role should I use for burning glass?
The general rule is to install 3rd-party software in a Web or Worker role, alongside your web app if you'd like, as long as:
You can install via MSI or some other mechanism that doesn't require manual intervention
The installation time is relatively quick (maybe max. 5 minutes or so)
The installation is reliable
If any of those are not possible, you'd need to go with a VM Role to pre-install the app.
As far as managing an app via command-line: As long as you can make the command-line calls via your app, you're ok. If you need to enter commands into a console, then that's not practical in Windows Azure unless you can connect to the console remotely. Not knowing about Burning Glass, I don't have any idea whether this can be done.
While Windows Azure doesn't let you select your IP address, the assigned IP address remains in effect as long as you don't delete and redeploy your app. You can upgrade the app without redeploying, so that shouldn't be an issue for you.
Does anyone know if one can host a website using the VMRole in Windows Azure?
If I have IIS running on the VM can I access that from the outside?
Also, if I scale to multiple instances of the same VM, will that endpoint be automatically load balanced, just like a WebRole?
Note: There are some requirements that I have that cannot be accomplished with the WebRole, so that is why I am not using it. (if you were wondering)
Thanks in advance!
Yes, you can host a web site in an VM Role. The VM Role must be Windows 2008 R2, which has IIS, so you should have everything you need to support your website. You'll just need to work with HyperV locally to construct the VHD, then prep it with Windows Azure tools, etc.
Just curious: What specific requirements do you have that cannot be accomplished with a Web Role? There are three core use cases for VM Role:
The setup process cannot be automated
The setup process is not 100% reliable (e.g. installers periodically fail)
The setup process takes too long (maybe more than 5 minutes or so)
With startup tasks, you shouldn't have any restrictions on installing software, registering COM controls, modifying the registry, etc.
I am trying to understand what is the difference between Windows Azure and other competitors, in the technical level.
From what I understand Azure is a multitenant OS, meaning, that every application is running in some kind of a sandbox based on Hyper-V.
In other words, every application being loaded is running by Azure in its closed sandbox.
Meaning, the operating system is "real", but the application is running in a virtual environment.
That is opposed to, lets say, Amazon EC2, where they give you a virtual machine, with a full virtual operating system (a virtual computer).
Am I right, or have I got it totally wrong?
With respect to multi-tenancy and dedication of an instance to one tenant, both Azure and Amazon EC2 are exactly alike. Both dedicate a VM to you as a compute instance.
Difference between EC2 and Azure (currently) is that Amazon provides you a real VM with an OS and an ability and a REQUIREMENT to manage the OS as well as anything installed on that OS.
Azure takes away some of the "ABILITY" power away from you (currently you don't get to manipulate the OS) while at the same time taking maintenance as well.
In my mind, unless you have some special requirements that require a full access to the OS (and upcoming Azure release will let you actually install stuff on your instances like legacy COM components, etc) I would stick with Azure as it has a less of an administrative cost.
Windows Azure gives you VMs running Windows, just like Amazon EC2 does.
No. In Azure you get a VMs as well (one per role instance). They are just more abstracted from you, than Amazon or Rackspace.
You get different VMs in Azure as well. What happens in Amazon EC2 for instance is that the abstraction ends at the hardware level. Everything above the virtual machines, ie the operating system updates, the application frameworks, the web server, etc; everything needs to be managed by you.
With Azure, the abstraction is taken far above just the hardware level and to an entire application framework level. For instance Web roles are nothing but VMs, preloaded with IIS and .net framework (and other application frameworks) tuned to serve web traffic. You are able to just deploy your application and all the other configurations are handled for you, but underneath it, it is still a VM.