Microsoft equivalents to Open Source / Linux stuff

A place to discuss the implementation and style of computer programs.

Moderators: phlip, Moderators General, Prelates

KnightExemplar
Posts: 5489
Joined: Sun Dec 26, 2010 1:58 pm UTC

Microsoft equivalents to Open Source / Linux stuff

Postby KnightExemplar » Tue Dec 09, 2014 6:21 am UTC

I figure I might as well start this list somewhere, for self-study. Visual Studio 2013 Community has reinvigorated my Win32 curiosity, so I figure I'd document what has been piquing my interest recently. Everyone here is welcome to contribute, its always useful to know how to "translate" knowledge between platforms.

Aptitude / Yum
* Chocolatey -- Good online repository for installing OSS tools like Imagemagick or git.
* NuGet -- Visual Studio extensions manager, very easy to browse for libraries for use in C#, C++, or other languages within Visual Studio.
* OneGet -- Downloadable for Win8+, confirmed to be part of Windows 10. OneGet looks like it will be a frontend for Chocolatey at Windows10 launch, but it also builds a baseline for other repositories.

SQLite / Firebase
* MS Access Databases (JET Red 32-bit DLL is distributed since Windows 2000 but it is deprecated. Otherwise MS ACE is a freeware redistributable .dll)
* SQL Server Compact (Freeware redistributable .dll, Windows XP SP3 and up)

While JET Red is dead (not supported on 64-bit Windows at all)... it was adopted by the MS Office team and morphed into the MS Access Database Engine (which is still supported by Microsoft). This should not be confused with JET Blue (aka ESE). The 32-bit legacy .dll for JET Red seems to be included in Win8, but 64-bit support is not included. As a legacy option, JET Red seems interesting as it is shipped since Windows 2000 and still works for 32-bit compiled programs. Otherwise, the ACE Runtime needs to be installed as a dependency on your user's computer... or they have to install MS Access.

SQL Server Compact seems to be more of the SQLite competitor. SQLite seems to be easier to deploy (you can't beat a single .h file), but SQL Server has multiple types (including datetime, float, int and string types) and C#/LINQ support. Microsoft's offline documentation for SQL Server Compact is located here.

BerkleyDB
* Extensible Storage Engine (aka JET Blue, supported even in WinRT, Win32 Native since Windows 2000)

For those who need transactions, integrity checks, indexing, basic schemas (in particular: datatypes like "int", with features like autoincrement) and other basic DB-stuff but don't want to go all-in on an SQL interface (SQL Parsers are unnecessary bloat if your database is simple enough), there's always the NoSQL options. BerkleyDB is the closest analogue I can think of to the Extensible Storage Engine. ESE's original name was JET Blue, which makes things confusing. All ESE functions start with the name "JET", and while JET Red is deprecated and doesn't work in 64-bit mode... JET Blue (aka ESE) is very well supported by Microsoft... as one of the few Win32 libraries with WinRT support. (To tell you how few libraries have this: WinSock wasn't originally supported by WinRT).

It seems relatively rare to have a dataset that is large enough to need a database (above and beyond say... an XML file), but simple enough that SQL overhead is unnecessary. Nonetheless, Microsoft Active Directory, Microsoft Exchange, and Windows Search are well known users of the ESE library. RavenDB is also built on top of ESE.

Very basic tools (integrity check, repair, checksum, defragmentation, dump) exists in Vista and up under the commandline esentutl tool. Otherwise, the Extensible Storage Engine .dlls are preloaded on Windows 2000 and up. C# Managed ESE is available, and again, even WinRT exposes these APIs.

LibXML2
XML is a popular way to store files or otherwise transfer data between computers.

* MSXML (DOM, SAX, XLST, XSD support. MSXML 3.0 was shipped with IE6, MSXML6.0 is current version shipping in Windows XP SP3 and above)
* XMLite (Native to WinXP SP3 and later)

OpenGL
DirectX9 / DirectX11. `Nuff said.

Libmicrohttpd
HTTP Server API -- Windows 2000 Native

Sometimes, you want an embedded HTTP server... for some reason. I dunno, for some reason, don't ask. I've needed one for a school project which required me to turn on lights on a PIC hardware board using Javascript... because my professor was insane. But anyway, Microsoft... does have embedded HTTP servers available... for some reason. I mostly know about it as a curiosity though. I've got a few project ideas that might use it...

RabbitMQ / ZMQ
MSMQ -- Microsoft seems to have support for Networked Message Queues. Native since Windows 95, but Windows XP SP3 for the latest MSMQ 3.0 features.

Websocket
Starting in Windows8, Microsoft supports Websockets as part of their WinSock architecture.

JSON
* Casablanca -- NuGet can get this library in VS2013 Community. Supports JSON and HTTP "REST" API calls.
First Strike +1/+1 and Indestructible.

Return to “Coding”

Who is online

Users browsing this forum: No registered users and 10 guests