Montag, November 13, 2006

First personal resume

Nun ist sie also schon wieder vorbei.
Dieses Jahr stand die TechEd ganz im Zeichen von Office Systems 2007 und Windows Vista. Das erste Mal fand der Event nicht im Sommer sondern im November statt. Er wurde "zusammengelegt" mit dem IT-Forum, welches neu TechEd It-Forum heisst. Das IT-Forum findet ja bekanntlich an der selben Location, eine Woche später, statt. Dies hat für die Veranstalter natürlich logistische Vorteile.
Natürlich hat sich auch diese TechEd gelohnt. Es ist wie immer an solchen Events, dass man viele Eindrücke sammelt, welche einen über mehrer Monate danach noch begleiten. Es ist nicht so wie bei einem Kurs, dass man danach zurück an den Arbeitsplatz kommt und das Erlernte gleich umsetzten kann. Es ist viel mehr das Wissen über aktuelle oder kommende Technologien. Diese Zahlt sich erst in den folge Monaten aus. Dies war und wird auch in diesem Jahr und kommenden Jahr wieder so sein.
Wie ich in den einzelnen Session berichten bereits geschrieben habe, sind für mich leider die Office Sessions enttäuschend gewesen. Dies hat nicht unmittelbar mit der Qualität der einzelnen Präsentationen zu tun, sondern eher mit dem Level und dem Informationsgehalt. Wie ebenfalls bereits erwähnt, ist dies eher auf unseren Stand des Know-How zurückzuführen. Es ist mir ja durchaus verständlich, dass viele Leute Dinge zum ersten Mal gehört haben, mit denen wir uns nun schon seit fast einem Jahr beschäftigen.
Leider war ich an keiner Vista Session, ich denke aber, dass dies durch unsere Besucher des It-Forum sicherlich nachholen werden. Ausserdem lag mein Fokus ja ganz klar auf anderen Dingen. Die Vista Session waren meist so ausgelegt, dass dann auch immer Office oder Workflow Sessions waren.
Es war wiederum ungemein schwer, alles was von Interesse war zu besuchen. Bei bis zu 10 Session gleichzeitig, ist es einfach nicht möglich, alles zu besuchen. Ich hatte aber sogar Zeit, Sessions zu besuchen, die mich persönlich interessierten. (Robotics Studio, Game Development )
In diesem Jahr waren über 3750 Entwickler an der TechEd. (Davon etwas über 60 Schweizer) Die Räume waren im Gegensatz zu anderen Jahre sehr viel näher beieinander. Dies brachte den Vorteil, dass man in den Pausen wirklich Zeit hatte, einen Kaffe zu trinken. Die hatte aber auch logischer Weise zu Konsequenz, das da auch sehr viel mehr Gedränge war, als in anderen Jahren. Generell ist aufgefallen, dass die Zusammenlegung auch einen Kostenhintergrund haben könnte. Dies war über irgendwie zu merken. Zwar nicht so, dass es störte, aber irgendwie war die "Grosszügigkeit" aus andern Jahren etwas verschwunden. (Weniger Kühlschränke mit Getränken, Keine Party mehr, Kein PrintingService mehr, Keine Glace mehr etc.) Dafür war das Wireless Netwerk besser als in vergangen Jahren. Dies kann natürlich wiederum daran liegen, dass eine viel kleinere Fläche versorgt werden musste… Dafür war (Sorry System Engineers) das niveau das erste mal durch das Band Developer Niveau.
Ich kann euch (sobald der Download wieder vernünftig funktioniert die Sessions Slides besorgen. Ich weder vorgängig jedoch eine Liste verschicken, mit dem Inhalt,was ich habe. Somit könnt Ihr mir dann mitteilen, welche ihr haben möchtet.
Ich bin sehr zufrieden mit dieser TechEd, egal was organisatorisch oder aus kostendruck rausgefallen ist.

Ich denke, dies ist nicht der letzte Artikel, ich werde mich wieder melden. It's not over ;-)

Freitag, November 10, 2006

DEV358 New Cryptography: Algorithms, APIs and Architecture


Rafal Lukawiecki
Abstract:
Are you still using DES, RSA, MD5 or SHA-1? Do you know how this might expose your company to a loss? Why is CAPI 1.0 being retired? Is the architecture of the new Open Cryptographic API for Windows (CNG) any better than CAPI 2? What is Suite-B? Do you realise that the next few years will see a dramatic replacement of those security fundamentals we used to silently rely on? These are some of the question we will answer in this information-packed and fast-paced level 300 session aimed Developers and Architects who are already familiar with basic cryptographic and security concepts. While we are not going to explain the inner workings of any of the covered algorithms, we will give you a good background to all the new ones, so that you can make better choices while designing security for your systems. Microsoft Windows Vista will be the first commercial operating system to include a full support for all of those innovations, closely followed by the “Longhorn” Server, so consider this as an opportunity to incorporate the awesome power of the recent developments in your software. For the curious, we may even tell you why we cannot tell you about Suite-A...


So, letzte Session an dieser TechEd. Leider… obwohl ich müde bin und den Kopf voller neuer Sachen habe ;-) Ist immer interessant, aber auch sehr anstrengend und ermüdend. Zum Schluss gönn ich mir nochmals (das 1. Mal in diesem Jahr) Rafal Lukawiecki. Rafal ist einer meiner lieblings Speaker. Ich habe ihn vor 3 Jahren das erste Mal gesehen und war begeistert. Er kann sehr komplexe Themen sehr bildlich und immer mit einer prise Humor rüberbringen. Ich habe durch ihn damals das 1. Mal das Konzept von Public und Private Key wirklich verstanden. Also bin ich nun gespannt was kommt. Wie ich Rafal kenne, wird er aber unsere Köpfe trotzt der letzten Session nicht in den "Idle" Modus versetzen.
Rafal beginnt mit einer Erklärung, wo dass heute in der Kryptographie sind und weshalb es einen neue braucht. Er erklärt, dass es sein Ziel ist, uns alle zu Kryptographie Fans zu machen ;-)
Er geht davon aus , dass alle Anwesenden wissen, was Symmetric, Public Key und Hibryd Kryptographie ist….

Heutige, vor Vista Empfehlungen:
At present (Nov 2006), consider using the following cryptographic mechanisms available in Windows XP and Server 2003 in preference to others:
• AES-128 (or AES-192, or AES-256)
• RSA 2048 (or longer)
• “SHA-2” (i.e. SHA-256, or SHA-512)
• DSA (or SHA-2/RSA signatures)


DES, IDEA, RC2, RC5, Twofish are not Recommended !!!


Rijndael (AES) Recommended :

Current US standard
• Winner of the AES (Advanced Encryption Standard) competition run by NIST (National Institute of Standards and Technology in US) in 1997-2000
• Comes from Europe (Belgium) by Joan Daemen and Vincent Rijmen. “X-files” stories less likely (unlike DES).
• Symmetric block-cipher (128, 192 or 256 bits) with variable keys (128, 192 or 256 bits, too)
• Fast and a lot of good properties, such as good immunity from timing and power (electric) analysis
• Construction, again, deceptively similar to DES (S-boxes, XORs etc.) but really different

CAST and GOST
Not used widely anymore – avoid

• CAST
• Canadians Carlisle Adams & Stafford Tavares
• 64 bit key and 64 bit of data
• Chose your S-boxes
• Seems resistant to differential & linear cryptanalysis and only way to break is brute force (but key is a bit short!)
• GOST
• Soviet Union’s “version” of DES but with a clearer design and many more repetitions of the process
• 256 bit key but really 610 bits of secret, so pretty much “tank quality”
• Backdoor? Who knows…


Rely on Cryptosystems
Please:

• Indeed: never use just an algorithm, but an entire cryptosystem
• For example:
• If you use DES etc. in a simple “loop” to encrypt a stream of data you literally lose all security
• Instead: use a technique designed for adapting an algorithm to a streams of data, such as CBC (Cipher Block Chaining)
• Microsoft never implement just an algorithm – always a complete cryptosystem, e.g. RSA-OAEP etc.


Dangerous Implementations:
• Cryptographic applications from not-well-known sources
• I “just downloaded this library”
• Insist on using built-in systems where possible:
• Microsoft OS: CNG, CAPI, CAPICOM, MS CSP etc.
• Smartcards: certified CSPs
• Elsewhere: FIPS-140-2 compliant implementations
○ See csrc.nist.gov/cryptval

RC4
Generally Not Recommended
• Symmetric
• Fast, streaming encryption
• R. Rivest in 1994
• Originally secret, but “published” on sci.crypt
• Related to “one-time pad”, theoretically most secure
• But!
• It relies on a really good random number generator
○ And that is a problem
• Nowadays, we tend to use block ciphers in modes of operation that work for streams

RSA, DSA, ElGamal
• Asymmetric
• Slow and computationally expensive – need a computer
• Security increasingly being questioned
• Rivest, Shamir, Adleman – 1978
• Popular and well researched
• Strength in today’s inefficiency to factorise into prime numbers
• Some worries about key generation process in some implementations
• DSA (Digital Signature Algorithm)
• Mainly for digital signing, not for encryption, used in US
• Variant of Schnorr and ElGamal signature algorithm
• ElGamal
• Relies on complexity of discrete logarithms

MD5, SHA
• Hash functions – part of the digital signature
• Goals:
• Not reversible: can’t obtain the message from its hash
• Hash much shorter than original message
• Two messages won’t have the same hash
• MD5 (R. Rivest)
• 512 bits hashed into 128
• Mathematical model still unknown
• Recently (July 2004) broken, do not use on its own
• SHA (Secure Hash Algorithm)
• US standard based on MD5
• MD5 and MD4 broken
• SHA-0 broken (July 2004), SHA-1 probably too weak (partly broken, full break alleged by Chinese recently), use SHA-256 at least

Diffie-Hellman, “SSL”, Certs
• Methods for key exchange and transport
• DH (1976) always generates a new “key-pair” for each asymmetric session
• Certificates are the most common way to exchange public keys
• Foundation of Public Key Infrastructure (PKI)
• SSL uses a protocol to exchange keys safely, but also requires PKI


APIs of Today
• Microsoft CryptoAPI (CAPI) 2.0 is the interface to all CSPs
• Cryptographic Service Providers
○ Built-in or smartcard-based
• .NET Framework 1.1 and 2.0 (and 3.0) wraps most of the functionality of CAPI in classes:
• System.Security.Cryptography and its subclasses:
○ .Pkcs
○ .X509Certificates
○ .XML
• Or you can use the CAPICOM library

Cryptography of Tomorrow
Quantum Cryptography?
• Method for generating and passing a secret key or a random stream
• For keys, not data
• Polarisation of light (photons) can be detected only in a way that destroys the “direction” (basis)
• Works up-to-120km of a dedicated fibre-optic link
• Seems pretty perfect, if a bit tedious and slow
• Practical implementations still use AES/DES etc. for actual encryption
○ Magiq QPN: http://www.magiqtech.com/press/qpn.pdf
• Don’t confuse it with quantum computing, which won’t be with us for at least another 50 years or so, or maybe longer…

More Practical Solution

• US NSA and NIST recommendation is to implement “Suite-B” protocols
• This is very rarely done in today’s software
• Good news: Microsoft supports Suite-B in Windows Vista (and Longhorn Server)
• For all internal implementations Microsoft will not use weaker algorithms than Suite-B
○ But, of course, they will support your choice to do so if you wish

Vista Supports NSA Suite B
www.nsa.gov/ia/industry/crypto_suite_b.cfm

• Required cryptographic algorithms for all US non-classified and classified (SECRET and TOP-SECRET) needs
• Except a small area of special-security needs (e.g. nuclear security) – guided by Suite A (definition is classified)
• Announced by NSA at RSA conference in Feb 2005

Mathematical Designs

• Many cryptographic algorithms (e.g. DSA) rely on a class of mathematical designs related to the concept of discrete logarithms
• These can be implemented over the finite field of any abelian group
• Normally, this means using integers modulo a prime number
• Alternatively, elliptic curve groups could be used
• This leads to ECC


Elliptic Curve Cryptography
ECC
• More efficient design, using fewer bits of key for the same strength
• Breaking these designs seems even harder than traditional ones
• Leads to faster algorithms with fewer problems
• Primarily used to enhance algorithms of existing design, such as DSA


Suite-B Algorithms

• Encryption: AES
• Digital Signature: EC-DSA
• Key Exchange: EC-DH or EC-MQV
• Hashing: SHA-2

Suite-B Encryption

• AES
• FIPS 197 (with keys sizes of 128 and 256 bits)
• This is a specific implementation of Rijndael algorithm allowing use of 128 bit data blocks only
• Keys of 192 bits are not used (although FIPS specifies them)
• Please note that most 256 bit implementations are much slower than 128 bits
• In general, anything of 81 bits or more in this class of cryptography is considered “good enough” for typical commercial applications

Suite-B Digital Signatures

• Elliptic Curve Digital Signature Algorithm (EC-DSA)
• FIPS 186-2 (using the curves with 256 and 384-bit prime moduli)
○ Microsoft also supports 521-bit keys
• This is a classical DSA algorithm applied over the algebra of finite fields of elliptic curves
Suite-B Key Exchange
• Elliptic Curve Diffie-Hellman or Elliptic Curve MQV
• Draft NIST Special Publication 800-56 (using the curves with 256 and 384-bit prime moduli)
• Microsoft will also support 521-bit keys
• Remember DH?
• It is susceptible to man-in-the-middle attacks, so it requires authentication in most applications
• Usually done (not very efficiently) with digital signatures
• EC-MQV: Menezes, Qu, and Vanstone protocol
• Authenticated key exchange
• Design similar to DH
• Uses the discrete logarithm concept
• Also requires a pre-existing, verified and trusted long-term public/private keypair
○ Which is only used for trust establishment, not for actual encryption or signing
○ This gives it an important forward-secrecy property
• Suite-B uses the EC implementation of MQV

Suite-B Hashing

• Secure Hash Algorithm
• FIPS 180-2 (using SHA-256 and SHA-384)
• As MD5 and SHA-0 have been broken and SHA-1 has been allegedly broken we do not have much choice
• Almost no alternatives exist
• SHA-2 should suffice for a few years, but ultimately it must be replaced
• SHA-2 allows: 224, 256, 384, and 512 bit lengths

APIs for Suite-B Today?

• There are no widely used or supported libraries or APIs for Suite-B and most operating systems of today
• However…

Cryptographic Next Generation API
CNG

• CAPI 1.0 has been deprecated
• May be dropped altogether in future Windows releases
• CNG
• Open cryptographic API for Windows Vista/Longhorn
• Ability to plug in kernel or user mode implementations for:
○ Proprietary cryptographic algorithms
○ Replacements for standard cryptographic algorithms
○ Key Storage Providers (KSP)
• Enables cryptography configuration at enterprise and machine levels

• Main CNG Features

• Cryptography agnostic
• Kernel-mode for performance and security (better performance than CAPI 1.0)
• FIPS-140 Certification
• 140-2 and Common Criteria (CC) on selected platforms
• 140-1 everywhere
• CC compliance for long-term key storage and audit
• Suite-B of course, but also supports all existing algorithms available through CryptoAPI 1.0
• Key Isolation and Storage using TPMs
• Developer-friendly model for plug-ins

Three APIs within CNG:

• CNG Cryptographic Primitive Functions
○ The “main” API: all algorithms are here
• CNG Key Storage Functions
○ Allows interaction with the new Key Storage Providers concept
§ Supports existing devices (smartcards) and future types of tokens
○ Interface for all secure key creation, including the EC-DH and EC-MQV* methods
○ Interface for import and export of keys using PKCS #7 and #8
• CNG Cryptographic Configuration Functions
○ For registering and managing additional cryptographic functions
Read: http://msdn2.microsoft.com/en-us/library/aa375276.aspx

In addition to CNG:

• .NET Framework System.Security.Cryptography
○ Microsoft will extend the .NET Framework to cover CNG in the future
○ At present, it is a Windows native API
• TBS: TPM Base Services
○ For interaction with Trusted Platform Modules
• Certificate Enrolment API



Using CNG – Two Models

• Depending on your needs, you use CNG with:
• Algorithms and keys provided by a Key Storage provider (such as smartcards)
○ All function names begin with “N”, such as NCryptOpenStorageProvider
○ This is the CNG Key Storage Functions API
§ Ncrypt.h, Ncrypt.lib and Ncrypt.dll
• Algorithms and keys generated by the operating system’s software providers
○ All function names begin with “B”, such as BCryptOpenAlgorithmProvider
○ This is the CNG Cryptographic Primitive Functions API
§ Bcrypt.h, Bcrypt.lib and Bcrypt.dll
• I only explain “B” in next slides, but “N” is very similar

So, Who Encrypts?
Reason for the Two APIs

• “B-API” if
• You want Vista/Longhorn (or future OS) to do the encryption, you use the “B-API”
○ Implementation provided by a Key Storage Provider
○ Microsoft or other
• “N-API” if
• You have a smartcard, HSM (hardware security module), or a TPM
○ All computations performed by the device
○ Generally, OS has nothing to do with that

Summary:
• Today’s cryptography has just accelerated its evolution
• Windows Vista and Longhorn Servers will be at the front of innovation in this field
• You can benefit from the increased security by using BitLocker or the APIs such as CNG
• Developers life is easier with CNG than ever with CAPI
• It is an exciting time to be using cryptography!

Es würde jetzt sehr lange dauern, alles was er am "Rande" noch erzählt hat. Wie erwartet, eine typische Rafal Session. Sehr interessant, auch wenn ich nicht alles auf Anhieb verstanden habe. Aber das ist bei Ihm meistens so. Das gehörte muss sich zuerst setzten, sich einige Gedanken darüber machen und irgendwann wird ein Lichtlein aufgehen .. ;-) Die Folien habe ich mir gesichert, so dass ich sie mir immer und immer wieder reinziehen kann ….

Obwohl dies die letzte Session war, wartet noch mit "ausschalten". Ich habe diesen Beitrag zu einem grossen Teil noch im Flugzeug geschriebe. Will sagen, ich hab mindestens noch ein Fazit, ein paar Bilder usw.... stay tuned! (Aber zuerst geniesse ich jetzt das weekend, zumindest was davon übrgbleibt ;-) )

OFF308 Development Model for Customizing the new Office Ribbon User Interface (UI)

Jaser Elmorsy , Max Hauser
Abstract:
The new UI introduced with 2007 Microsoft Office system codenamed 'Ribbon' is fully customizable through a new, declarative programming model using XML. This session dives into details of this mark-up language and describes how the Ribbon interacts with DLL-based code of Add-Ins developed in C# or VB.NET (or even VB6). It even shows you a couple of real live applications for Office 2007 clients. Also you will learn about the use cases and guidelines for customizing the Ribbon bar and when to use Custom Task Panes for customizing the Office UI instead.



Die Converence neigt sich langsam dem Ende zu, Irgendwie hat es auch keine Sessions mehr, welche neu oder interessant sind für mich. Ich habe mich für diese Session entschieden, weil wir hier, wenn wir dann mal Office System 2007 einsetzen (Client Side) , dann könnten wir doch auch im Ribbon gewisse RTC Spezifische Sachen machen (Vorlagen ? ;-) )

Zuerst erfolgt eine Erklärung, was das Ribbon ist und welche Controls es auf dem Ribbon gibt. Ich möchte jetzt nicht alle aufzählen, ich verzichte auch auf Screenshots, weil wer sich für das Ribbon interessiert, kennt es entweder schon, oder geht auf mein Office Blog.

Das erste was gezeigt wird, ist ein Custzom Tab im Ribbon auf Dokumenten Basis. Das heisst, dass im Ribbon ein zusätzlicher Tab erscheint, immer wenn ich genau das eine Dokument öffne. Macht sinn für Templates.

Nun wird im Studio (Visual Studio 2005 R2 (RTM vor 3 Tagen ) !!) ein Custom Ribbon gebaut. Dies ist als Project Type im neuen Studio enthalten.

Es folgt nun ein from scratch geführte demo, wo Methode um Methode erstellt wird. Es geht ein wenig schnell, wenn ich alle jetzt beschreiben und Dokumentieren möchte. Die Samples sind aber auf MSDN verfügbat. Was jetzt gebaut wurde, ist ein Control, welches eine Image suche darstellt. Ich habe eine kleine Search box, gebe den Namen der Company ein, von der ich ein Logo will. Ich gebe Microsoft ein, sehe eine Auswahl (Also PopUp) der Images, welche auf der Yahoo Bilder Suche(via WebService) gefunden wurde. Wenn ich nun das Logo anklicke, wird es an der aktuellen Stelle im Dokument eingefügt. Es werden nun noch cool looking ToolTips etc. hinzugefügt.

Das ganze Ribbon kann komplett selbst geschrieben werden. Wenn ich ein Control definitiv nicht im Ribbon haben will, dann muss ich from scratch starten, ein Eigenen Ribbon bauen, und alle Controls, welche ich haben will, wieder hinzufügen (Execpt dem, welches ich nicht haben will) .

Nun geht es um die Customization der QAT. Dies wird definitiv nicht empfohlen, da es das einzige Control ist, welches der User Steuern kann.

Nun ist das Thema Contextual Tabs. Dies kann nicht programmatisch geschehen, sondern man kann die bestehenden verwenden für die Eigenen Controls.

Nun geht es um Shared Add-Ins. Dies geschieht Wizard geseuert, zumindest der erste Schritt. Danach kann ich meine Methoden implementieren. Als Beispiel nehmen sie die OnPrint Methode. Sie überschreiben die Methode, so dass immer wenn ein "OnPrint" Event gefeuert wird, erscheint nun eine MsgBox, wo darauf hingewiesen wird. Dass es sich um "Confidential" Content handelt, willst du den wirklich drucken ? Wenn ich nein klicke geschieht nichts, wenn ja, wird die normale OnPrint WinForm aufgerufen. Witzig ist, das dies nun für alle MS Applikationen funktioniert. Witzig ist, dass es für Acces nicht funkioniert. Dazu muss ich ein eigenen UI machen, da es für Access andere ID's gibt. Ist nicht ein Problem und mit einem Switch Statement schnell gemacht… aber lustig, dass Access immer noch nicht "Office" ist. Outlook ist auch noch eine Ausnahme. Weil in Outlook gibt es nur in den sog. Inpsectors das Ribbon. In Outlookk existieren 19 Ribbons ! .
Es folgt nun ein Beispiel, wie sie einControl machen, mit welchem ich in den Kontakten für die Business Cards verschiedene Templates verwenden kann.

Es geht jetzt noch um die bestehenden Add-Ins, und wie man diese übernehmen kann. Die meisten sollten funktionieren, man müsse es ausprobieren...

Photo Break







DEV302 Microsoft XNA and the Future of Game Development

Rob Miles
Abstract:
XNA represents a major milestone in the field of game development, bringing game creators a unified platform and the safety of managed code. It also greatly reduces the difficulties faced when starting out in game development, closing the gap between idea and working implementation. The recent release of XNA Express gives programmers a chance to get to grips with the XNA framework and use it to create content for both the PC and the XBOX 360.Beginning with an overview of the XNA platform and the XNA Express development tools, this demo packed presentation then moves into the ‘nitty gritty’ of game development using XNA, leading to a fully realised casual game running on an XBOX 360. Whether you are a seasoned games coder, or a programmer thinking of moving into game development this session will give you plenty of food for thought and information to get you started.


Freitag morgen, ich hab nicht wirklich eine Session gefunden heute, aus der ich einen Business Value ziehen kann. Deshalb schaue ich auch ein wenig für mich…und zuviel wissen kann man ja nie ;-)

The Video Game Business
The scale of the enterprise

• Bigger than the movies?
• Some people say that video games are now bigger money spinners than the movies:
• The game “GoldenEye” made more money than the film. And cost a lot less to produce.
• Set to grow even more?
• The potential of a connected, high performance, easy to program gaming appliance in millions of homes is bound to lead to new opportunities.
• Just about anything is amenable to some form of gaming tie-in
○ "Casual" games are a huge growth area

Game Developer Challenges
Big Games are hard to make

• A modern, full price game is extremely complex to create
• It contains not just code, but a huge number of additional resources produced by a range of specialists
• Managing these is very difficult
• You need to ensure that all elements are up to date
• You need to track dependencies
• You need to determine which elements are part of the game
• Game developers do not have the time to develop appropriate management tools
• Software development tools are inappropriate


Small teams can’t cut it any more

• Writing games for sale to the mass market has become the province of specialist games houses
• There are niche markets for things like the mobile platform, but the cost of developing, marketing and delivering a modern game is prohibitive for the small developer
• With the huge cost of game production, the publishers are much less likely to pursue novel gaming ideas
• New games are often tied to movies or TV
• Games are often sequels of older ones


XNA for the Game Studio
Managing the content with a pipeline

• The XNA content “pipeline” provides a unified mechanism for the storage, processing and retrieval of resource items
• A set of “importers” are provided for standard resource types
• Developers can make their own importers if they want to expand the range of these
• Content items are held in a typesafe manner within the repository and can be extracted and processed appropriately as part of the build process



XNA for the Games Studio
Making a nice place to work

• One of my rules when starting a new project is:
Make yourself a nice place to work
• By this I mean that it should be easy to deploy, test and debug code as I write it
• No manual intervention to build the system
• Fully automated and instrumented tests
• Good code management and re-factoring support
• XNA is based on Visual Studio 2005 Team Foundation Server
• Good for "Agile Development"

XNA and Agile Development

• The rich, integrated toolset that you get with XNA is very amenable to Agile Development
• Pair programming
• Rapid iteration (test – code – re-factor)
• Test driven development
• Has been shown to improve programmer productivity and reduce burnout
• Has great potential in the games industry

XNA ist based on .net und die games werden in C#2.0 geschrieben, Alles ist managed Code. Ich entwickle und teste im Visual Studio 2005 und kann direkt zur Xbox360 Deployen !

Es kommt jetzt eine Demo, einfaches Spiel (“Hot Salad Death with Cheese”), aber anschaulich wie der Weg is und wie das geht
Folgende vorgehensweise ist grundlegend:

1. Initialise all the resources at the start
2. fetch all textures, models, scripts etc
3. Repeatedly run the game loop:
4. Update the game engine
○ read the controllers, update the state and position of game elements
5. Draw the game environment
○ render the game elements on the viewing device

Skeleton:

partial class Game1 : Microsoft.Xna.Framework.Game
{
public Game1() {
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
}
protected override void LoadGraphicsContent(bool loadAllContent) {
}
protected override void Update(GameTime gameTime) {
}
protected override void Draw(GameTime gameTime) {
}
}

Initialisierung:


Texture2D cheeseTexture;
SpriteBatch spriteBatch;
protected override void LoadGraphicsContent(bool loadAllContent) {
if (loadAllContent)
{
cheeseTexture = content.Load("cheese");
spriteBatch = new SpriteBatch(graphics.GraphicsDevice);
}
}

• LoadGraphicsContent is called when our game starts
• It creates our cheese texture and loads an image into it
• It also creates a SpriteBatch instance to manage the drawing process

Die Content Pipeline managed den Content als Resources. Jede Ressource bekommt einen Asset Name. Die Load Methode der ContentManager gibt uns den Zugang zu den Ressourcen.

Jetzt kommt das Drawing:

protected override void Draw(GameTime gameTime)
{
graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
spriteBatch.Draw(cheeseTexture,
new Rectangle(
cheeseX, cheeseY,
cheeseTexture.Width, cheeseTexture.Height),
Color.White );
spriteBatch.End();
base.Draw(gameTime);
}


Und jetzt noch das Game Update:

protected override void Update()
{
cheeseX = cheeseX + cheeseXSpeed;
if ((cheeseX <= 0) ||
(cheeseX + cheeseTexture.Width > Window.ClientBounds.Width))
{
cheeseXSpeed *= -1;
}
// repeat for Y
// Let the GameComponents update
UpdateComponents();
}

Nun haben wir einen Käse, der auf dem Bildschirm herum bounced. ;-)

• XNA provides support for keyboard, mouse and XBOX 360 controller
• You can plug a controller into an PC and it will just work
• A wireless PC controller interface will be available later
• The game controller buttons are polled during the update method

Ich vezichte auf den Code, der für den Xbox Kontroller eingefügt wurde. Sieht sehr einfach aus, im Stil von, wenn links gedrückt wurde, fahre nach Links ;-)

Ich kann alle Blöcke als Komponents "rausnehmen" ähnlich wie Components bei WinForms. So kann ich die immer wieder verwenden, kann sie auch unabhängig behandeln. Z.B. den Hintergrund ändern als Component, ohne dass ich alles anpassen muss.

Nun fügen wir dem ganzen einen Background hinzu. Geht auch sehr einfach.
We just have to extend the DrawableGameComponent class and implement LoadContent, Update and Draw methods. This is directly analogous to components in Windows Forms


Display Text:

• The XNA framework does not support text rendering directly
• I render a set of characters to a bitmap and then copy the characters from the bitmap into the display area
• I have implemented this as another component
• This gets the text to be displayed from the game instance and then draws it on the screen
• I can get different font sizes by scaling the text as I render it

Adding Sound:

• Sound makes a huge difference to a game
• XNA has very powerful sound creation facilities
• The Microsoft Cross Platform Audio Creation Tool (XACT) is used to create soundbanks which are loaded by the game
• This tool is provided as part of the XNA Express distribution
• The sound banks are managed by the content manager


Nun ist das Game fertig. Scheint wirklich alles sehr einfach zu gehen.

Es folgt die Empfehlung, dass wenn man neu ist im Game Programming, soll man mit 2D Games anfangen. Es ist einfacher, später auf 3D zu switchen.

Xna in the Future:

• The current XNA Express Beta 2 lets you use Visual Studio Express to write XNA games for the PC
• In December it will be possible to create them for the XBOX itself
• To write games for the XBOX 360 you will have to pay an annual fee
• Then the content manager and build tools will be made available

Three reasons why we should all be writing games

• It is easy
• XNA and .NET lower the difficulty bar and make it possible to target a range of platforms in one shot
• Using .NET as the underlying platform gives games integrity and reliability right out of the box
• You can make money
• There is a market for “casual” games which are quick to play
• XBOX Live will provide a means by which such games can be sold
• It is fun!
• Any developer can write viable games and enjoy doing it

Gute Session, erstaunlich auch, dass ich natürlich das gesamte .net nutzen kann. Ich kann Games entwickeln, die auf eine Xbox360 und auf einem Pocket PC laufen.

Wieder etwas, wo ich sagen muss, hät ich nur mehr Zeit…

XNA Blog

OFF311 Building Collaboration Applications using the 2007 Office System Unified Communications Infrastructure

Kyle Marsh
Abstract:
This session explains how to integrate presence and instant collaboration into smart client applications and web portals using the Unified Communications Platform. We will show how contextual collaboration can be added to your applications using Office Communicator Extensibility, the Unified Communication Client Platform, or the Communicator Web Access UI Controls or the Communicator Web Access AJAX Service. We will introduce how you can integrate Unified Communications into your business processes by building on our SIP Signaling APIs or our middle tier platform. We will also introduce how you can extend and enhance the way an enterprise communicates by using the Office Communications Server SDK.


Hmm, wieder so ein slot… gleich vier Sessions wären interessant gewesen. Diese habe ich ausgewählt, um mir neue Ideen zu holen. Ich denke, dass so das eine oder andere von mir einmal zur Diskussion aufgeworfen werden wird intern.

Zuerst wird vorgestellt, was Office Communications Server 2007 bringt und was alles damit möglich ist.



Es werden verschiedene Dienste (wenn das die Firma erlaubt) unterstützt. Interessant ist die Tatsache, das ich mit anderen Companys komunnizieren kann. (Video, PPT etc.) Dies könnte man nutzen, um den Support persönlicher zu machen ;-) Ist aber auch Interessant, für die Zusammenarbeit (z.B namics) mit externen Partnern. So ist sehr viel möglich, ohne gleich ein "reales" Meeting zu organisieren und Sitzungszimmer zu suchen.
Der Communication Server kann auch mit Wireless Headsets etc. umgehen. Natürlich kann er auch VOIP und ich kann diverse VOIP Systeme integrieren. Outlook 2007 ist voll integriert und lässt sich als komplette Messaging Zentrale einsetzten. Egal, ob voice, video oder Instant Messaging.

• Unified Communications Enable your Services
• Supply services over Unified Communications
• Send an alert to a user that they need to call a customer.
• Start a conversation with a user when they become available and have expense reports to approve. Show information from the reports and ask for approvals
• Use the IM Channel to send structured data
• Control a PBX
• Control an audio conference provider
• Transaction data

Enhance Enterprise Communications
• Communications Server is the center of Enterprise Communications
• Communications Server Applications
• Routing Applications
• Authorization – Ethical Walls
• Call Center Routing
• Content Logging
• Filtering/Virus Scanning
• Billing
• Translation


Es gibt sogenannt Presence Kategoryen, wo man definieren kann, wer sieht was, wer kann welche Infos über mich abrufen etc.



Es werden z.B auch verschiedene Voice Devices unterstützt. Das heisst, wenn jemand mehrere Voice Devices besitzt (Tel. am Arbeitsplatz, Mobile etc.) Ich kann OCS so einstellen, dass er weiss, wann wo ich das letzte mal "Idle" war oder welche Device ich zuletzt genutzt habe. Wenn jemand einen Voice Call macht, dann entscheided OCS selbst, auf welche Device er den Call leitet.
Oder ich kann einen Call erhalten, seh wer anruft und am (z.B mobile) Phone entscheiden, wo ich den Call annehme. Also kann ich sagen, ich will jetzt über mein Festnetz Home Phone mit der Person sprechen. Dies, ohne den Call angenommen zu haben, sondern ich telefoniere gleich über das Home Phone, obwohl ich auf dem Handy angerufen wurde.

Contextual Unified Communications:

• Communicate with the right person at the right time
• Your applications are the “Contact List”
• Use the Standard Communications Experience via Office Communicator Automation
• Your application can be a first class communications client
• VoIP – 2 party and multiparty
• Video – 2 party and multiparty
• Drive Conferencing
• Instant Messaging
• Call Control of a desktop phone

Enhance Enterprise Communications:

• Communications Server is the center of Enterprise Communications
• Communications Server Applications
• Routing Applications
• Authorization – Ethical Walls
• Call Center Routing
• Content Logging
• Filtering/Virus Scanning
• Billing
• Translation

Es folgt eine Demo, wo der OC Client gezeigt wird. Die Version 2007 und der Web Client.Es wird gezeigt, wie ich in meinen Applikationen diese Funktionen nutzen kann, welche API's es gibt etc.
Eine sehr ausführliche Demo, viele Code Beispiele und was ich wo alles einbringen kann. Es ist mittels des API's möglich, seinen Komplett eigenen Messenger zu schreiben mit Funktionen, die der "original Messenger nicht hat.
Es werden am ende noch diverse Samle Apps gezeigt, wie ich wo was ändern oder überschreiben kann.
Relativ interessant für uns… werden wir wohl nie haben oder durchsetzten können.

Donnerstag, November 09, 2006

DEV304 Microsoft Robotics Studio

Martin Calsyn
Abstract:
The Microsoft Robotics Studio is a Windows-based environment for academic, hobbyist and commercial developers to easily create robotics applications across a wide variety of hardware. Key features and benefits of the Microsoft Robotics Studio environment include: end-to-end Robotics Development Platform , lightweight services-oriented runtime, and a scalable and extensible platform.

Diese Session besuche ich jetzt rein aus persönlichem Interesse. Wer weiss, ev, gibt es zu Weinachten ja einen Lego Mindstorm ;-)

Robbotics ist in den Anfängen, es existiert noch keine wirkliche Killer Applikation. Es gibt keine Standard Hardware und auch keine HW"abstraction".Und das "Real World testing" ist sehr teuer.

• The ‘hot buttons’ from Industry, hobbyists, academia and researchers:
• Static and dynamic device configuration
• Coordinating asynchronous device input
• Starting and stopping components dynamically and independently
• Monitoring and interacting with running systems
• Improved development cycle, particularly with limited access to robot hardware
• Spanning multiple compute units
• Reuse of software, particularly across different hardware
• Microsoft Robotics Studio addresses:
• Reusable components: Introduces a paradigm that facilitates reuse
• Standardization: Introduces a hardware abstraction paradigm
• Concurrency and distributed computing: Introduces CCR and DSS to greatly simplify these tasks
• Simulation: Introduces a high-fidelity, extensible virtual world

Barrier to Entry: Introduces a Visual Programming Language to make the advanced features more accessible to newcomers


Was ist eine Robotics Applikation ? :

• A composition of loosely-coupled and concurrently executing components providing:
• Orchestration of sensors and actuators
• User Interaction
• Control or Behavior logic

Architektur:

• Services are the basic building block
• Structured state
• Behavior
• Partner services
• Contract

• Operations
• State retrieval and manipulation
• Create and Terminate
• Notification

• Services
• Can be used to abstract hardware
• Can be composed and provide aggregated functionality (sensor fusion, for example)
• Are inherently remotable and participate in distributed operations
• Restartable and mobile (state transfer)
• Must be inherently asynchronous

• But asynchronous programming is hard!
• Sequential applications
○ Flat or incremental performance
○ Potentially poor responsiveness
• Explicitly threaded apps
○ Hardwired number of threads prefer K processors for a given workload
○ Can penalize < K processors and fail to scale to > K processors
○ Hard to write and even harder to debug



Das Programming Model:

• Zuerst muss ich den Service und die Operations deklarieren;Operations

public sealed class Contract {
public const String Identifier = "http://schemas.coroware.com/2006/10/machinedirectory.html";
}
[DataContract()]
public class MachineDirectoryState {
[DataMember]
public List Services = new List();
}
public class MachineDirectoryOperations : PortSet { }
public class Get : Get> { }
public class Replace : Replace> { }

• Declaring a Service Port
[ServicePort("/machinedirectory", AllowMultipleInstances=false)]
private MachineDirectoryOperations _mainPort = new MachineDirectoryOperations();
• Defining Partnerships
[Partner("NodeDirectory",Contract=nds.Contract.Identifier, CreationPolicy = PartnerCreationPolicy.UseExistingOrCreate)]
private nds.NodeDirectoryOperations _nds = new nds.NodeDirectoryOperations();
• Coordinating Asynchronous Tasks - A compositional, declarative pattern
protected override void Start()
{
ActivateDsspOperationHandlers();
}
[ServiceHandler(ServiceHandlerBehavior.Concurrent)]
public virtual IEnumerator GetHandler(Get get)
{
get.ResponsePort.Post(_state);
yield break;
}
[ServiceHandler(ServiceHandlerBehavior.Exclusive)]
public virtual IEnumerator ReplaceHandler(Replace replace)
{
_state = replace.Body;
replace.ResponsePort.Post(DefaultReplaceResponseType.Instance);
yield break;
}


Beispiel für einen Choice:


// Subscribe to the local node directory service
nds.Subscribe sub = new nds.Subscribe();
sub.NotificationPort = _ndsNotify;
_nds.Post(sub);
Activate(
Arbiter.Choice(
sub.ResponsePort,
delegate(SubscribeResponseType resp)
{ LogInfo("Successfully subscribed to node directory"); },
delegate(Fault fault)
{ _mainPort.Post(new DsspDefaultDrop()); })
);

• Example: Interleave
ActivateDsspOperationHandlers().CombineWith(
Arbiter.Interleave(
new TeardownReceiverGroup(),
new ExclusiveReceiverGroup(
Arbiter.Receive(true,
_ndsNotify, NdsInsertHostHandler),
Arbiter.Receive(true,
_ndsNotify, NdsDeleteHostHandler),
Arbiter.Receive(true, _dirNotify,
DirInsertHandler),
Arbiter.Receive(true, _dirNotify,
DirDeleteHandler)
),
new ConcurrentReceiverGroup()
)
);

• Services run within an execution context called a ‘node’
• Nodes expose http and SOAP/TCP endpoints



Es folgt nun eine Demo im Microsoft Robotics Sudio und er demonstriert, wie er mittels http mit den Services interagiert.

• Nun erfolgt eine Exkursion in die Visual Programming Language
• Ich kann damit joins kreieren, choices und pathways.
• Ich kann partnerships mit externen services kreieren
○ All Services (regardless of language) are available on the diagram surface
Das Studio mit seiner Visual Designer Language sieht ein wenig aus wie der Designer im Workflow. Nur es ist etwas eigenes. Dazu am Schluss mehr.

Es folgt eine Demo, wo das ganze in einem Simulator gezeigt wird. Er kann seinen Robo Steuern, Bilder anschauen von der Robo Cam. Etc. Alles, wie wenn es ein echter Robo wär. Nur eben im Simulator. Ziel ist es, das ich im Simulator wie beim echten Robo immer den selben Code verwenden kann. Somit ist auch sichergestellt, dass die Simulation "realistisch" ist. Die Tests werden so natürlich sehr viel günstiger, so kann ich etwas für eine Laser Spektrometer programmieren, ohne einen kaufen zu müssen.

• Simulation
• Cost effective
• High-fidelity
• Fast, incremental prototyping



• Entities consist of:
○ A graphical representation of your object
§ Geometric shape
§ Complex mesh with materials and textures
○ A physics representation
§ Shape, Mass, CM, friction, joints
§ Physical shape (hull) can be automatically derived from geometric shapes and complex meshes
○ An entity can have both, either or neither representation(s)

• Simulation services
○ Communicate with entities to effect changes in entity state (change position, orientation, physics attributes like torques and forces)
○ Communicate with application services through a service interface
§ This service interface should mimic the interface used for the real device on the real robot
• Application services
○ Your application code
○ Should be identical code for simulation or real-world use


Printscreen des Simulators:



Am schluss zeigt er noch Hardware, welche ich benötigen kann. (Feuchtigkeitssensor, GPS Modul, Infrarot Sensor, Temperatur Messer, und einen echten Robo. Er kann leider nichts am Robo zeigen, da es ihm anscheinend das Netzteil geschmort haben soll.

Sehr interessante Session, über die ich noch sehr viel schreiben könnte. Es ist schwierig hier das Konzept verständlich zu erklären. Typisch Microsoft ist, dass sie eine Visual Language geschaffen haben, die nur im ROBO Studio gültig ist. Hier hätte ein Konzern interner Griff zur WinWF Engine genau dieselben Ergebnisse gebracht. Dies wurde dann auch gefragt, weshalb für die Orchestrierung nicht WinWF gebraucht werde. Die Antwort: Das sei so, und vermutlich habe man nicht miteinander gesprochen. Wenn ich mehr Zeit hätte, würde ich sofort beginnen mit der Robo Programmierung !

DEV227 Windows Presentation Foundation (WPF) in the Real World: Zürich Airport Monitoring System

Ronnie Saurenmann
Abstract:
WPF enables new scenarios, in particular regarding rich data visualization. In this session we will present an ongoing project at Zürich Airport, where a WPF based map is used to display near real time data about the airport. With this system it is possible in a blink of an eye to see the status of the airport, including landing and taking off airplanes with the relative information like delays, load, etc... At the beginning we will present the overall architecture of the system, and in particular how Service Oriented Architecture (SOA) helped in having all the data available and aggregated. Then we will focus on the WPF User Interface (UI) showing the application running and how to build the basic construct in WPF. This session has the goal of providing you with new ideas and scenarios combining WPF and SOA. We will also demonstrate the ease of use and productivity of WPF.

Auf diese Session bin ich jetzt wirklich gespannt. Ronnie war gestern (war ja auch schon bei uns) auch an der Swiss Country Night, Ich weiss, was er zeigen wird, wir haben und gestern noch darüber unterhalten. Es ist vor allem so, das für WPF immer die gleichen Demos gebraucht werden. Ronnie wird uns endlich eine "echte" Applikation zeigen.
Ronnie beginnt sehr witzig und macht sich auch gleich lustig über die Demo die man immer irgendwo sieht. Er erklärt, dass Zürich bei den letzten war in ganz Europa, wenn es sich um Verspätungen gehandelt hat. Nun, er wisse zwar nicht ob es sich wegen seiner App so Entwickelt hat, aber jetzt ist er nr5. Er erklärt, dass das Problem ist, irgendwie sinnvoll die grosse Menge von Daten darzustellen. Jetzt kommt die Demo. Wooow , geile Applikation !!
Man sieht die Map vom Flughafen Zürich. Ich sehe, welche Flugzeuge wo sind, ich sehe wie beladen die Flugzeuge sind etc. Einfach nur cool !



Was musste alles beachtet werden ?






Client Service Communication:

• Web Services Pull every 10 seconds
• Message is zipped
○ I don’t like the zip idea
• Get the last 10 seconds vector for the animation
• Plus all the additional information
○ Delays, Passengers load, Destination, Etc..

• Today, considering Duplex binding in WCF
• Still not the best in regarding of Firewall
○ Then two binding
§ Intranet: Duplex over TCP or HTTP and Binary
§ Extranet: HTTP/SOAP BasicProfile
• Need to host it outside IIS for TCP
○ WAS not yet available
• WCF doesn’t work for a XBAP deployment
○ WCF needs full trust, XBAP are partial trust by default

• Why WPF?
• Powerfull graphical engine
○ Takes advantage of GPU
• Full animations support
○ fully programmable
• Any visual element is a .NET object
○ Easy to create, manipulate and interact
• XAML
○ Nice separation UI/Code
○ Possibility to convert from other formats

• Used Expression Interactive Designer for XAML generation
• Great way to learn WPF
• Used Visual Studio for code behind and XAML editing
• Disabled Cidar
• Remember always to save when switching tool!

Nun zeigt Ronnie, wie er mit dem Interactive Designer das ganze gebaut hat. Er bringt das ganze sehr witzig rüber und hat viele Lacher auf seiner Seite.Die Flugzeuge sind buttons…

Cool Featurers:

• Controls are look less
• Choose them by behavior
• Can be completely restyled through templates
• Nice for changing look and feel of an application without changing code
○ Application face-lifting like Car face-lifting
• Template can be applied at design and at runtime

• Template binding
• Can expose inner property of a template as external property
○ E.g.. Fill of a Rectangle bound to a Button Background
• The coordinate system
• Double precision
• Can apply transformation to it
• I can use original Latitude and Longitude
○ Can position airplane based on lat/long coming from the radar
○ Simply flip the Y axis
• WPF ist nicht Resolution independent !!
• Data and Control binding
• Can bind data to any property
• Can also bind an element property to another element property
• Scalable and hierarchical vector engine
• Can transform an element and all the contained ones
• Super easy to build zoom or panning


Er zeigt nun, wie er aus dem Button ein Flugzeug macht. (Canvas)
Ist wirklich cool, und ich weiss, wie wir in Zukunft unsere UI's machen !!

Nun zeigt er, wie er wirklich die Verschiedenen Flugzeuge gezeichnet hat, Er nimmt eine svg Graphik und Konvertiert sie in Xaml. Somit kann er diese einfach importieren und der Button sieht nun wirklich aus wie ein Flugzeug, Das ganze ist schon sehr schön animiert und sehr schnell entstanden.

Woher stammen die Daten für die Koordinaten ?

• Where it comes from
• Airport GIS application
○ Original too detailed (e.g doors numbers)
○ Exported in SVG
○ SVG is XML so it is easy to convert in XAML
§ Watch out for scaling problems
§ We used XAML Pad as a conversion tool
□ Alternatively can build a XSLT
§ Every element has a name (e.g. Runway1) so it is very easy to interact with

• Er zeigt nun, wie er die Daten (XAML) importiert und er nun gleich die "Original" Map hat, die immer exact dem Original entspricht.



… Remeber, the airplaine is a Button.

Simply Zoom in:




Nun kommt die Erklärung, wie das ganze animiert wird. Cool ist auch, da das ganze ja vektor basiert ist, ich einen Zoom hinzufügen kann. So kann ich jetzt überall hinzoomen.
Nun wird noch das scroling hinzugefügt. Und fertig ist die App!
Jetzt implementiert er noch ein "Alarm" System. So dass die Leute, welche diese Applikation benutzen, auch gleich darauf aufmerksam gemacht werden, Er fügt dem Runway 1 Grau und Rot hinzu, und nun blinkt die Runnway…
Also jetzt bin ich voll von WPF überzeugt !!


Summary:
• When a company adopt SOA you have tons of data at your disposal
• The problem is how to visualize it
• WPF is an amazing technology for data visualization
• Easy to learn, fast to build
○ No need of DirectX or Direct3D special knowledge
• Quite performing
• Any technical visualization apps is a good candidate for WPF
○ F1 Racing simulation
○ Pollution visualization
○ Medical instruments visualization
○ Map based solutions


Ronnie, nicht weil ich dich kenne oder du einen Bonus bei mir hast, aber das war die Beste Session für mich an dieser TechEd! Es war die erste Demo, die Realitätsbezogen war, aus der ich einen Nutzen ziehen konnte und das ganze so nachvollziehen konnte, das ich es auch verstand ;-) und unterhaltsam war das ganze auch noch.

DEVWD09 Windows Workflow Foundation Drop in Clinic

Paul Andrew , Matt Winkler
Abstract:
Paul is the Product Manager and Matt is the Technical Evangelist for Windows Workflow Foundation. They are both experienced at consulting with customers on projects and would like to invite you to share your project ideas at this whiteboard session. Potential software architecture using Windows Workflow Foundation will be discussed with the audience.


Ich bin gespannt an diese Session gegangen, es nimmt mich ja Wunder, wie oder was für eine Diskussion da aufkommen wird.
Es wird die Frage nach Designer gestellt. Er zeigt einen Interessanten Workflow Manager, (Link weiter unten)wo ich jede WF Instanz öffnen kann und im Designer sehe, wo mein Workflow steht und wer bei welchem Step was gemacht hat.
Die Frage ist Hosting Designer vs. Custom Designer. Die Antwort hätt ich mir vorstellen können… Hängt davon ab, was du machen willst.
BizTalk vs. WF
Positioning ?
BizTalk ist ein Server Produkt, dass schon länger auf dem Markt. WF ist gemacht für Entwickler, um die Engine in ihren Produkten zu nutzen. Grundsätzlich machen die Produkte ziemlich ähnliche Sachen, jedoch sei der Fokus der Produkte ein anderer. BizTalk ist ein Produkt, WF eine engine "for free". In der nächsten Major Version wird BizTalk WinWF basiert sein. SSIS wird angesprochen, dass dies ja auch eine Art WF ist. Frage: Wird dies auch einmal mit WF gemacht ? Es gäbe 7-8 MS Produkte, die sich commited hätten, WF einzusetzen. Mit den guys von SSIS habe man Gespräche, entschieden sei noch nichts. Wenn man SSIS einsetze, könne es je nach case Sinn machen, dass man sich überlege auf WF zu schwitchen.

Sharepoint sei momentan ideal, um WF's zu hosten. Er meint aber nicht SP WF's, sondern WF's die auf Sharpoint gehostet werden und mit SP WF's interagieren. (Sven -> Eskalation ;-)) )

Updating exisitng workflows (Dynamic updates)
Dies ist nicht einfach zu beantworten. Es gibt ein Dynamic Update API… Er zeigt ein kleines Sample.Er klickt in seinem Workflow Designer bei einem laufenden WF auf "pause", dann auf den Button "Change WF" und fügt dann ein Activity hinzu (Der WF darf natürlich noch nicht da vorbei sein) , dann "Accept Changes" und "Resume", nun kommt der WF an diesem Activity vorbei und es wird dann natürlich ausgeführt. Hmm, interessantes sample, IMHO wird dies für uns und in der Realität nie funktionieren. Ich erklär Euch gerne warum, but not here…
Achtung: Watch this guys: Workflow Manager
Whats about WF scalability? More then 100k ? It's not possible to give a answer with a "Zahl". Es kommt drauf an, was das für WF's sind, was sie machen etc. 100k ist keine grosse Zahl, weil wir ja den persistence Service haben. D.h. es sind ja dann nie die 100k WF im memory. Es ist dann eher eine Frage der Skalierbarkeit der DB. Hier ein Bild, das zeigt, wie ich die WF's skalieren kann:




Locking mechanismen for SP Tasklists: Tasklist framework in SP ist great. Paul recommend, that we should use the oob Tasklist activitys.


Interessante Diskussion, ist noch schwierig dies hier alles so wiederzugeben. Viele Fragen haben wir uns schon selbst beantwortet, da wir schon etwas weiter sind, als die meisten hier. Ich kann Euch nur sagen, dass ich nichts gehört habe, dass wir uns irgendwo falsch entschieden hätten. Ich denke, Paul hätte Freude an unserem Projekt ;-)

Persönlicher Session Break….

Mittwoch 12 Uhr war eigentlich für mich Halbzeit. Ich hab aber wie im Fussball keinen The und Zitronen Schnitz erhalten, sondern wird jetzt mal meinen Senf los….

Also, zu Converence ist zu sagen, das ich das Gefühl habe, im Gegensatz zu anderen Jahren, das hier mehr Leute sind als je zuvor, aber der "space", wo sich diese Leute bewegen können, kleiner wurde…
Die Events IT-Forum und TechEd wurden ja zusammengelegt. Nun, das macht Sinn. Kein Einwand daher. Es gibt aber schon ein Paar Sachen, die halt auf der Strecke bleiben… Es sind dies :

• Kein Printing Service mehr
• Wenig WC's (Da kann die Event Organisation nichts für, das ist Location related)
• Weniger Kühlschränke mit Getrönken (oft leer oder warme Getränke)
• Keine Glacé mehr
• Keine Party mehr !
• Die Wege sind kürzer, dafür viel mehr Gedränge

Also, jetzt will ich noch erzählen, was ich so erlebe hier… Also, das Hotel ist gut. Keine Rede. Aber… (Da kann das Hotel nichts dafür)
Ich kriege jede Metro mit.Das Ganze Hotel "zittert" wenn ne Metro vorbei donnert, Aber kein Problem, ich richte meine Uhr danach :-)
In der Nacht von Dienstag auf Mittwoch habe ich nicht soo viel geschlafen. Ich kam um ca. 10.00 Uhr ins Hotel. Nun, ihr müsst Euch das vorstellen wie ein Schlauch (das ist der Gang) und am Ende (der Head) habe ich mein Zimmer. Das heisst, ich habe mehr oder weniger Links und Rechts Nachbarn,. Also, als ich nach Hause kam, waren da (ich schätze etwa 10) Girls auf dem Gang. Einige ganz Interessante Exemplare (Sorry die Ausdrucksweise... Girls !) . Sie hatten mühe mit dem Schlüssel etc. Hab natürlich gerne geholfen… Sie hatten unter Anderem die Zimmer Links und Rechts von mir.
So gegen 11 gings los… Sie liefen im Gang mit Ihren "Absatzschuhen" hin und her… (Marmorboden) es machte einen enormen Krach..zudem haben die Ladys nie gelernt, die Türen vernünftig zu schliessen!! Natürlich können nicht 2 und 2 in einem Zimmer sich einigen, wie sie jetzt in den Ausgang gehen. Also switchen sie von Tür oder Zimmer zu Zimmer. Wie man Türen schliesst, haben sie anscheinend wirklich nie gelernt. Also Türe zu = Bäng !... Bäng ! …. Und das alle 20 Sekunden ! Ok, ich musste nichts sagen, hab mitbekommen, wie irgend ein Guy im Gang Terror macht und erzählt, das er um 8 Uhr wieder auf sein müsste um zu Arbeiten. Das Ganze hatte dann auch relativ schnell ein (vorläufiges) Ende, den die Ladys wollten ja in den Ausgang.
Ich war froh denn jetzt war Ruhe.
Erwacht bin ich dann genau um 3.04 Wieso dann ?
The girls are coming back ! Ich bin erwacht, weil auf dem Marmor Boden die Schuhe "schepperten" und zum anderen, weil sie immer noch nicht gelernt hatten, wie man Türen so schliesst, dass niemand erwacht oder so. Zu meinem Bedauern habe ich noch merken müssen, dass sie sich genau für das Zimmer für Ihre gemeinsame "After" Party entschieden haben, welches eine Wand hat, die an "meine" grenzt. So gegen viertel vor vier hat es mir den "Nuggi" rausgehauen. Ich habe an die Wand gepoltert und gerufen "I wane sleep !" Was denkt ihr, passiert ist ? ….
Es wurde keine 3 Minuten später an mein Türe geklopft. Ich schlaftrunken in meinem Bett… Erster Gedanke. "Das hab ich geträumt!, Es ist nach halb vier". Es klopft ein zweites mal .. Und ich steh auf, mach die Türe auf … Ich hab in diesem Moment nicht überlegt, dass ich nun in den Unterhosen da stehe…. Also, ich öffne die Türe… und was hör ich…gekreische… wow, das erste mal das girls wegen mir kreischen… ok, ich weiss nicht warum ;-) Aber, diejenige, die geklopft hatte fragte (mit einer gewissen röte im Gesicht)dann ganz keck: "When you can't get sleep, come to us and have a party ! "..Hmm, ich hab abgelehnt.(Keine Fragen wieso !) Sie haben mir aber versprochen, das sie ruhiger sind und das Zimmer verlegen. Nun konnte ich schlafen und träumte ganz süss ;-))) Ich weiss, ne story die man nur glaubt, wenn man es selbst erlebt hat… THINK WHAT YOU WANT !!

Greets from Barca!

Mittwoch, November 08, 2006

SQL303 SQL Server 2005 Analysis Services: Deep Dive

Richard Tkachuk
Abstract:
SQL Server 2005 Analysis Services includes a re-architecture of the Online Analytical Processing (OLAP) and Data Mining engines from SQL Server 2000. In this session we explore the semantics of the Unified Dimensional Model (or UDM) including explanations of what it is in the dimension and data structures that make calculations so flexible and query response so fast. This will be followed with a demonstration of building a cube, how multidimensional expressions (MDX) are used to query the result, and how the structure of the cube is exposed programmatically in native and managed environments. We'll end with a demonstration of building a mining model and querying the result with Data mining expressions (DMX).


Ich hatte wieder einmal die Qual der Wahl. Der letzte Slot für heute.. Puhh, bin geschafft. Hätte jetzt gleich 3 Sessions gleichzeitig besuchen können. Aber, aus aktuellem Anlass habe ich diese gewählt. ;-) Zudem erhoffe ich mir hier Infos, die uns in diesem Thema weiterbringen…. Mal schauen.

Richard ist Lead Programm Manager für Analysis Services. Er erklärt, dass er normalerweise mit DBA's spricht, Performance und Caching von Cubes ist sein "spezial" Gebiet.
Zuerst folgt eine Demo mit Excel, wo er in einer Spalte gleich "Grafiken" eingeblendet hat, wo ich eine Art "Ranking" der Zahlen sehe…



Auf die oben gezeigt Darstellung ist er leider nicht weiter eingegangen, zeigt aber eigentlich auch nur den Aufbau, wie wir Ihn schon kennen…
Er geht direkt auf die API's ein, welche Arten es für den "Zugang" gibt etc. Die folgende Grafik zeigt dies sehr schön:




XMLA ist XML for Analysis:

• Industry standard that defines interaction between client and analytical data provider
• Specification managed by XMLA Council (www.xmla.org)
• Simple Object Access Protocol (SOAP) based XML protocol
• OLAP or data mining
• Based on OLEDB (for OLAP/data mining)
• Just two methods – Discover and Execute

Nun folgen viele Erklärungen über wie und wo ich meine Cube optimieren kann. Geht einwenig schnell ;-) Hab aber die Slides gezogen, so dass wir dies in Ruhe studieren können.
Ich bin irgendwie nicht die Zielgruppe.. Er klickt in seinem Tool herum, und ich weiss eigentlich gar nicht, was er machen will….
Jetzt kommt eine Erklärung zur Frage: Was ist eine Aggregation ?
Hier die AW:
A subtotal of partition data based on a set of attributes from each dimension




Was ich verstanden habe ist, dass eine Aggregation die Query Performance steigert. Nein im Ernst, ich glaub anhand der Grafik ist er erklärlich. Mit dem Trace Tool kann ich schauen, ob die Querys die Aggregation "treffen" oder nicht . So weiss ich auch, ob meine Aggregation "sinnvoll" ist oder nicht.

Was ist ADOMD.net ?

• Query cube schema
• GetSchemaDataSet
• Query cube data
• With MDX or SQL
• Results returned in a cellset or (flattened) rowset
• Get back a “Cellset”
• A multi-dimensional rowset
• Caution: Trace your application!

Es folgen ein paar Demos, wo er seine Cube mit Querys "quält" und zeigt, dass je nachdem er seine Cube definiert hat, sich die Perfomance massiv unterscheidet.

Leider ist mein Akku jetzt gleich leer. Es geht nun um Data mining und mdx. Ich werde noch liefern….

So, bin zufrieden von der Swiss Country Night zurück..war ein netter Abend ! Aber mehr dazu in der persönlichen Rückschau oder in einem Zwischenbericht.

Zurück zur Session….

Ok, sehr viel länger ging die Session nicht, es ging noch um Data mining (wie angedroht) und mdx. Wenn man die Kürzel zu interpretieren mag, dann weiss man auch, was wohl MDX heissen soll. Wie soll ich bloss data mining erklären.Hmm, hier ist es sehr einfach. Direkte Übersetzung ! Anbei 2 Grafiken, wo ich das besser erklären kann:



Oder anders ausgedrückt:




So, das wars ! Mehr later, there is a lot of stuff cuming !

OFF201 Web Content Management (WCM) and Microsoft Office SharePoint Server (MOSS) 2007 – The Out-of-the-Box Experience


Patrick Tisseghem
Abstract:

Web content management systems require a rich, flexible, easy to use and maintain infrastructure where the role of IT and developers is to set up and prepare the environment. It is then leave it up to the business users/content authors to start taking control over the content delivered via the pages making up a WCM-enabled site. This session will give you a complete overview of the different WCM-related building-blocks and features delivered with MOSS 2007. WCM in MOSS 2007 builds on the many foundations that are part of WSS v3 (site columns, content types, versioning, per item security, field types, and more). In the session, you will learn how they are all used, enhanced and brought together to create a very powerful supporting infrastructure for creating sites – both internal as well as external. This session will cover the creation of an Internet site, the configuration to allow for forms authentication and anonymous access, the creation and maintenance of site hierarchies and galleries storing the content, customization of the navigation and the master pages defining the look and feel, the underlying page model, the creation of new page layouts for business users/content authors to use, the role of workflow in the publishing cycle, the options for using smart clients to create and modify the Web content, the support for multilingual scenarios with site variations and an overview of the various Web parts that are WCM-related.


Patrick beginnt mit den Konzepten, welche hinter dem WCM von SharePoint steckt. Er zeigt ein paar Seiten, auch solche von MS, welche auf SP gehostet werden. Er erwähnt die Variations, und will später darauf eingehen.



Er erklärt, dass es im Gegensatz zum CMS Server 2002 gratis in SP enthalten ist.
Es wird nun in der Demo gezeigt, wie ich ein neues Intranet anlege, und was ich alles einstellen kann. (Zuerst SiteCollection etc. ) Es ist immer das selbe Puplishing tool, Diesesmal muss ich einfach den Typ Portal aussuchen. Er zeigt auf dem File System, wo die Templates liegen. So kann ich mein eigenes Template hinterlegen, und dann jedesmal wieder verwenden, wenn ich ein neues Portal anlege.
Die Definitionen könne auch gleich Subsites etc. enthalten, so dass diese auch jedesmal miterstellt werden. (internetblank.xml) Dies macht natürlich nur sinn, wenn ich viel Internet seiten und dies häufig erstellen muss.

In der Vergangeheit gab es sehr viel "Konfusion":

• Windows SharePoint Services 2003 à sites
• SharePoint Portal Server 2003 à areas
• Content Management Server 2002 à channels

• In SharePoint 2007 everything is a site

Alles ist based on ASP.net 2.0 . Jede neu erstellt Default.aspx ist in der Datenbank gespeichert, resp. in der DocLib "Pages"
Die folgende Grafik zeigt den Aufbau der Site Map Providers. Jedes "Kästchen" lässt sich überschreiben und Customizen.Also ich kann eigene Controls oder Data Sources machen etc.



Jetzt kommt die Erklärung über Master Pages. Dies ist das selbe wie bei den anderen SP Sites. Natürlich kann ich eigene Master Pages definieren. Alle Sites and Subsites referenzieren dann auf diese Master Page. Nun wird gezeigt, wie ich in Subsites verschiedene Master Pages definiere. (OOB)
Es folgt eine Demo, wie ich mit SharePoint Puplisher master Pages oder ander Pages und Layouts anpasse.
Da alle Layouts in DocLibs gespeichert ist, und wir nun ja Item Level Security habe, kann ich natürlich auch bestimmen, wer welches Layout als Template zur Verfügung hat. (Also das HR Template nur für das HR etc.)

Nun erfolgt die Erklärung, wie mit den Content Types umgegangen wird.



Bei all meinen Content Types kann ich auch Custom Fields hinzufügen etc. Ich kann aber auch WF's an die Contentypes binden, so dass ich eine Internet Seite habe mit diversen WF's.
Ich kann nun im SharePoint Designer auf einer Subsite, meine Contnet Fields und Content Types hinzufügen und natürlich bestimmen, wer diesen editieren kann.
Wenn ich die Seite publishe, so kommt noch ein kleiner Approval WF, so dass der Intra oder Extranet verantwortliche dies Approven und freigeben kann.
Nun wird das ganze aus Sicht des HR Managers gezeigt, wie er die Seite sieht. Er sieht die selbe Seite wie jeder, kann dann aber auf Editieren klicken und dann den Inhalt (der Zuvor definiert wurde ändern) Nach dem Speichern kann wieder ein Approval stattfinden, muss aber nicht, Die Site ist somit gleich "Live" .
Es wird jetzt gezeigt, wie ich das Puplishing "Tool" Customizen kann, wenn ich das OOB Tool nicht verwenden will.
Site Variations: Ziel der Site Varations ist ein Multilingual Scenario oder verschieden "Targets" ( PDA's, Mobiles, PC's etc. ) Ich kann bestimmen, von wo ich die Variation beginne. Jede Variation wird gelabelt.
Ich gebe beim Label den "local" an (Spracheinstellung). Der User wird nun auf die richtige Seite gesteuert. (Wenn ich Deutsch (Schweiz) eingestellt habe und eine Variation für diese Seite besteht, so lande ich auch gleich auf dieser).
Es kommt noch eine kleine Exkursion betreffend Authentication. Diese ist aber nicht anders, als sonst bei SP. Sprich ich kann AD Accounts benutzen, aber auch irgendwelche LDAPS etc.

Interressante Session, da ich mich noch nie um das WCM gekümmert habe. Leider kein Infos betreffend Migration von bestehenden Webs. Nur, wie ich neue erstelle und was ich alles definieren kann etc.

OFF002 DEMO: Building Collaboration Solutions with Windows SharePoint Services and the 2007 Microsoft Office System

Chris Bryant , Todd Bleeker

Abstract:
This session presents the fundamentals of developing applications that use 2007 Microsoft Office SharePoint Server and Services. Examples shown will include the development of collaborative applications and the use of wikis and blogs. Furthermore it will drill down into using custom content types and adding custom fields types to lists and content types.



Ich weiss… aber da es sich um eine Demo handelt, will ich mir Ideen holen, wie wir zukünftig "Collaboration" betreiben können. Ich würde gerne die eine oder andere Session besuchen, jedoch bin ich ja SV Office System, und da fühle ich mich irgendwie verpflichtet ;-)
Das es auch um Wikis und Blogs on SharePoint geht, bin ich schon gespannt, ob ich diesesmal mehr Glück habe.
Zuerst wird eine Wiki Seite erstellt. Danach geändert und Links hinzugefügt. Nichts spektakuläres, ein Wiki wie man es kennt. Denn grossen Vorteil sieht der Speaker darin, dass er nun auch die History ansehen kann, was wann von wem geändert wurde. Hmm… kann das nicht jedes Wiki ??
Nun "unterschreibt" er noch fü einen RSS Feed und der Kollege erhält im Outlook die Notifikation, wenn "seine" Wiki Seite einen Update erhalten hat.
Nun macht er eine neue Blog Seite, zeigt wie einfach das gehen soll. Komischerweise sind beide immer als System Account angemeldet… MS Way ;-) Natürlich muss diese Seite ein Admn anlegen, aber dass sie immer damit arbeiten… Ok, die Blog Seite ist natürlich wiederum eine "normale" SharePoint Seite, welch ich halt "gewissen" Authoren zuweisen kann, dass die dort bloggen können. Interessant am ganzen ist jetzt jedoch die Verlinkung untereinander, also vom Blog aufs Wiki und von da wiederum in eine Doc Lib, wo ich die Dokumente (Im Beispiel ist es ein Projekt Wiki und Blog) die da referenziert sind, abgelegt sind. Wenn ich nun auf dem Projekt Wiki ein Dokument hochlade, liegt dies automatisch in dieser Doclib.
Jetzt wird via Visual Studio ein neues Custom Field dem SharePoint beigebracht. Dies wird dann verwendet, um Zip Codes zu verifizieren. Scheint eher eine Demo zu sein, wie ich dies im Studio mache und wie ich es deploye. IMHO gehört hier aber keine Exkursion hin, wo mir erklärt wird, wie man ein Strong Named Assembly macht und dass ich dies in den GAC deployen kann etc. Aber weiter zur Demo…
Die Solution, welche zum SharePoint deployed wird, enthält eine Regular Expression, welche den Zip Code Prüft, wenn ich etwas Uploade. Wenn diese RegEx nicht "greifft" wird eine Exeption geworfen, (dem User wird eine MsgBox angezeigt) wo dann halt steht, dass dieses Dokument einen ungültigen Zip Code enthält. Schön daran ist, dass ich nun in den Doc Libs diese Validation einschalten kann. Kann ich mir vorstellen, dass irgend jemand in der RTC mit so einer Anforderung kommt ;-) Auch bei Wiki Uploads etc. kann ich dies nun anwenden.
Somit kann ich jede Möglichkeit von RegEx in der Doclib nutzen. Ich muss mal mit Roger W. sprechen, ich glaub wir nutzen dies schon … (Ntrl_ )
Jetzt definieren sie ein "render pattern". Dass heisst, wenn ich bei den Propertys in meinem Upload das Feld Zip Code eingebe, wird dies, so wie ich dass in meiner Klasse definiert habe, dargestellt. So kann ich das ganze natürlich customizen und so verbauen, dass es noch hässlicher aussieht ;-)


War noch eine interressant Demo, besser als das ganze zuvor. Deshalb gehe ich auch an die nächste SP Session, geht es da doch um OOB WCM. (Web Content Management).

Case Sensitiv Crawling

So, jetzt habe ich mein Mittagessen "sausen" lassen und habe Moritz Berger aufgesucht. Ich habe ihn natürlich auch gefunden….
Die Antwort betreffend der Frage, "Wann will MS Case Sensitiv crawlen " ? Ist nicht neu und entspricht dem, was wir bis anhin auch als Antwort zu hören bekommen haben.
Im Moment leider nicht… Ich wurde gefragt, was den Case Sensitiv sei und weshalb ich dies Crawlen möchte … Ah, this Unix thing… war die Reaktion. Nun, wie gesagt, vermutlich mit SP1, man arbeite daran, könne aber nichts garantieren. Wann den SP1 erscheinen wird, war dann natürlich postwendend meine Frage… Zurzeit gibt es noch keinen (offiziellen) Plan. Sprich über Termine redet noch niemand….
MS, welcome to the real World !

OFF306 Understanding Workflow in Windows SharePoint Services (WSS) and Microsoft Office SharePoint Server 2007



Ted Pattison
Abstract:
The Windows Workflow Foundation (WF) which debuts with version 3.0 of the .NET Framework introduces a core set of workflow plumbing and a productivity-oriented development paradigm to the Windows platform. WSS 3.0 builds on top of WF by adding in extra workflow dimensions for managing the document lifecycle and integrating humans into the workflow process. This session quickly covers the underlying workflow architecture of .NET Framework 3.0 and WSS 3.0 and then dives into demonstrations of building custom WSS workflows with Visual Studio 2005. You will see how to build, deploy, test and debug custom workflows for WSS sites with the Visual Studio 2005. Along the way you will also see how to use InfoPath 2007 to create and integrate forms into custom workflows created with Visual Studio 2005.


Jetzt geht der doch schon wieder an eine SharePoint Session. Wie ihr aber am Titel erkennen könnt, geht es ja um WF's in SP. Ich weiss, auch dass ist für uns nicht neu, jedoch erhoffe ich, einige "hints" zu hören, Best Practices oder so …
Die Session beginnt mit einer Exkursion, was WinWF ist, was die Idee dahinter ist etc. Es muss ja so sein, es hat ja sicherlich Leute hier, die dies das erste Mal hören. Dies werde ich aber sich hier nicht alles aufschreiben ;-)
Die Session ist als 300'er gekennzeichnet. Leider ist bis jetzt nichts davon zu merken. Es geht darum, das Office System einfach schon suuper WF's OOB zur Verfügung stellt. Es wird gezeigt, wie mit dem SharePoint Designer einfache Workflows zusammen geklickt werden können. Danach kommt die Erklärung, dass man einer Libary WF's anhängen kann. Leider werde ich wieder enttäuscht.
Natürlich geht es nicht um InfoPath, irgendwelche erweiterten oder Customized WF's. Es wird gezeigt, wie ich beim Einchecken in Word 2007 oben die Propertys, sprich Metadaten eingeben kann. Es wird dann auch gezeigt, dass ich oben klicken kann, "Add Workflow" und dann jemanden das Dokument zum approven geben kann… Es ist immer die selbe Demo… Ich verstehe nicht ganz, weshalb MS immer diese DEMO braucht, seit 1 Jahr. Entweder können sie sich nicht vorstellen, was für WF's in der Realität existieren, oder sie haben keine Fantasie…
Oh, jetzt kommt doch noch InfoPath. Was wird gezeigt ? Hmmm, OOB, Initial Form etc. Alles schon gehabt. Sorry Guys, wenn ich hier nicht mehr weiter schreibe, aber jeder INDS Mitarbeiter weiss mehr (sofern sie aufgepasst haben :-) über WF's und SharePoint als die Besucher dieser Session !

Könnt ihr euch an die Demo im Februar erinnern ? Da habe ich die besseren OOB WF's gezeigt als hier gezeigt werden. Nur glaube ich, ich habe nicht soo fest Werbung gemacht und das Wort exiting, great und fabulous gebraucht…

Dienstag, November 07, 2006

DEV309 The Identity Metasystem, Active Directory Federation Services (ADFS) and Windows CardSpace (formerly 'InfoCard')



Keith Brown
http://www.pluralsight.com/keith
Abstract:
The Identity Metasystem is a new way of representing digital identity. It's a claims-based identity backplane that can be used for authentication and authorization on the Internet. This session will introduce these concepts in a very concrete way including demos of ADFS that show how you can reap the benefits of federated and claims-based identity in your own Web applications. We'll follow up with a discussion of Windows CardSpace, which surfaces the metasystem to end users and puts them in control of their identities. You'll take away from this session fresh ideas about how to authenticate and authorize users in your Web applications and Web services. You'll also learn how important it is to avoid creating more identity silos!


Die Diskussion beginnt damit, dass MIIS zu teuer sei… und weshalb kein "Single Identity System" Erfolg hat. Passport funktioniere zwar super, aber eben nur auf MS Systemen.

Die sieben "Laws" of a stable Identity system:

User Control an consent
Minimal disclosure
Justifiable parties
Directional identity$Mutliple operators and technologies
Human integration
Consistent expirience across contexts

Wieso funktioniert Passport nicht ? Weil niemand sich trauen würde, sich bei seinem e-banking System mit dem Passport Account einzuloggen. Microsoft sei zwar fein, aber gewisse Daten will man nicht jedem anvertrauen…

Dem Identity Metasystem: Keine Identity Technologie oder Provider "rule them all" =Law 5 ! Es sei aber möglich, ein Identity Backplane zu machen, wo diverse Systeme miteinander arbeiten. Denn kein System erfülle alle Anforderungen aus allen Systemen. Nun wird erklärt, was claims sind.





Die Active Directory Federation Services wurden letzten Dezember mit Windwos 2003 R2 Server ausgeliefert.

• Adds support for WS-Federation (passive profile)
• Passive profile is for browser clients
• Active profile (ADFS v2) will support smart clients
• ADFS supports several modes of operation
• B2B federation (this talk will focus on this mode)
• B2E extended intranet access for mobile users
• B2C single-sign on using account database in perimeter network

• Architects: federation with ADFS has many benefits!
• Reduces cost and latency
• Single-sign on means users don’t need yet another password
• Ditch those passwords and use strong authentication!
• Devs: learn how to support ADFS in your web apps!
• ADFS comes with an HttpModule called the “ADFS web agent” that does all the heavy lifting for you (decrypting SAML tokens, etc.)
• ADFS class library adds a couple of new namespaces
○ System.Web.Security.SingleSignOn
○ System.Web.Security.SingleSignOn.Authorization
• HttpContext.User.IsInRole works like you expect for group claims

Sorry wenn ich hier Teile in English poste, aber es geht so schnell… Ich werde die Folien organisieren, denn es ist mit einer Animation sehr viel einfacher zu erklären, wie die ADSF funktionieren, als jetzt step by step zu beschreiben. (Oder ihr fragt Roger , der kann euch dies sicher besser erklären, als ich im Blog. )



Nun geht es um Windows Card Space… und ich verstehe endlich, was das genau ist.
Windows Card Space funkioniert so, dass wenn ich irgendwo einlogge, wo (Card Space vorausgesetzt) ich mit meiner "Card" einloggen kann. Ich brauche dazu kein PW oder so. Meine Card ist wie eine Art "Pass". Dieser Pass muss nicht von der Seite stammen, wo ich mich einlogge, sondern kann z.B (wie ein Zertifikat) von Verisign sein oder so. Übertragen werden nun nicht alle Informationen, die die Seite von mir haben muss. Es ist eine Art Token, sieht aus wie ein Kerberos Ticket. Nun weiss die Site, woher meine Card kommt und fragt diese an. Die Antwort ist nun einfach OK, oder NOK. Ich erhalte Zugang zu Website, ohne einen "eigenen" Account dort zu habe.



Sehr interressante Session, ich werde hier sicher mündlich oder so noch mehr erklären können. Ist nicht immer ganz einfach, aufzupassen, zu bloggen und alles auch noch so wiederzugeben, dass verstanden wird was ich sagen will ;-)

DEV240 Introduction to Extending Windows Desktop Search: How to add YOUR data to the system

Chris McConnell , Moritz Berger
Abstract:
We will discuss the current products that help users find and use their data such as files and e-mail. We will show in-depth examples of how to add your companies' data into the Windows Search platform. This will showcase both local data (filters) and remote data stores (protocol handlers). We will also provide a sample of consuming data from the Windows Search index.


Da ich mich in letzter Zeit häufiger mit der Suche beschäftigt habe, habe ich mich für diese Session entschieden. Das Moritz Berger auch mit von der Party hat mich dann wirklich überzeugt, dass ich an diese Session gehe. Moritz war vor 2 Wochen schon am Global Accounts Roundtable, deshalb weiss ich, dass ich ihn betreffend SharePoint Suche, Case Sensitive crawling und solche Sachen fragen kann.

Die Präsention beginnt mit den selben Folien, die ich vor 2 Wochen bei Rick Samona bereits gesehen habe. Die Leute, welche an dem letzten RENO SF Gesamtstatus Meeting waren, kennen diese Folien bereits, denn da habe ich sie vorgestellt. Es sind genau diese Folien. Für alle anderen gilt es zu bis zum 24.11 (intern) oder dem 5.12 zu warten, denn da werde ich das ganze nochmals präsentieren. Deshalb verrate ich hier auch nicht allzu viel ;-)
Ich werde aber die Frage stellen, weshalb MS nicht einen ihrer Vorteile nutzt, dass wenn ich Dokumente suche, welche schon auf Ntfs gespeichert sind, so könnte ich ja für die Relevanz (Resultat Reihenfolge) die File Usage des File Systems brauchen… AW: Das sei ein guter Input, man habe auch schon daran gedacht, ev. mit Casino (next Wave, Q2 07) .
Das meiste, was hier besprochen wird, ist das einbinden eigener Filetypes (via Ifilters) . Wie mache ich dies und was muss ich beachten. Ich werde Moritz morgen am Mittag treffen (ask the experts) und ihn dann betreffend Case Sensitiv löchern.

DEV225 Windows Presentation Foundation (WPF): Introduction

Mike Pelton
Abstract:
WPF is Microsoft's new graphical presentation technology. It makes very light work of sophisticated graphics tasks and hence opens many new doors – the ability to create highly productive and original user interfaces (UI), to mix 2D and 3D graphics into applications easily, to offer a compelling experience to your users, and the ability to mesh the work of graphic designers with business logic. There's a remarkable clarity of vision behind WPF's architecture and, primarily through demonstrations, this session will illustrate how that model brings capabilities that used to be considered the domain of the highly specialised to within easy reach of all developers.


Diese Session habe ich besucht, weil die SharePoint oder Office Sessions nicht wirklich interessant sind für mich. Eine wäre InfoPath und die andere SharePoint with Workflow. Leider haben beide nur einen 200 Level, deshalb lasse ich es sein. Ich werde immer noch die Slides anschauen können…

WPF sieht sehr interessant aus, und jeder, der sich schon mit MFC rumgeschlagen hat, weiss, dass es irgendwie einfacher gehen muss…WPF kann ich mittels XAML oder natürlich C# "steuern". Interessant ist der Ansatz der Programming Model Unification:




Die Presentation bringt sehr viele Demos, keine Slide Show. Dies begrüsse ich so oder so, will ich doch was sehen ;-)

WPF ist daraus ausgelegt, die Grafikpower, die heute ein PC besitzt, auch auszunutzen. Die ganze Engine ist Vector basiert.

• Uses the PC’s graphics power
• Quality is preserved with scale
• CPU freed from graphics work
• Gain capability from graphics card advances

Er zeigt nun ein paar Grafiken, welche mittels WPF erstellt wurden. Sieht wiederum sehr gut aus. Ich staunte auch, wo er eine Grafik von einem Elefant nimmt und diese einfach als XAML speichert. Ist zwar gross und unübersichtlich… aber es wird sicherlich solche gebe, die zukünftig ohne Grafischen Editor im Notepad mittels XAML irgendwas malen, ohne es zu sehen ;-)

Was kann man mit WPF alles machen ?

• Drawing
• Painting
• Controls
• Layout
• Document interface
• Text
• Animation
• 3D
• Data Binding
• Browser-only Apps



Und hier noch eine Architektur Übersicht:



Eine sehr sehr interessante Demo !! Ich kann hier gar nicht aufzählen, was uns alles gezeigt wurde. (Z.B. eine Applikation, welche via Web Service Flickr connectet und nach Bildern sucht, dessen Suchbegriff eingegeben wurde. Ok, nichts besonderes…aber die Art, wie dies dargestellt wurde, war einmalig. Das aktuelle Bild war in der Mitte Rund, alle anderen Bilder rundherum. Wenn ich mit der Maus über ein Bild fahre, dann wird dieses langsam grösser, Beim klick tauschen sich das Grosse Bild in der Mitte mit dem auf der Seite. Sieht einfach heiss aus, sehr schön animiert. Und den Code, den wir hier zu sehen bekommen, ist nicht so gross. Ich pers. Kann mir nicht vorstellen, ob solche Effekte jemand mit MFC hingekriegt hätte…)
Ein anderes Beispiel ist eine neue Art UI, welche sich der Speaker so vorstellen kann. Ein Fenster, mit ca 16 Farbigen Quadraten drauf. Wenn ich über ein Quadrat fahre, dann wird dieses Grösser, die anderen werden sehr klein. So kann ich in Applikationen Fenster wechseln, ohne Tabs oder speziellen Navigations Button etc.
Übrigens ist der berühmte Vista Effekt, welches die einzelen offenen Programme so hintereinander durchlaufen lassen, eine "relativ" einfache WPF Anwendung. Witzig ist hier, dass ich dazu genug Grafik Power brauche, DirectX 9… aber keinen WDDM Treiber, wie ihn VISTA (wenn ich diesen Effekt haben will) zwingend vorschreibt. Die Demo läuft auf XP, jedoch kann er den Effekt auch zeigen, direkt aus dem Studio compiliert.
Eine Demo zum Staunen !!

Übrigens eine Software die WPF schon nutzt, ist iBlocks :