This presentation demonstrated how WPF now can support for Ribbon and DataGrid out of the .Net box (in .Net4.0)
The WPF Data grid control
Available in the WPF Toolkit (found on the WPF CodePlex site)
The WPF Ribbon control
As it is WPF, the Ribbon setup is moved out of the code (as in WinForms) and into the XAML config files (used by WPF). To get to the WPF ribbon control, it requries Office UI licencing
It supports both dynamic rezing (with configurable rules), QuickAccess toolbar, The Application menu, contextual tabs and 'Skins'/styling templates.
VS2010 will have much more support for WPF development than VS2008.
Typically tooling that will provide drag/drop/property/visual editors that replaces manual editing of the XAML definitions. An early version of this was demonstrated in the session.
30 Oct 2008
Microsoft offerings within Management of Services
I asked a couple of experts on the PDC OpenSpace on what they offer in terms of management, staging, versioning etc. of Services and service endpoints.
My impressions from the answers they had was that they point to 3rd party vendors for tooling around governance/management. SOA Software and AmberPoint was mentioned.
The "Dublin" product will cover runtime management of services hosted on Microsoft platforms (Sevrices implemented with WCF running on IIS7).
They mentioned that something may appear in future evolvement around "Oslo", but no roadmap seems to exist in this area. No one I talked to had heard about MSE..
My impressions from the answers they had was that they point to 3rd party vendors for tooling around governance/management. SOA Software and AmberPoint was mentioned.
The "Dublin" product will cover runtime management of services hosted on Microsoft platforms (Sevrices implemented with WCF running on IIS7).
They mentioned that something may appear in future evolvement around "Oslo", but no roadmap seems to exist in this area. No one I talked to had heard about MSE..
WinForms VS WPF
Microsoft seems to put their future UI efforts for the desktop into WPF and its 'brother in the browser', Silverlight. WinForms will be supported for quite some time (nothing said about the timeframe), but it seems obvious that all the new stuff comes into WPF.
Ifragistics has recently bundeled their WinForms avd WCF components into one licence, and the MS patterns and practices team have recently delivered CAB-type support (coverage unknown) for WPF.
This can affect projects just starting up that have invested in WinForms.
Ifragistics has recently bundeled their WinForms avd WCF components into one licence, and the MS patterns and practices team have recently delivered CAB-type support (coverage unknown) for WPF.
This can affect projects just starting up that have invested in WinForms.
REST based services in Azure = REST support in WCF
The examples I have seen so far of the Azure service offerings have some common patterns.
They are all accessible via standard protocols and formats (HTTP, HTTPS, XML,Atom, ==) . Services are exposed through REST based API's and return XML in some form, often as Atom feeds. An example was the Live Services hat was accessed from code written in .Net, Python, Java and PHP.
For CRUD services on data,REST seems like a dominant and effective design pattern. We really need to look more into this for our internal development.
Actions in the REST area will move to the top of my TO-DO list when I get back home.
Microsoft has annouced a REST Starter Kit (WCF extension) with a lot of examples and democode.
They are all accessible via standard protocols and formats (HTTP, HTTPS, XML,Atom, ==) . Services are exposed through REST based API's and return XML in some form, often as Atom feeds. An example was the Live Services hat was accessed from code written in .Net, Python, Java and PHP.
For CRUD services on data,REST seems like a dominant and effective design pattern. We really need to look more into this for our internal development.
Actions in the REST area will move to the top of my TO-DO list when I get back home.
Microsoft has annouced a REST Starter Kit (WCF extension) with a lot of examples and democode.
28 Oct 2008
.Net Services offerings on Azure
A section of the services provided on top of the Azure platform is .Net services.
These are a "Service Bus (ESB for the cloud)", "Access control", and "Workflow"
Microsoft provides a "high available" service bus, including a Service Registry (allowing access to a service you can host on your own infrastructure OR in Microsoft's Azure runtime)
Everything you can do on WCF (in terms of binding and protocols) can also be moved to "the Cloud" through the .Net Service bus on Azure.
These are a "Service Bus (ESB for the cloud)", "Access control", and "Workflow"
Microsoft provides a "high available" service bus, including a Service Registry (allowing access to a service you can host on your own infrastructure OR in Microsoft's Azure runtime)
Everything you can do on WCF (in terms of binding and protocols) can also be moved to "the Cloud" through the .Net Service bus on Azure.
"Oslo" - Model Driven Development
Wow.. this session was intense. The session introduced Microsofts take on model driven development through textual and visual DSL's, model repository and model runtimes.
Some keywords:
- "M" - A language for specifying models - The spec will be "open sourced" to allow for everyone to create tools and runtimes for it.
- "Quadrant" and "IntelliPad" - Visual and textual tools for manipulating models.Integrates wit VisualStudio
- Runtimes for Models - WPF, WF, +++ already support this. More will come
I have to hear more to fully digest these ideas, but what I can see, this has a huge potential to change development.
We will get access to the previews of the "Oslo" tools (supplied in "the goods" today)
Come to think of it after 1-2days of thinking and 2 additional Oslo sessions. This looks very much like e.g. AdvantageGen used for our internal 'Gazelle' application. Using this approach will create bindings to the repository vendor, much like the Gen tools do. It willbe very interesting to see how this is recieved and adopted by the community (and internally in our company).
Some keywords:
- "M" - A language for specifying models - The spec will be "open sourced" to allow for everyone to create tools and runtimes for it.
- "Quadrant" and "IntelliPad" - Visual and textual tools for manipulating models.Integrates wit VisualStudio
- Runtimes for Models - WPF, WF, +++ already support this. More will come
I have to hear more to fully digest these ideas, but what I can see, this has a huge potential to change development.
We will get access to the previews of the "Oslo" tools (supplied in "the goods" today)
Come to think of it after 1-2days of thinking and 2 additional Oslo sessions. This looks very much like e.g. AdvantageGen used for our internal 'Gazelle' application. Using this approach will create bindings to the repository vendor, much like the Gen tools do. It willbe very interesting to see how this is recieved and adopted by the community (and internally in our company).
Windows 7 - Desktop, Mobile and The Web
The first keynote session on Tuesday was all about building the next generation user experiences.
Microsoft talked about new features in Windows 7, .Net, Visual Studio, WPF, Silverlight, Office and Live Services.
Touch screens where used extensively for demonstrations, as Windows 7 come with extensive support for this.
A common denominator for all topics where integration (utilizing the new Azure based services in the Cloud) between Desktop, Browser apps and Mobile devices.
They made a couple of very impressive demos on WPF/Silverlight applications that utilised both touch capabilities (Tesco) and Live Services syncronisation (BBC).
Hope I can link to screenshots of these presentations, as they give a whole new idea on user experience.
Office 14 was also demonstrated, with focus on collaboration (e.g. live syncronisation between two users editing within the same document) and syncronised publishing (e.g. publish a Excel graph to a webpage and keeping it live sync with the data behind the graph)
Microsoft talked about new features in Windows 7, .Net, Visual Studio, WPF, Silverlight, Office and Live Services.
Touch screens where used extensively for demonstrations, as Windows 7 come with extensive support for this.
A common denominator for all topics where integration (utilizing the new Azure based services in the Cloud) between Desktop, Browser apps and Mobile devices.
They made a couple of very impressive demos on WPF/Silverlight applications that utilised both touch capabilities (Tesco) and Live Services syncronisation (BBC).
Hope I can link to screenshots of these presentations, as they give a whole new idea on user experience.
Office 14 was also demonstrated, with focus on collaboration (e.g. live syncronisation between two users editing within the same document) and syncronised publishing (e.g. publish a Excel graph to a webpage and keeping it live sync with the data behind the graph)
Framework Design Guidelines
Krzysztof Cwalina and Brad Adams from Microsoft held a presentation on best practices for framework design, based on experiences with evolving the .Net framework itself.
"Learn about guidelines that have helped the Microsoft .NET Framework grow into the most popular developer framework Microsoft has ever created. After ten years of use, we have an enormous amount of real customer data about what makes great framework design. Whether you are building your own framework or just want to get the most out of the .NET Framework, this is a must-attend talk! Join Krzysztof Cwalina and Brad Abrams, authors of the Dr. Dobbs award winning "Framework Design Guidelines" book, and get a sneak peek at the content from the 2nd edition (first available at PDC2008)."
Here are some key takeaways from this session.
- Lazy constructors. They should do minimal amount of work and instanciation
- Use extention methods where appropriate
- Type design
- Prefer broad, shallow hierarchies
- Consider making base classes not constructable (i.e. abstract)
- Virtual methods - use by following the Liskov substitution principle ("virtual methods is what
distinguishes a framework (that you can extend) from a Library (that you just use)")
Common problems for framework development:
- Too complex up front design (over engineering based on requirement assumptions)
- Pressure of delivery drives you to slash your design - partial solutions
- Solution: Do as little as possible now to ensure room for extensibiliy in the future (defer your own lagacy..)
- Take care of your dependencies - adhere to dependency rules
- Do not allow upwarde dependencies
- Avoid horizontal dependencies
- Type groups:
- Libraries (types not passed between components),
- Primitives (passed around a lot, e.g. String) typically in lower layer
- Abstractions (library that needs passing around..)
- Consider placing library types higher in the stack
- Keep primitives policy free (simple)
- Do NOT create abstractions unless you know what you are doing. These give you trouble..
The secret of achieving great productivity. Make your framework as easy to use as falling into a Pit!
- Use Test Driven Development! Design for testability and simplicity.
- Use IoC and dependency injection
- "The power of Sameness" principle (e.g. Naming conventions)
- Do not abbreviate! Use meaningful names (Search engine test)
- Principle of least surprise (for developers using your framework)
- FxCop is used to verify/check for "power of sameness"
- Framework Design Studio (http://code.msdn.microsoft.com/fds)- Allows you to load two versions of the same assembly and extract the changes/differences
- Dependency management Tool (http://code.msdn.microsoft.com/fxarch) FxCop for dependency management
"Learn about guidelines that have helped the Microsoft .NET Framework grow into the most popular developer framework Microsoft has ever created. After ten years of use, we have an enormous amount of real customer data about what makes great framework design. Whether you are building your own framework or just want to get the most out of the .NET Framework, this is a must-attend talk! Join Krzysztof Cwalina and Brad Abrams, authors of the Dr. Dobbs award winning "Framework Design Guidelines" book, and get a sneak peek at the content from the 2nd edition (first available at PDC2008)."
Here are some key takeaways from this session.
- Lazy constructors. They should do minimal amount of work and instanciation
- Use extention methods where appropriate
- Type design
- Prefer broad, shallow hierarchies
- Consider making base classes not constructable (i.e. abstract)
- Virtual methods - use by following the Liskov substitution principle ("virtual methods is what
distinguishes a framework (that you can extend) from a Library (that you just use)")
Common problems for framework development:
- Too complex up front design (over engineering based on requirement assumptions)
- Pressure of delivery drives you to slash your design - partial solutions
- Solution: Do as little as possible now to ensure room for extensibiliy in the future (defer your own lagacy..)
- Take care of your dependencies - adhere to dependency rules
- Do not allow upwarde dependencies
- Avoid horizontal dependencies
- Type groups:
- Libraries (types not passed between components),
- Primitives (passed around a lot, e.g. String) typically in lower layer
- Abstractions (library that needs passing around..)
- Consider placing library types higher in the stack
- Keep primitives policy free (simple)
- Do NOT create abstractions unless you know what you are doing. These give you trouble..
The secret of achieving great productivity. Make your framework as easy to use as falling into a Pit!
- Use Test Driven Development! Design for testability and simplicity.
- Use IoC and dependency injection
- "The power of Sameness" principle (e.g. Naming conventions)
- Do not abbreviate! Use meaningful names (Search engine test)
- Principle of least surprise (for developers using your framework)
- FxCop is used to verify/check for "power of sameness"
- Framework Design Studio (http://code.msdn.microsoft.com/fds)- Allows you to load two versions of the same assembly and extract the changes/differences
- Dependency management Tool (http://code.msdn.microsoft.com/fxarch) FxCop for dependency management
27 Oct 2008
MEF - Make Extensibility Fun..
MEF = Managed Extensibility Framework (and the CodePlex info)
MEF is targeted for making it easy to build extensibility into applications.
MEF is targeted to be a standard extensibility model.
Namespace System.ComponentModel...
MEF uses attributes [..] to declare Import and Export attributes (i.e. the extension points)
Export is "I offer this contract", Import is "I need an implementation of this contract".
MEF offers a concepts like Catalog and Container to manage and gather extensible Parts.
It seems like MEF has the potential to replace the extensibility support iTrade get from CAB/SCSF and EntLib on our GUI framework.
It also seems like MEF offers a lot of support that you would find in the Spring Framework.
How do MEF compare to IoC containers available for .Net (Unity, Windsor etc.)
- MEF focuses more on what you dont know, and allowing composition of that. IoC containers wire things that you already know together.
- MEF has aspects of IoC, but do not provide an IoC container
How do MEF compare to CAB?
- CAB and MEF do not compete. CAB is a much more extensive framework for building composite UI applications, while MEF is a more generic extensibility mechanism.
There seems to be no plan to change CAB's extensibility framework to CAB.
MEF is targeted for making it easy to build extensibility into applications.
MEF is targeted to be a standard extensibility model.
Namespace System.ComponentModel...
MEF uses attributes [..] to declare Import and Export attributes (i.e. the extension points)
Export is "I offer this contract", Import is "I need an implementation of this contract".
MEF offers a concepts like Catalog and Container to manage and gather extensible Parts.
It seems like MEF has the potential to replace the extensibility support iTrade get from CAB/SCSF and EntLib on our GUI framework.
It also seems like MEF offers a lot of support that you would find in the Spring Framework.
How do MEF compare to IoC containers available for .Net (Unity, Windsor etc.)
- MEF focuses more on what you dont know, and allowing composition of that. IoC containers wire things that you already know together.
- MEF has aspects of IoC, but do not provide an IoC container
How do MEF compare to CAB?
- CAB and MEF do not compete. CAB is a much more extensive framework for building composite UI applications, while MEF is a more generic extensibility mechanism.
There seems to be no plan to change CAB's extensibility framework to CAB.
Windows Azure - "An operating system for the cloud"
The main announcement in todays keynote was the launch of Windows Azure, a new product offering from Microsoft to address development, hosting and management of services in the Cloud.
The whole keynote is published on video.
They call it "an operating system for the cloud". The business model is to make money on application usage(resource utilization) and SLA agreements, but this will not be effective before the product is officially launched some time next year. PDC participants will have the opportunity to apply for a "tech preview" and start developing and deploying services in the Microsoft hosted cloud from noon today.
The concept seems interesting, although I foresee a slow adoption rate for companies like ours where most development is targeted for users inside our firewall.
I will probably follow a few more sessions, covering the details of Azure to get more into what it is all about.
The whole keynote is published on video.
They call it "an operating system for the cloud". The business model is to make money on application usage(resource utilization) and SLA agreements, but this will not be effective before the product is officially launched some time next year. PDC participants will have the opportunity to apply for a "tech preview" and start developing and deploying services in the Microsoft hosted cloud from noon today.
The concept seems interesting, although I foresee a slow adoption rate for companies like ours where most development is targeted for users inside our firewall.
I will probably follow a few more sessions, covering the details of Azure to get more into what it is all about.
Surface SDK and Multitouch technology
Microsoft have demos on applications that uses something they have branded as Surface technology.
It looks like iPod Touch interaction on large touchscreens. They demoed a running video window being zoomed and spinning around using two fingers on the screen. Pretty cool..
It looks like iPod Touch interaction on large touchscreens. They demoed a running video window being zoomed and spinning around using two fingers on the screen. Pretty cool..
REST with WCF
Ron Jacobs did a section (within the WCF pre-conference session) on REST and how WCF/Microsoft supports it.
Discussed the difference between HI-Rest and Lo-Rest. Refers to how pragmatic VS purist you are in terms of adhering to the REST principles.
The Microsoft position:
- SOAP is great
- REST is great
- Use WCF to build either and go in peace
MS promotes REST esp. in usage scenarios where you care about making the service available and accessible. (e.g. invoke a service with Notepad..)
WCF support for REST:
- WebGet and WebInvoke keywords
- URI Templates - allows you to override WCF default URI's
- behaviours - webHttp and enableWebScript (Ajax friendly and ASP.NET friendly)
Microsoft announces a "REST starter kit" tomorrow.
Usage of this toolkit was demonstrated in the session. It seems to contain support for making it easy (i.e. few lines of programming) to adhere to the REST principles (e.g. returning correct RESTful statuscodes, providing URI templates etc.)
The toolkit adds Microsoft.ServiceModel.Web
Discussed the difference between HI-Rest and Lo-Rest. Refers to how pragmatic VS purist you are in terms of adhering to the REST principles.
The Microsoft position:
- SOAP is great
- REST is great
- Use WCF to build either and go in peace
MS promotes REST esp. in usage scenarios where you care about making the service available and accessible. (e.g. invoke a service with Notepad..)
WCF support for REST:
- WebGet and WebInvoke keywords
- URI Templates - allows you to override WCF default URI's
- behaviours - webHttp and enableWebScript (Ajax friendly and ASP.NET friendly)
Microsoft announces a "REST starter kit" tomorrow.
Usage of this toolkit was demonstrated in the session. It seems to contain support for making it easy (i.e. few lines of programming) to adhere to the REST principles (e.g. returning correct RESTful statuscodes, providing URI templates etc.)
The toolkit adds Microsoft.ServiceModel.Web
26 Oct 2008
PDC 2008 has started
PDC 2008 has started!
I will try to update this blog with my impressions and perceived highlights from this conference.
The conference kicks off with pre-conference sessions, and I am attending the topic "Working with WCF -Demonstration and perspectives", by Joval Löwy and Ron Jacobs.
Joval told a funny story about branding names for .Net, esp. the VB.NET and ASP.NET brand names. Microsoft has described several different technologies as "foundation for developing web services" - this is also the case with Microsoft promotion of WCF.. but it is not! WCF is much more a generic platform change with a new programming model..
WCF does for .Net that .Net did for Windows. It is a new runtime that abstracts another level (on top of the CLR) and it is in fact a new .Net (or new C#) since it abstracts the plumping required for "old" C#/.Net.
Interesting point on how WCF always translates all errors into a standard FaultException. This is a good error handling pattern, since it decouples the client from the service implementation. A usual design flaw is to transfer specific exceptions which forces the client to know about (and interpret) specific service exceptions.
Benefits of having WCF on both sides during debugging/error tracing/logging. A provided MS log-viewer client can merge the client logfile and the service logfile to give an integrated view of the whole end-to-end call stack.
The same with reliability. Can be configured in WCF. I have to ask a question on whether this features is WS* compliant (i.e. inter operable) or .Net proprietary.
WCF offers versioning tolerance for DataContracts. The client can ignore members (i.e. possible to add members to a data contract without changing the client). Seems like this also applies if you have a non WCF service (client feature)
A repeating message from Joval is that WCF is not C#. It behaves very differently than native C#, since it adds a lot of behavior, features and abstractions that is not possible/available in C#. But everything looks like standard C# classes, since WCF handles all the plumbing behind the scenes. (controllable through default or specific configuration)
Tool tips:
"Reliability and Performance Monitor" - perfmon.exe
"
I will try to update this blog with my impressions and perceived highlights from this conference.
The conference kicks off with pre-conference sessions, and I am attending the topic "Working with WCF -Demonstration and perspectives", by Joval Löwy and Ron Jacobs.
Joval told a funny story about branding names for .Net, esp. the VB.NET and ASP.NET brand names. Microsoft has described several different technologies as "foundation for developing web services" - this is also the case with Microsoft promotion of WCF.. but it is not! WCF is much more a generic platform change with a new programming model..
WCF does for .Net that .Net did for Windows. It is a new runtime that abstracts another level (on top of the CLR) and it is in fact a new .Net (or new C#) since it abstracts the plumping required for "old" C#/.Net.
Interesting point on how WCF always translates all errors into a standard FaultException. This is a good error handling pattern, since it decouples the client from the service implementation. A usual design flaw is to transfer specific exceptions which forces the client to know about (and interpret) specific service exceptions.
Benefits of having WCF on both sides during debugging/error tracing/logging. A provided MS log-viewer client can merge the client logfile and the service logfile to give an integrated view of the whole end-to-end call stack.
The same with reliability. Can be configured in WCF. I have to ask a question on whether this features is WS* compliant (i.e. inter operable) or .Net proprietary.
WCF offers versioning tolerance for DataContracts. The client can ignore members (i.e. possible to add members to a data contract without changing the client). Seems like this also applies if you have a non WCF service (client feature)
A repeating message from Joval is that WCF is not C#. It behaves very differently than native C#, since it adds a lot of behavior, features and abstractions that is not possible/available in C#. But everything looks like standard C# classes, since WCF handles all the plumbing behind the scenes. (controllable through default or specific configuration)
Tool tips:
"Reliability and Performance Monitor" - perfmon.exe
"
Subscribe to:
Posts (Atom)