You've probably heard about Office Open XML File formats. It is zipped folder which includes content in XML format as well as the code and included files. This means you can take a look inside them by simply changing the extension:
This is not new and there are plenty of article about this on the web.
The news here is that Microsoft published Microsoft Office Binary (.doc, .xls, .ppt) file formats specifications. It could be very interesting... But it could be boring too :) because according Joel Spolsky:
A normal programmer would conclude that Office’s binary file formats:
- are deliberately obfuscated
- are the product of a demented Borg mind
- were created by insanely bad programmers
- and are impossible to read or create correctly.
There is a good article from Joel Spolsky who is former PM @ Microsoft Excel team that analyze the specification.
Read it to find out how complex data are handled in limited CPU power and memory back in 80386 at 20 MHz
As we know it is very important to write reusable code as this lower the cost of the product and decrease development time. Here is recorded nice presentation of Krzysztof Cwalina on TechEd "Framework Engineering: Architecting, Designing, and Developing Reusable Libraries".
Krzysztof is kind enough to publish slides in XPS format (1.25 MB).
Download video in WMV format (01:07:23 and 371 MB)
Framework Engineering: Architecting, Designing, and Developing Reusable Libraries
This session covers the main aspects of reusable library design: API design, architecture, and general framework engineering processes. Well-designed APIs are critical to the success of reusable libraries, but there are other aspects of framework development that are equally important, yet not widely covered in literature. Organizations creating reusable libraries often struggle with the process of managing dependencies, compatibility, and other design processes so critical to the success of modern frameworks. Come to this session and learn about how Microsoft creates its frameworks. The session is based on experiences from the development of the .NET Framework and Silverlight, and will cover processes Microsoft uses in the development of managed frameworks
Here is another codename project from Microsoft that aims at Web UI experience - meet Microsoft Live Labs Volta:
Developers can target either web browsers or the CLR as clients and Volta handles the complexities of tier-splitting for you. Volta comprises tools such as end-to-end profiling to make architectural refactoring and optimization simple and quick. In effect, Volta offers a best-effort experience in multiple environments without any changes to the application.
Volta effects recompilation through 3 general capabilities: refactoring, retargeting, and remodulating. Refactoring converts single-tier code into distributed, concurrent code as directed by user-supplied annotations. Retargeting converts MSIL code into code for other virtual machines. Remodulating tailors a single piece of code for multiple browsers. The next 3 sections explain in more detail.
See detailed architectural and fundamental description here.
Feature specifications are posted on MSDN so everyone who is interested how to write specifications or how looks like specifications inside Microsoft can take a look at Feature Specifications for Visual Studio 2008 and .NET Framework 3.5 in MSDN. All documents are in XPS format.
I am on codenamed projects wave today and I would like to share with you another one - project Astoria (reposted from official blog):
Project Astoria Overview
The goal of the Astoria project is to enable applications to expose data as a data service that can be consumed by web clients within corporate networks and across the internet. Such data services are reachable over regular HTTP requests using standard HTTP verbs such as GET, POST, PUT and DELETE to represent the operations against the service. The payload format for the data exchanged with the service can be controlled by the client and all options are simple, open formats such as plan XML and JSON. The use of web-friendly technologies make it ideal as a data back-end for AJAX-style applications, Rich Interactive Applications and other applications that need to operate against data that is across the web.
Further reading: Astoria Overview, Using Astoria
By Mike Flasko
For those who are interested in architecture & design & process the team made another post
I found great article explain how to implement Pluggable architecture in .NET.
The problem that solved by Pluggable architecture pattern is:
"Need to add/remove classes/components from your running system dynamically without any changes to the running code"
Read MS MVP Natty Gur's article Pluggable architecture