Ideas on how to get around Windows 11 ARM not supporting IIS - asp.net-core

My new Macbook Pro running on an M1 Max (ARM) chip just came in. I installed Parallels and Windows 11 Preview for ARM, and Visual Studio installs / launches / builds my solution beautifully. Unfortunately the turn windows features on or off dialog doesn't have the option for installing IIS, and others have posted that this is not supported in Windows 11 for ARM.
Our dev team runs multiple ASP.NET Core 3.1 websites locally under IIS using subdomains, e.g.: https://auth-dev.mydomain.com, https://web-dev.mydomain.com, https://webapi-dev.mydomain.com. This was easy to set up in IIS using the bindings dialog, I could specify for port 443 (https) to use a certain subdomain and our dev SSL certificate.
Now I need to figure out how to make this work on Windows 11 ARM. Developing on an inferior non-Macbook Pro laptop doesn't seem like a great solution for .NET devs, I have to assume others with M1 chip Macbook Pros have run into this same issue. What are my options?
I first started looking into using IIS Express, but it seems like every website has to run on a different port, whereas I need them all to run on port 80 (just with different subdomains.) I'd be fine with them running on different ports if there was a way to forward those various ports to the subdomains, but it doesn't seem like the windows HOSTS file supports that.
I also looked into using the Apache web server for Windows, but I read somewhere that it doesn't support running ASP.NET Core apps.

OS build 22563.1 supports IIS. I'm not sure if this is the first build that supports it, but I checked after the last automatic windows update and the IIS features are available; they were not before. I am on a m1 Mac using Parallels with the Windows Insider Preview ARM image.
Edition: Windows 11 Pro OS
Build: 22563.1
Experience: Windows Feature
Experience Pack 1000.22563.1.0

I'm using Windows 11 & IIS Express on a MacBook Pro M1 Max (via Parallels) and it is working fine. Of course, for developing environment!
You can download IIS Express from
https://www.microsoft.com/download/details.aspx?id=48264

You can download the ASP.NET Core Runtime or .NET 5.0 SDK to allow you run to run ASP.NET applications on Windows, Mac or Linux.
See https://support.microsoft.com/en-us/windows/downloads-for-windows-32490f9b-01ee-c13e-b2af-b5057c2d34e8

Related

Standard mDNS service on Windows

Does Windows (some modern flavour) have an mDNS server installed and/or running by default? If so then how does one tell it, preferably dynamically, to start/stop advertising a new service?
If there is no standard then how does one deal with the problem of conflicts trying to run multiple mDNS servers in that environment?
Basically, I want to implement a service that will run on Linux, Windows and Mac OS X and which needs to advertise its zeroconf webserver location using mDNS. On Linux I just use avahi-publish (or install a config file). I'm guessing that the answer will be straightforward for OS X. I'm struggling to find information for Windows.
Starting with Windows 10, Microsoft made strides towards a native Windows implementation of mDNS and DNS-SD.
While earlier iterations have been limited to UWP apps, a general Win32 API has been exposed from at least SDK version 10.0.18362.0 (1903/19H1, May 2019).
Note: This implementation is currently confirmed working only for 64bit build targets, there is an open issue preventing compilation for 32bit targets.
Outdated note from a previous version of this answer:
Early iterations resulted in mDNS network flooding:
Windows 10, in its default configuration, will spam its local networks
by responding to all mDNS requests with null response packets.
This issue was fixed in Windows 10 1511 (10586) and above
Last time I needed one, Apple's Bonjour Print Services for Windows was the most convenient mDNS client for Windows I could find. Only 5MB.
No, Microsoft doesn't directly support Multicast-DNS.
However, there appear to be several 3rd-party alternatives:
http://bens.me.uk/2013/multicast-dns-and-development-virtual-machines
http://en.wikipedia.org/wiki/Bonjour_%28software%29
http://www.icir.org/gregor/tools/autoconf-protocols.html
http://www.zeroconf.org/
... and ...
http://blogs.technet.com/b/networking/archive/2008/04/01/how-to-benefit-from-link-local-multicast-name-resolution.aspx
Have also successfully used C++/WinRT for dnssd discovery directly from C++ now. It appears from our perspective to be quicker and more reliable to query services and will let you easily install a watcher to get notifications when devices arrive etc. Of course, this is limited to versions of Windows 10 with support for C++/WinRT, which starts with 10.0.17134.0 (Windows 10, version 1803).
One caveat: We've noticed that it does not provide, nor recognise, a FQDN (trailing dot). So for a device that Bonjour OR Avahi would give an address of mydevice.local., Windows instead gives mydevice.local. Attempting to ping mydevice.local. under Windows 10 (1809) fails.
Windows 10 supports natively mDNS/Zeroconf, but only for modern APIs, not for Win32 applications.
If you have such an application, a third party service is required.
Source: https://social.technet.microsoft.com/Forums/en-US/8a0346de-2296-4f46-bc36-ff3fb13e283b/builtin-mdnsdnssd-zeroconf-support-in-windows-10
The short answer is to support both Avahi and Bonjour. You'll need Bonjour support to run on OSX anyway, and if a Windows user has installed iTunes they'll already be running it.
As a fallback for Windows users not running iTunes, you can compile Avahi as a library for Windows (with a bit of effort) and bundle it. This is a non-trivial bit of packaging, but the alternative is requiring your Windows users to install iTunes in order to use your application.

Browser testing on Windows 8?

I have a Mac and I am deciding whether to install Windows 7 or 8 on Boot Camp.
Is it possible to test websites inside actual windows of IE6+ and older Firefox/Chrome/Opera browsers with Windows 8?
I tried bootcamping a Core 2 Duo iMac a year or so ago with Windows 8 and it would cause regular crashes. It looks like there is an updated to Bootcamp (I was running the previous version 4) which supports Windows 8 so you could use either option.
If you use Windows 7 (like I did), you can install and run Windows Virtual PC with different versions of Windows and IE. The cool thing is Virtual PC has something called Integration Features which allows you to launch specific applications (like IE) from the virtual machines without being in the virtual machines. (Think virtual applications)
I do this. I have one Virtual PC with XP and IE6. I cloned it, upgraded it to IE7 and then did the same thing with IE8. Now I've got a Windows 7 machine with IE9 and virtual browsers of IE8, 7, and 6. I also run older versions of Firefox on those cloned XP machines.
If you use Windows 8 you can do the same thing, its just a little different procedure (see my comment below) because Windows 8 uses Hyper-V instead of Virtual PC. I prefer Virtual PC because of the Integration Features, with Windows 8 you'll have to use the Hyper-V console but you can do the same thing.
You'll need a virtual machine within Windows 8 to run anything earlier than IE10, since Windows 8 only started with IE10.
There are some hacks to make pages behave a bit "like" IE6 (or other browsers), but I doubt they are going to work well now you're reaching all the way back from IE10.
Firefox/Chrome/Opera will work OK, as they aren't integrated into the OS.
There are a couple of options that might work for you better than installing Windows 7 or 8 on bootcamp:
Use a service such as BrowserStack. This costs money, but Microsoft provides 3 free months via Modern.ie
Install virtual machines on your Mac. Microsoft makes these available for free, also via Modern.ie

simulator or test environment for web application

I am working on a web app that will run only on firefox and on win / linux machine.
I have done that thing and now want to test with various environment like mac, android, opera browser etc.
My query is whether there is any test environment (simulator) available that will allow me to test the app on different platform without testing on real machine?
Thanks to all
You could give a try with a virtual machine like VirtualBox / VirtualPC / VMWare.
Some Windows versions are available freely as virtual machines images in the Microsoft site.
Not sure for the rest , as you write first
a web app that will run only on firefox and on win / linux machine.
...but then talk about mac and android.
For android, you could give a try with their emulator.
For Mac OS I am afraid that you won't find legal solutions.

XAMPP and Node.js on local windows 7 development machine

I've being reading alot on how node.js can be used to add real time features to web applications. Am a PHP developer but i have good grasp on javascript.
I have XAMPP installed my windows 7 machine which i use for development and i just installed node.js using the windows installer on the node.js site.
How do i make app communicate with the node.js server ?
I'm on OSX, and I'm basically heading down this same path.
First off, don't think of node.js like you would PHP and think you're setting up a vhost in XAMPP.
You need to look in to getting node.js to be listening as a server. There are several tutorials out there that go over this, but this one can help get you started:
http://www.albatrossrevue.com/2012/01/31/an-introduction-to-node-js/2000

What is your testing workflow for client-side web development on OS X?

What would be a good workflow on OS X for testing client-side code (HTML/JS/CSS) for browser compatibility and other issues across all major browsers?
I do my web development with Textmate (HTML and JavaScript), CSSEdit (CSS), and use Safari's Web Inspector, mainly for checking the JS console. I do have Parallels with Windows XP on it, but haven't tuned it for web development at all.
We develop on Macs too so what we usually do is testing and debugging in Firefox with the help of the Firebug plugin and the Web Developer toolbar. We then cross-check stuff in Chrome/Safari using Chrome's built-in Inspector in case of any discrepancies.
For testing on Windows we use a dedicated Windows machine that we can access through Remote Desktop which has some Virtual Machines running various versions of Internet Explorer (one VM for each would be nice, but we just use one for IE6, one for IE 7 and use the IE version that's installed on the remote machine as the third option).
A colleague of mine has a setup with VMWare and running IE right off his Macbook in a VirtualMachine.
As far as I can tell debugging in IE 6 is pretty hard, but some of the newer IE versions have a pretty decent Inspector similar to the ones in Safari and Chrome.