• Somasegar's WebLog

    Script Junkie

    • 5 Comments

    Earlier this year in February, I blogged about key software development trends. 

    The second trend, The Web as a Platform, continues to grow at an astounding rate.  Browser-based applications such as MugTug show the increasing flexibility and power of web technologies.  New and experienced developers alike are anxious to learn everything they can about how to take advantage of the web to deliver experiences to their audience.

    But learning HTML, JavaScript, CSS, and other web standards technologies can be daunting.  The languages, libraries, and interfaces can be complex, and successful development and debugging techniques can be difficult to find among the scrapyard of unsuccessful methods.

    Enabling you to better navigate standards based web technologies is the goal behind Script Junkie, MSDN's newest developer hub. 

    MSDN's goal has always been to help the developer get their job done more efficiently, and Script Junkie brings that assistance to web-based coding.  Script Junkie is the start of a new generation of centers on MSDN focused on offering the best of Microsoft and non-Microsoft resources to address real life and practical end-to-end developer scenarios.

    Script Junkie offers a concise resource for the latest in web site development techniques by providing solutions-based articles, videos and code samples written by JavaScript community luminaries such as Christian Heilmann, Elijah Manor, Emily Lewis, Juriy Zaytsev, and Rey Bango.  And of course, new articles are posted on a regular basis.  Many articles contain code suitable for using in your own projects, such as Mani Sheriar's article on Scrolling Content with jQuery and HTML and Robert Nyman's article on Using Web Storage on the Client-Side.

    Come check out Script Junkie, participate on the forum, and learn from the articles and tips.  Are you an expert HTML developer or designer?  If so, consider contributing articles, screencasts, or code samples for Script Junkie to share back with the community of HTML and JavaScript developers.

    Namaste!

  • Somasegar's WebLog

    Visual Studio Lab Management

    • 0 Comments

    Managing the needs of a quality assurance lab can be quite challenging. 

    A dizzying number of machines need to be set up, torn down, or restored to a particular snapshot so the software team can work at maximum efficiency.  Daily builds need to be available on schedule.  Multiple virtual machine environments need to be managed.  Managing a lab efficiently can be a significant task.

    Today we are announcing the availability of Visual Studio Lab Management for Visual Studio Test Professional 2010 with MSDN and Visual Studio 2010 Ultimate with MSDN customers. 

    Lab Management enables automation and optimization of the build-deploy-test process, while maintaining visibility into the process, using Hyper-V virtualization technologies.  Lab Management stores, manages, and lets you deploy to known configurations and test environments using System Center Virtual Machine Manager.  Test Manager 2010 allows team members to create, start, stop, and view environments so testers and developers can collaborate without interrupting lab operations.

    Getting an environment configured correctly just to reproduce a bug can take significant time and effort.  Lab Management allows testers to provide a link to a virtual machine snapshot directly in a bug report so developers can see exactly what testers see.  Developers can spend more time debugging and less time installing, configuring, and deploying.

    To find out more about Lab Management, visit the Lab Management site

    You can download a preconfigured VHD with all the lab management components here.

    Namaste!

  • Somasegar's WebLog

    Introducing Visual Studio LightSwitch

    • 23 Comments

    I am pleased to announce a new product in the Visual Studio family - Visual Studio LightSwitch. 

    LightSwitch is the simplest way to build business applications for the cloud and the desktop.

    Today, businesses move at the speed of light even as people balance the responsibility of more than one role within their organizations. As this shift becomes more pronounced, it's become clear that a broader set of developers is building business applications and really expects a much simpler way to quickly accomplish their goals... and with this observation, a light went on and LightSwitch was born.

    LightSwitch provides a variety of pre-built templates and tools to build business applications that target Windows Client or Windows Azure using as much or as little code as you want to write. With LightSwitch, there is now a tool that better enables business domain experts to easily build professional-quality line-of-business applications without focusing on writing code. This is critical because these business applications - which may be built out of a short-term need - often need to be extended and IT supported.

    You can quickly build line-of-business applications beginning with only one decision - Visual Basic or C#.

    You can build forms from existing templates and populate them with data from data sources including SQL Server, SQL Azure, SharePoint, and others. There is integrated support for working with Microsoft Office for tasks such as exporting data to Excel without having to write code. Within minutes you can have a basic business application created and ready to deploy, leveraging disparate data sources and Office tools.  While developing your application, you can modify the application as it runs.

    LightSwitch creates Silverlight applications that can run in the browser, out-of-the-browser, or in the cloud.  When your application grows, you can use Visual Studio 2010 Professional, Premium or Ultimate to extend and customize it further.

    In the coming months, we'll provide more details about LightSwitch.

    We will be making the first beta of LightSwitch available broadly on August 23rd.  To learn more about LightSwitch, visit the LightSwitch page or read Jason Zander's post on LightSwitch.

    Namaste!

     

  • Somasegar's WebLog

    MSDN: Double the Azure

    • 5 Comments

    Today we are announcing that we are doubling the initial Windows Azure benefits to MSDN subscribers by extending the offer from eight months to 16 months. 

    Windows Azure is a is a flexible cloud-computing platform that provides developers with on-demand compute and storage to host, scale, and manage web applications on the internet through Microsoft datacenters. 

    This January we introduced Windows Azure benefits as part of the MSDN Premium, Ultimate and BizSpark subscriptions with an eight month introductory offer.  This offer allows MSDN subscribers to take advantage of the benefits of the Windows Azure platform, including the ability to quickly scale up or down based on your business need without the hassle of dealing with operational hurdles such as server procurement, configuration, and maintenance.  With Azure, you pay only for what you use.

    I encourage MSDN subscribers and BizSpark members to sign up for their Azure benefits if you have not done so already. 

    More details on this can be found on the Windows Azure Platform Benefits for MSDN Subscribers page.

    Namaste!

  • Somasegar's WebLog

    Visual Studio Scrum 1.0

    • 18 Comments

    Yesterday we announced the release of Microsoft Visual Studio Scrum 1.0, a new process template for Team Foundation Server 2010.  The template can be downloaded from the Visual Studio Gallery or through the Visual Studio Extension Manager.  This new template is the first new process template introduced by Microsoft since the MSF Agile and MSF CMMI templates first shipped with Team Foundation Server 2005.

    So, why a new template?  Scrum has become one of the dominant project management methodologies in recent years and is quickly becoming a default choice for new teams as well as teams looking to improve their existing processes.  While the MSF Agile template can be used effectively by Scrum teams, we found that there was strong demand for a prescriptive Scrum template - a template that follows the Scrum methodology from top to bottom that uses Scrum terminology throughout. 

    What is a Process Template?

    A process template is a collection of files that together define the various process elements of a team project on a Team Foundation Server.  Included in a process template are definitions for your teams work items, work item queries, builds, reports, and SharePoint portal.  Each of these artifacts help you manage the work for your software project, track and report on important trends, and ultimately drive toward releasing high quality software on time.  Microsoft Visual Studio Scrum 1.0 defines the following artifacts for new team projects created from it:

    Work Items

    • Sprint
    • Product Backlog Item
    • Bug
    • Task
    • Impediment
    • Test Case
    • Shared Steps

    Reports

    • Release Burndown
    • Sprint Burndown (pictured below)
    • Velocity
    • Build Success Over Time
    • Build Summary
    • Test Case Readiness
    • Test Plan Progress

     

    Who is the template for?

    This template was built specifically for Scrum teams.  We recognize that it won't meet every team's needs, but we didn't want to fall into the trap of "one size fits all" and miss the mark.  The team worked closely with thought leaders in the Agile community to ensure that the template meets the needs of Scrum teams.  And the template is completely customizable.  If your team wants to start with a basic Scrum template and fine tune it to your needs, this template is a great choice.

    For more information on what's included in the template please visit Aaron Bjork's blog post where he outlines what's included as well as changes since the beta.

    Namaste!

     

  • Somasegar's WebLog

    Windows Server AppFabric: Better, Faster, Cheaper

    • 2 Comments

    Earlier this week in our Worldwide Partner Conference, we outlined our vision for the cloud and underscored Microsoft's commitment to providing a platform that enables our customers to embrace cloud computing fully. As part of this commitment, the opportunity for developers to build applications targeting the cloud has never been greater. Microsoft continues to provide common tools and frameworks, so developers can easily build applications in a consistent way, whether those applications will run in the cloud or on-premises.

    One of the promises of the cloud for developers is using an application model built around services that can be elastically spread across an underlying "fabric". Building applications from services that are easily accessible from anywhere means developers can build applications "better, faster and cheaper", that are also resilient when failures occur, perform well, and scale easily, even when spikes and valleys in usage are not predictable.

    Today you can get many of these benefits in your on-premises applications with Windows Server AppFabric.  Windows Server AppFabric, which was released in June, provides a set of capabilities focused on improving the performance and management of web and composite applications.  Windows Server AppFabric provides distributed caching technology and management and monitoring infrastructure using familiar .NET skills.

    What Is It?

    Windows Server AppFabric is application infrastructure for running and managing your services - infrastructure that you now don't have to write.  Windows Communication Foundation (WCF) provides a single programming model for creating services and communicating between them - it is the communications scaffolding around your service's application logic.  For long-running services and coordinated interactions across many services, AppFabric manages the lifetime and scaling of Windows Workflow Foundation (WF) workloads as well, since workflows in AppFabric are also services.  But that's just half the story.

    The other half of the story is all about data caching.  It's fundamental to application design that you shouldn't repeat a computation that always returns the same result; do it once, store it, and deliver the result repeatedly instead.  This is true whether the result is a webpage, a query from your database, or a service call to an external component.  The Windows Server AppFabric Cache stores .NET objects, scales seamlessly, and manages data location and redundancy by distributing the cache across a cluster of machines.  The developer can simply put data in the cache and retrieve it when needed - AppFabric handles all the underlying complexity for you.

    Fabric, Fabric, Fabric

    You may have heard about other "fabrics".  The Windows Azure fabric controller is a feature of Windows Azure that manages physical and virtual machine resources as a shared pool for services. Then there is Windows Azure AppFabric, which is a cloud service that provides connectivity and federated identity, allowing you to build hybrid applications that run both in the cloud and on-premises. Although Windows Server AppFabric and Windows Azure AppFabric share the same name, they currently deliver different capabilities.  However, Microsoft's plan is to over time offer a symmetric set of capabilities across the cloud and the on-premises environments so that developers will be able to take advantage of these capabilities wherever they want to run their applications.

    Installing Windows Server AppFabric

    When you install AppFabric, you can choose to install the hosting capabilities, the caching capabilities, or both.  Installation is pretty simple: a developer workstation with IIS and Visual Studio (which installs SQLExpress) is all you need to get started.

    You can install Windows Server AppFabric as a standalone download or from the Web Platform Installer (below).  After installation, you will be prompted to configure AppFabric's databases and security credentials.

    AppFabric does its job mostly in the background, invisible to the user.  The visible face of AppFabric is the management and monitoring tools for your services that have been integrated into IIS Manager.  These tools drive the UI management experience for service hosting.  AppFabric services are integrated into the system management services such as perfmon and logging which can then be further integrated into a broader systems management infrastructure.

    AppFabric Caching requires even less management; the "fabric" takes care of everything.  Adding new machines to the cache is handled in the AppFabric Configuration Wizard.  The cache takes a central configuration approach, so all the servers in the cache cluster know about each other.  You can choose to store this configuration in SQLServer or in a file share.   You add a new server by pointing at the configuration store and selecting to join a cluster:

    Workflow and WCF Code Services

    AppFabric manages both WCF services and Workflow Services (which are also WCF Services).  The difference lies in what's inside the service.  With WCF, it's your code.  With Workflow, you would typically have drawn your workflow using the Visual Studio Workflow Designer and a palette of re-usable workflow activities, including activities that allow you to make your workflow into a service and to call other services.

    A workflow activity can also be thought of as a component and you can create new activities from existing ones - a composite activity.  This is a very powerful model for composing applications out of components and very useful in the cloud journey as well as in applications today. 

    The Visual Studio WCF Workflow Service Application Template helps you get your workflow service up and running and see the results in AppFabric in just a few minutes.  To start, create a new project using the template and set the Web Property on the project to use the local IIS Server.  Build the project and run it.  The built-in WCF test client will launch, allowing you to send data to your workflow and see the result.  A similar template exists for WCF code based services, so you can immediately focus on your code based business logic and not have to write the WCF infrastructure or any of the related hosting and management capabilities that AppFabric now provides.

    The AppFabric Dashboard

    The AppFabric dashboard is the place in IIS Manager to see all the statistics about your code and workflow services.  The Workflow Instance History section shows the workflows that have activated and completed. The dashboard will also help you monitor and control workflow persistence.  For all services, calls are tracked and it is easy to create your own monitoring events and make these visible in the dashboard.

    AppFabric tracks the execution of workflows from one activity to another and surfaces this information in the dashboard.  This is useful in troubleshooting issues and understanding the flow of execution for a given workflow instance.  You can even expose your data from within your workflows to AppFabric and query this data to find workflow instances that it contains.

    Improving Your App's Performance with Caching

    The Cache is a place to store data so that your applications can access it quickly.  The cache can be distributed across as many machines as you want, but the developer doesn't have to worry about which machine this data is on.  The cache can even be replicated onto the calling client (called a local cache) for super-fast performance but at the cost of consistency.  The data can be any serializable .NET object.

    The point of the cache is to make your applications perform and scale better.  AppFabric supports both implicit and explicit cache use to achieve that improved scale and performance.  If you are an ASP.NET developer, implicit and explicit cache use will be familiar to you.  Explicit cache use is the ability to programmatically add, remove, and manage items in the cache through the cache APIs available in AppFabric.  This can be a very powerful tool in customizing your caching strategy to your application's data and usage patterns, but requires some understanding of data caching principles.  Implicit cache use takes advantage of default caching for common scenarios.  ASP.NET session state and HTML page caching (known as output caching) are two examples of implicit cache use.

    The AppFabric cache really shines when you need to scale across more resources.  If you need more performance, simply add a new server and let AppFabric re-balance things automatically.  You can see this sort of linear scale in the image below.  As each server is added you can see the impact against the load - throughput increases and latency decreases.

    Get Windows Server AppFabric

    Windows Server AppFabric is now a part of the value you get in Windows Server 2008 for building high performance, resilient and scalable applications.  If you are running a Windows Server 2008 (SP2) or Windows Server 2008 R2, you are already licensed to use Windows Server AppFabric in production.  Additionally, if you are running Windows 7 or Windows Vista (SP2) you are already licensed for using Windows Server AppFabric in development.  There are no additional license fees.

    You can download AppFabric and learn more from the AppFabric page.

    Namaste!

  • Somasegar's WebLog

    Dream Big...

    • 4 Comments

    Yesterday I had the opportunity to participate in the Finals of the Imagine Cup 2010 in Warsaw, Poland.

    Imagine Cup is a worldwide programming contest where students from around the globe get a chance to participate, show their creativity and passion, and use technology to solve real world problems.  The problems relate to the United Nations' Millennium Development Goals which make the solutions exciting and inspiring.

    We started doing Imagine Cup eight years ago.  Since then, it has grown considerably. We had 325,000 students from around the world participate this year.  Of that, 400 students from 69 countries reached the Finals and were in Warsaw this week for the same.

    I got a chance to talk to a number of the students who were participating in the Software Design category.  It is truly awesome to see the kinds of solutions that these students were working on ranging from using radio waves to send educational data to geographies with One Lap Per Child + Classmate PC initiative (Team OneBeep from New Zealand) to providing a way for hearing-impaired people to communicate with others via augmented reality environment (Team Skeek from Thailand, pictured below) to enabling patients with extreme disabilities to communicate by using speech synthesis, SMS or Windows Live Messenger (Team TFZR from Serbia) and a whole host of other equally inspiring solutions.

    I always say that today's students are tomorrow's leaders.  It was a humbling and uplifting experience to see the passion and determination that these students demonstrated to have a positive impact on the world.

    Next year, the Imagine Cup Finals will be held in New York, and I am eagerly looking forward to seeing more amazing work by students.

    Namaste!

  • Somasegar's WebLog

    Hilo: Windows 7 development walk-throughs

    • 4 Comments

    Windows 7 introduced a number of new end-user features that make using applications easier, and since then, developers have asked us for more prescriptive guidance on "How do I use those in my applications?"

    "Hilo" is an effort by the team to provide just that.

    "Hilo" provides a set of articles and samples that will arrive over the coming weeks and describe the design and implementation of a set of touch-enabled Windows applications that allow you to browse, select, and work with photos and images.  Below is the Hilo Browser's image carousel and media pane:

    Here, you can see the image contents of a folder.

    The articles will cover key Windows 7 technologies, describe how they are used together to create a compelling user experience, and will detail the design and implementation of the applications themselves.

    The Hilo articles are applicable to both managed and native developers.  They provide written guidance that will help you design and develop compelling, touch-enabled Windows applications of your own. The sample code is in C++ and freely available and shows how to use the APIs in the context of a real application.

    Check out the first article on the "Hilo Browser" here.

    Namaste!

  • Somasegar's WebLog

    VS 2010 Productivity Improvements, Part IV

    • 6 Comments

    My previous posts on the productivity improvements in Visual Studio 2010 highlighted features of Visual Studio that you can use right out of the box.  Today, I'm going to focus on extensions to Visual Studio that enhance the coding experience for Visual Studio 2010 Professional, Premium, and Ultimate users.

    As I wrote about several months ago, one of the areas of vast improvement in VS 2010 is in extensibility.  New extensibility APIs enable third parties to customize and add functionality to the IDE, and the new Extension Manager and Visual Studio Gallery make it easy to publish and find extensions.  This week, the Visual Studio Gallery reached more than a thousand extensions created for Visual Studio 2010, and more than 750,000 extensions have now been downloaded by Visual Studio users!  Here are a few of my favorite extensions.

    Color Theme Editor

    Is the default color scheme of Visual Studio not quite your style?  The Visual Studio Color Theme Editor lets you customize the color palette for VS.  You can choose from the built-in themes that ship with the extension, download and install someone else's theme, modify an existing theme, or create your own from scratch, then export and share your theme.

    One of my favorites is this Blend-like theme, designed by Roland Auer.  To complete the look, I imported the Shades of Grey editor style.  You can find editor styles to match your every mood here.  Below is the result:

    Productivity Power Tools

    Visual Studio 2010 Productivity Power Tools are a set of tools from the Visual Studio team that offer a collection of nice features for the editor and the IDE.  There are more features in the pack than I can highlight in one section, but here are a few of my favorite:

    • Improvements to the document well

    The document well- that space above the editor that contains tabs for each document you have open- gets some welcome updates.  Tabs are now colored to indicate the project that contains the file.  Below, you can see that the open files come from three different projects.  About.aspx and Index.aspx come from the same project, and About.aspx's lighter hue tells you it's the active document.  You can also now close a document from the tab directly, much like Internet Explorer tabs. 

    Tabs can also be pinned in place.  This is useful to prevent files you work with commonly from scrolling out of view.  Speaking of scrolling, unpinned tabs can now be scrolled.  Below, I've pinned AssemblyInfo.cs in place, and you can see the left/right arrows for scrolling through the unpinned files.  I've scrolled to the right, hiding the BlueYonderAirlinesEntities.cs file.

    • Triple-click

    What's the fastest way to select your current line of code?  It's a small thing, but being able to triple-click on a line in the editor to highlight the current line of code is one of those things you quickly won't be able to live without.

    • Assignment variable alignment

    Change your code from this:

    to this:

    with a quick Ctrl+Alt+]!

    Assignment variable alignment may conflict with your code formatting settings.  For instance, in C#, you will need to disable Tools->Options->Text Editor->C#->Formatting->Spacing->"Ignore spaces in declaration statements".  VB users need to turn off pretty listing to use assignment variable alignment.

    • Fixing tabs

    Whether you're working within a team where multiple developers touch the same file, or your settings have been inconsistent, sometimes you get files with mixed tab/space formatting.  When you open a code file like this, you'll now get a notice asking if you'd like to fix the problem:

    • Add Reference dialog

    The Add Reference dialog gets significant performance improvements through caching.  It's also now searchable so you can find your referenced assemblies more quickly.

    Team Foundation Server Power Tools

    If you use TFS to host your source code or track work items, TFS Power Tools can make interacting with TFS a smoother, more customized experience.  Written by the TFS development team, the tools let you access TFS from the Windows shell, through a powerful command line tool, alerts, and a collaborative tool.  Here are a few of the best features:

    • Team Members

    Stay connected to your development team members with tools for instant messaging and email.  If you use Microsoft Communicator to communicate with your team, you can use the Team Members add-in to launch Communicator directly.

    • Best Practices Analyzer

    Use the Best Practices Analyzer to ensure your Team Foundation Server deployment is configured optimally and find problems that might be causing performance issues.  You can also take a snapshot of a deployment configuration for archival and see usage data that will help you optimize TFS.

    • Windows Shell Extensions

    Windows Shell Extensions let you perform many TFS source code tasks directly from Windows Explorer without opening VS or using the Team Foundation command-line tool.  These extensions make interacting with the server simpler when working within the common Windows file dialogs as well.

     

    Find Your Favorites

    There are many more imaginative, innovative, and practical extensions available on the Visual Studio Gallery, and many of them are available at no cost.  You can find the most popular extensions here. Give them a try and tell me your favorites.

    Namaste!

  • Somasegar's WebLog

    VS 2010 Productivity Improvements, Part III

    • 8 Comments

    In my previous posts on the productivity improvements in Visual Studio 2010, I've focused on features that all VS developers can take advantage of.  Sometimes, though, the most useful features are those that are specific to the development language you're using or platform you're developing for.  After all, C++ developers often need different features than C# developers, and web developers have different requirements from Windows developers.

    Today's post focuses on a few enhancements meant just for you Windows C++ and web developers.

    MFC Class Wizard

    If you are a Microsoft Foundation Classes (MFC) developer, you'll probably have fond memories of the MFC Class Wizard from days past.  Once again, you can invoke the MFC Class Wizard by typing Ctrl+Shift+x when you're in an MFC class, and you'll see options appropriate for the class you're working on.  The wizard shows your class name, location, project, inheritance, and other information about your class.  It also allows you to handle messages, add methods and member variables, or override virtual functions. 

    The MFC Class Wizard can also help you navigate your code by taking you to the files that contain your classes, header declarations, methods, and members.  Below, you can see some of the ways the wizard allows you to navigate your code.

    Web Code Snippets

    Even though you may build webpages commonly, sometimes the syntax for an HTML tag or ASP.NET control can elude your memory.  In Visual Studio 2010's webpage markup editor, the fastest way to add HTML, MVC, and ASP.NET controls and tags to markup is using the web code snippet feature.  Type Ctrl+K+X  and you'll get a small window offering a list of snippets from ASP.NET, MVC, and HTML. 

    You can arrow around and use letters to navigate the list quickly, and then tab to insert the tag or control into your page.  Below, I chose to insert an ASP.NET ListView control.

    JavaScript IntelliSense Improvements

    Because JavaScript is a dynamically-typed language, it has lagged behind statically-typed languages such as C# and VB in IntelliSense and tooling support.  We've made a number of improvements to JavaScript IntelliSense in Visual Studio 2010 to make coding in JavaScript a smoother experience.

    JavaScript now gets richer IntelliSense support for type-inferred variables.  Below, bike is declared with an object literal.  IntelliSense brings up its members when I refer to bike in the next line.  You can see make, model, and type all appear in the list below, as does year, although it's below our view.

    But what about dynamic prototyping?  If I dynamically prototype a variable, IntelliSense picks up the prototype members and adds them to the selection dropdown list for me.  In this snippet, I've added the createNewBike function to Object.  createNewBike takes in an object as a parameter and uses it as the returned object's prototype, adding all of its members to the object.  Below, the returned newbike shows all the members of bike in IntelliSense.

    Next Time...

    In my next post on Visual Studio 2010's productivity improvements, we'll focus on extensions to Visual Studio 2010 that help you customize the IDE to fit your needs.

    Namaste!

  • Somasegar's WebLog

    Modeling Websites and Native Code

    • 10 Comments

    I've blogged previously about the Architecture tools in Visual Studio 2010. These tools offer a fantastic way to understand an existing application, design some new functionality, and validate an implementation against architectural rules and constraints.

    Recently, we announced the availability of the Visualization and Modeling Feature Pack for MSDN subscribers, which complements the Architecture tools in Visual Studio 2010 by adding support for:

    • C/C++ code visualization
    • Website visualization
    • Improved UML diagram generation
    • Code generation from UML diagrams
    • XMI 2.1 import
    • Architectural validation extensibility

    Developers often face the challenge of trying to understand how changing one part of application will impact another. This kind of information is vital in controlling the inherent risk associated with modifying code.

    C/C++ and web development pose the same set of risks with some additional complexities unique to them.  C/C++ development requires understanding the dependencies between #include files. Web development adds an extra layer of complexity by introducing content elements like pages and controls.

    Today I'm going to go into more depth on the native code and website visualization features in the feature pack.

    C/C++ Code Visualization 

    If you have the sources to your C/C++ application, you can use the Generate Dependency Graph menu to visualize the static dependencies that exist between the various binaries.  Below I have the initial DGML diagram created for a photo viewer application:

    I can then drill down by expanding these nodes to identify specific calls that create those dependencies.  I can then expand the nodes to find a dependency between the CWebImageManager class constructor in the PhotoBrowser application and the WinHttpOpen function in WinHttp.dll.

    Another great way to visualize the static dependencies between various binaries is by simply dragging and dropping them from, say, the Windows Explorer window to an empty DGML diagram.

    The feature pack also supports visualizing dependencies that exist between #include files.  You can visualize the dependencies between all the source and header files in your solution by selecting 'By Include File' from the Generate Dependency Graph menu, or you can choose to visualize dependencies for a specific file by invoking the "Generate Graph of Include Files" function from the source editor.

    Below, you can see the direct dependencies for the PhotoViewerView.cpp file.  You can use Neighborhood Browse mode to drill down and discover all dependencies.

    You can also explore your C/C++ projects via the Architecture Explorer, similar to how you would for managed projects or take advantage of project level dependency validation via layer diagrams.

    Website Visualization

    If you are using Visual Studio Web Application Projects, Web Sites, or ASP.NET MVC projects, this feature pack introduces rich structural and dependency visualization for your application and can drastically improve your ability to answer the question "What parts of my application are affected when I modify this code?"

    To visualize your website structure and dependencies, use the Generate Dependency Graph menu:

    This generates a DGML document below:

    The resulting graph contains nodes for the various structural elements of your ASP.NET web application, namely

    • ASP.NET web pages (.aspx files)
    • Custom controls (.ascx files)
    • Master pages (.master files)
    • Website folders
    • Application files
    • Code behind types
    • Server controls

    If you double-click on any one of these nodes, you are taken directly to source code.  This can be a great way to catalog and explore your website.

    ASP.NET MVC support

    When you generate a dependency graph for an ASP.NET MVC web application, you also get the MVC specific data below:

    • Controller to View links (using default conventions)
    • View to Model links
    • Node groups representing Areas and View folders

    The Rest of your Application

    Once you've explored the structure and dependencies of your website, you can also visualize the dependencies on the rest of your application by using the Get Code Dependencies feature.

    Here the resulting graph is filtered to show a dependency chain all the way from the Checkout.aspx web page through the Order business logic class and the Payment Data access class.

    Try It

    If you are an MSDN subscriber, download the Visual Studio 2010 Visualization and Modeling Feature Pack and try it out.

    Namaste!

  • Somasegar's WebLog

    Peering into the cloud with IntelliTrace

    • 3 Comments

    In April, we introduced Visual Studio 2010 to the world. One of the breakthrough features we delivered in VS 2010 is IntelliTrace - a tool that enables you to do historical debugging and is a key part of addressing the 'no repro' scenarios that we always encounter.  Customer feedback on this tool has been very positive.

    Today, we are announcing the availability of the June 2010 release of Windows Azure Tools for Microsoft Visual Studio.  This brings the power of IntelliTrace to cloud services running in Windows Azure for Visual Studio 2010 Ultimate customers.

    Yesterday: Limited Visibility; Today: Clear Skies

    One of the challenges of developing for Windows Azure is being able to "see into the cloud", and new debugging tools let you do exactly that.  In particular, the integration of IntelliTrace with the Windows Azure Tools allows you to historically debug issues that occur in the cloud right from your desktop.

    Show Me How

    To show you how the IntelliTrace integration with the Windows Azure Tools works, let's create a new Windows Azure Cloud Service.  Click on File | New Project | Windows Azure Cloud Service.  Click to add an ASP.NET MVC Web Role, and click OK.

    This solution will work just fine in the cloud, so let's introduce an error that we can debug later using IntelliTrace.

    In MvcWebRole1, click to open the References node, right click on System.Web.Mvc and select "Properties".

    Change the "Copy Local" property to False, which will cause the application to be deployed without its System.Web.Mvc dependency, causing a load time error in the application.  This load time error is the error we will find and trace using IntelliTrace.

    Now we can deploy our project to the cloud.  Right click on the Cloud Service project and select "Publish":

    This will bring up the deploy dialog.  Follow the steps to setup your credentials and pick a Hosted Service to deploy to.  If you are using Visual Studio 2010 Ultimate and .NET 4, you can click the checkbox option to "enable IntelliTrace for .NET 4 roles". 

    This will deploy the cloud service to Windows Azure, packaging in the necessary IntelliTrace files along with an agent that Visual Studio will communicate with to retrieve the IntelliTrace data.  You can monitor the progress of the deployment from the Windows Azure Activity log and the status of the Hosted Service from the Windows Azure Compute node in the Server Explorer.

    Because we added a load time error into this cloud service by changing the Copy Local property of one of our referenced assemblies to False, the web role never gets to the running state.  Instead, our web role becomes unresponsive.  You can see the activity log showing the web role as unresponsive above, and below, the Server Explorer shows the web role instance as unresponsive as well.

    Now we can use IntelliTrace to debug the issue.  Right click on the instance that is unresponsive and select "View IntelliTrace logs".

    This will communicate with the debugging agent in the cloud and create an IntelliTrace log that Visual Studio will display to you.  Once the file is open, navigate to the Exception Data and you'll see the error "Could not load file or assembly System.Web.Mvc".  Now you can change the Copy Local property of the assembly to false in your project, rebuild, and redeploy your web role to ensure you've fixed the problem.  While this is a simple issue with a quick fix, without IntelliTrace, this error could be very difficult to diagnose because it won't reproduce in your local development environment where you may have added the required assembly to your path or global assembly cache.

    Additionally, you can historically debug your code browsing stack traces, local variables, exceptions and IntelliTrace events using Visual Studio 2010 Ultimate.

    Get the Tools

    As with previous versions, Windows Azure Tools are freely available for Visual Studio customers and integrate into Visual Studio directly.  Download the June 2010 release of the Windows Azure Tools and let us know what you think.  To learn more about today's Windows Azure Tools release, visit Cloudy In Seattle.

    Namaste!

  • Somasegar's WebLog

    My favorite Expression 4 features

    • 36 Comments

    Today at Internet Week in New York, we launched Expression Studio 4.

    Expression 4 is a suite of professional design tools for building immersive user experiences for the desktop, mobile devices and the web.  

    There are a lot of new enhancements and exciting features in this release.  Here are some of my favorite features of Expression 4.

    1. Publishing SketchFlow Prototypes to SharePoint

    Publishing your SketchFlow projects that are Silverlight-based to SharePoint provides an easy way to share your prototypes with your team. And the best thing is, once a prototype is published, reviewers can post their feedback right back to SharePoint, making it visible not just to the designers, but also to all other reviewers. Designers can also see feedback from many reviewers concurrently. Collaborative reviews of working, interactive prototypes just got a whole lot better.

    2. New Behaviors in Blend

    Expression Blend 4 includes new Behaviors designed to enhance your application design process. The new Behaviors enable you to do a lot more while keeping you focused on the art of creating compelling UI designs. Using the new Behaviors, you can for example take advantage of multi-touch, specify fluid transitions between layout changes, define conditional logic or interact more easily with the components of an MVVM application. There are also new Behaviors specifically for SketchFlow, including ones to preserve screen state and to exert greater control over the playback of SketchFlow Animations.

    3. Design a UI without writing Code

    Expression Blend 4 now lets you design many complex layouts without writing any code.

    An example: imagine you want to create a radial list box that arranges its content along a circle, like a carousel. In Blend 4, instead of writing complicated layout code, you can simply draw the desired "shape" of your layout with one or more paths and Blend will take care of arranging the content appropriately. Best of all, this is not just a design time feature, but it works with data-driven list boxes, and supports animation, letting you create incredibly complex, rich and creative layouts as easy as you can draw a path.  

    4. Write Add-ins for Expression Web with HTML & JavaScript

    As a web-savvy developer, you are probably comfortable with the languages of the web: JavaScript, HTML and CSS.  In Expression Web 4, we have provided a way to extend the app using only the languages you already know. You can now add your own menu items, toolbar buttons, panels and even dialog boxes using only HTML, CSS, JavaScript and a simple XML manifest file.  Do you have your own markup for creating online maps in pages?  How about a custom Twitter feed? Now you can easily extend Expression Web to make it simple to add this content to any site you are working with.

     

    5. Improve your search rankings with SEO Diagnostics

    Our new SEO analysis not only includes the usual checks for duplicate or missing titles, meta tags and headers, but it also checks the content of search sensitive text, like link text and page titles, to make sure they don’t have overly general values like “click here” or  “welcome”  which aren’t going to add any search value to your pages. 

    We also include deep help topics that let you understand why these rules are important for getting a good search ranking.  This documentation makes our reports more than a simple checklist; it helps you learn and master the art of SEO.

    6. Encoding and broadcasting live events

    With Expression Encoder 4 you can now broadcast live video to the IIS Smooth Streaming format to ensure uninterrupted playback on Silverlight over HTTP. Select either H.264 or VC-1 output, configure the number and size of the streams then publish directly to servers running IIS Media Services. The redesigned user interface allows you to easily select from multiple live sources and file-based content to create high-quality broadcast output in real time.

    We've also used this release as an opportunity to simplify the product line-up of Expression to more closely correspond to the Visual Studio 2010 product family.  These are the new Expression 4 products:

    • Expression Web 4 Professional
    • Expression Studio 4 Premium
    • Expression Studio 4 Ultimate

    Current owners of Expression Studio 3 or Expression Web 3 can upgrade at no additional cost to corresponding version 4 products: Expression Studio 4 Ultimate and Expression Studio 4 Web Professional. Please visit the Expression site to learn more.

    Namaste!

  • Somasegar's WebLog

    VS 2010 productivity improvements, Part II

    • 16 Comments

    You could say the code editor is the most important feature of any development experience.  After all, that's what lets you create, see, and change your code.  Without a code editor, no other features matter in an IDE.  Around the editor is built the rest of the development environment.

    Last week, we looked at three new features in Visual Studio 2010: multi-monitor support, multi-targeting, and code navigation.  This week I'd like to spend a little time talking about improvements to the code editor in Visual Studio 2010.

    Improved IntelliSense

    IntelliSense is, in some ways, the most easily-accessible documentation of types and members.  Before IntelliSense, development commonly meant you had your favorite class browser close by to help you find the type or member you were looking for.  With IntelliSense, typing a period or Ctrl-J brings up everything you want to know about types or members.

    In Visual Studio 2010, IntelliSense changes allow you to search based on any substring in the type or member, rather than strictly alphabetically.  As you can see below, when I type in "Aircr", I get suggestions of "Aircraft" and "AircraftStatus", along with "AddToAircraft" and other methods that contain, but don't start with "Aircr".

    IntelliSense now also supports finding members through their Pascal casing.  Below, I can type in "ATP" to find "AddToPassengers", "AddToPassengerStatus", and "AddToPeople".

    Block Select and Block Edit

    Sometimes you have to make the same change to many consecutive, similar lines of code at once.  Perhaps you're changing an access modifier or string literal in C#, VB, or C++ code, or perhaps you're changing property values in HTML or ASP.NET.  Block select lets you select columns of text and edit them as a group, rather than one line at a time.  You can select columns of text in a box by holding down the Alt key while selecting with the mouse.

     

    Once your block is selected, you can delete or insert text on all lines of the selection.  If you'd like to simply insert something (such as a folder in a path string or a keyword), you can create a block selection with zero width and start typing; your typing will be inserted on all lines of the block selection.  You can also use this feature to quickly add or delete a tab to a block of code as well.

    Zoom

    You may have used the zooming features in Word, your internet browser, or other applications to quickly find your way around a large amount of content or highlight an area easily for others.  Now, you can use the same gesture to zoom in the Visual Studio code editor.  Hold down the Ctrl key and scroll with your mouse wheel to adjust the zoom factor.  You'll see the zoom factor change in the lower left corner of the editor window at the same time.

     

    If you sometimes present to others, conduct code reviews on projectors, share applications using LiveMeeting or other programs, or build videos using screencasting programs like Camtasia, zoom can be an indispensible way to help your audience see your code clearly.  For visual people, zoom can be used to quickly find a piece of code or understand the contents of a large file.  And, while this feature isn't new to Visual Studio 2010, collapsing code blocks in the editor can help with code understanding as well:

    Next Time...

    In my next post on Visual Studio 2010's productivity improvements, we'll focus on features built specifically for certain languages and tasks.  Don't miss the next one if you write for the web or build C++ MFC apps.

    Namaste!

  • Somasegar's WebLog

    VS 2010 productivity improvements - Part I

    • 19 Comments

    Every developer deserves a fantastic development environment that allows them to write, understand, navigate, and debug code as efficiently as possible.  After all, developers spend most of their time in the IDE.

    As we designed and built Visual Studio 2010, we let this principle guide the product, and I think we've delivered an IDE that raises the development experience bar significantly.  Starting today and over the coming weeks, I will highlight my favorite productivity features in Visual Studio 2010.  Some of them are small features, and some of them required a large, coordinated effort across the team, but each one makes developers' lives a little easier.

    Multi-Monitor Support

    Many developers have invested time and money in their coding cockpit: just the right chair, a keyboard that fits your hands and habits, and, of course, two or three monitors so you can maximize your screen real estate.  Until 2010, Visual Studio's single window didn't let you spread your coding experience across more than one monitor, but now that's changed.  Tear-off tabs allow you to drag coding windows and tool windows out of Visual Studio's window frame and onto another area of your screen or another monitor.  You can pull as many windows out of the Visual Studio window frame as you like, and then put them back into the editor tab strip or dock them within Visual Studio again when you like.

     

    Multi-Targeting

    Even though you are taking advantage of the latest .NET runtime, your customers may not be, or you may have applications that are built against a previous version that aren't quite ready to be upgraded to .NET 4 yet.  Visual Studio 2010 allows you to build projects that target .NET 2.0, .NET 3.0, .NET 3.5, or .NET 4.  The New Project dialog lets you choose the version of the .NET Framework you'd like to target or find additional versions or profiles of the .NET Framework online:

     

    You can change the targeted version on an existing project in the project properties:

     

    Once you've set a particular targeted version of .NET for your project, you will get IntelliSense, toolbox controls, and properties in the property grid that are appropriate for the version you've chosen.  The debugger, profiler, and compilers have also been updated to support multi-targeting.  And .NET 4 and Visual Studio 2010 run side by side with previous versions so you can use the appropriate tools and frameworks for your project.

    Code Navigation

    What was the name of that method?  It's something like "state custom".

    When you're working with a large codebase, sometimes you remember something about a piece of code you're looking for, but not the specifics.  The new Navigate To tool lets you find code from whatever you can remember. 

    You can bring up the Navigate To tool using Ctrl + comma, then put whatever you remember into the Search terms box.  Visual Studio will do a fuzzy search and give you all matching members, functions, macros, etc., along with their location and scope. 

     

    Items from referenced libraries will appear in the results as well, but if you're interested only in items from your code, you can check the "Hide external items" checkbox to filter to just your code.

     

    More Coming Soon

    This is just a taste of a few of the productivity enhancements in Visual Studio 2010.  Look for Part II, which will focus on editor improvements, soon!

    Namaste!

  • Somasegar's WebLog

    Technical Computing

    • 2 Comments

    Modeling the World

    Today, Microsoft announced our Technical Computing initiative. 

     

    Through the Technical Computing initiative, we will enable scientists, engineers and analysts to more easily model the world at much greater fidelity.  The Technical Computing initiative will address a wide range of users.  One of the most critical elements is to help developers create applications that can take advantage of parallelism on their desktop, in a cluster, and in public and private clouds. 

     

    The Technical Computing initiative builds on investments and inroads we’re already making in areas like simplifying parallel programming. For example, Visual Studio 2010 contains the Parallel Patterns Library, user level tasks, a parallel debugger and profiler, and other tools.  These features enable the developer to extract maximum performance from multicore and many-core systems.  You can learn more about some of our parallel developer features in my recent blog post. 

     

    For those building multi-core and many-core applications for Windows HPC Server, the highly-tuned Message Passing Interface (MPI) implementation allows developers to create applications that span multiple systems, and Visual Studio supports debugging MPI applications as well. 

     

    As with everything we do, partners are an essential part of our solution, and the challenge of parallelism is no different.  The leading tools in the industry are part of the Visual Studio ecosystem.  For example, NVIDIA’s Parallel Nsight allows the developer to debug and analyze codes running on GPUs and Intel’s Parallel Studio lets developers extract full performance from multicore systems.

     

    To better understand our vision and get more details, you can read the announcement.

     

    We’re also bringing together some of the brightest minds in the technical computing community across industry, academia, and science at www.ModelingTheWorld.com to discuss trends, challenges and shared opportunities.  If you are interested in this space, I invite you to tune in and join the conversation.

     

    Namaste!

  • Somasegar's WebLog

    Visual Studio goes international

    • 15 Comments

    While code, the language of software, is universal, developers and end users speak in different tongues across the globe.  For software to meet the needs of all customers, it must interact in their languages, currencies, times and dates, and accommodate layouts that feel natural to the user. 

     

    In Developer Division, we put a great deal of thought and effort into building products for developers around the world.  For some languages, we do a complete translation of our products.  We also work closely with the community to offer a much broader range of languages than we could do ourselves.  Today I’d like to tell you a little about how our localization process works and what languages will be offered in Visual Studio 2010 and .NET Framework 4.

     

    I’m happy to say that Visual Studio 2010 will be available in more languages than ever before and these languages will be available to our customers around the world faster than ever before.

     

    Microsoft-Localized Languages

    Just over 2 weeks ago, I announced the availability of the English version of Visual Studio 2010 and .NET Framework 4.  Today we are announcing the availability of the first of our localized versions of Visual Studio 2010 and .NET Framework 4.  You can access them from the following links:

    ·         French

    ·         German

    ·         Japanese

     

    With over a million words in the user interface and about 20 million words of documentation, producing localized versions of Visual Studio and the .NET Framework represents a massive engineering, testing,  and translation effort.  This is just the first wave of localized releases; several more are following soon.  The following languages will be available later in May:

    ·         Spanish

    ·         Italian

    ·         Russian

     

    Arriving in June are:

    ·         Traditional Chinese

    ·         Simplified Chinese

    ·         Korean

     

    Community-Localized Languages

    Through a close partnership with community and various universities around the world, we will also release free language packs for the following languages this summer:

    ·         Czech

    ·         Polish

    ·         Turkish

    ·         Brazilian Portuguese

     

    These language packs switch your English Visual Studio Professional user interface into any of these languages and will have a majority of the user interface localized.  Brazilian Portuguese, Czech and Turkish users will also be able to access the online translated Visual Studio 2010 and .NET Framework 4.0 documentation in the MSDN Library from within Visual Studio and download it to their machine.  The documentation is a combination of machine translation and human translation, presented side-by-side with the English content (in Classic view).  The localized documentation is also editable, which allows everyone to make translation improvements.  Localized content in this translation wiki environment will also be available in Arabic for the very first time.

     

    This summer, we will also release a Captions Language Interface Pack (CLIP) for Visual Studio 2010 in 10 additional languages.  CLIP is a free tool that displays translations in a tooltip and discrete dialog, as the user moves the cursor on top of the various user interface elements.  Our CLIP languages will be:

    ·         Arabic

    ·         Greek

    ·         Hebrew

    ·         Hindi

    ·         Hungarian

    ·         Malay

    ·         Malayalam

    ·         Oriya

    ·         Tamil

    ·         Thai

     

    While I didn’t play any favoritism in terms of what languages we support, I am indeed thrilled to see my mother tongue, Tamil, on this list J.

     

    All these community localization efforts have been made possible thanks to a close collaboration with various universities around the world, Most Valuable Professionals (MVPs), Microsoft Student Partners (MSPs) and other community members.

     

    Thank you to all those who have made this possible. 

     

    For more information about language packs, translation wiki, and CLIP, check out Scott Hanselman’s blog on the subject.

     

    Life Runs On Code 

     

    Namaste!

  • Somasegar's WebLog

    Announcing availability of Visual Studio 2010 and .NET Framework 4

    • 93 Comments

    Visual Studio 2010 

     

     

    I am very excited to announce the availability of Visual Studio 2010 and .NET Framework 4 on April 12th

     

    This represents the biggest tools release from Microsoft in many years.

     

    To celebrate this with our customers and partners, we are holding 5 major launch events on April 12th in Beijing, China; Kuala Lumpur, Malaysia; Bangalore, India; London, UK; Las Vegas, USA; and in over 150 local events around the world.

     

    The new release of Visual Studio 2010 has plenty of compelling new features and updates that will make every developer more productive.

     

    ·         Visual Studio 2010 allows users target of the right platform for their application, including Windows 7, Windows Server 2008 R2, SQL Server 2008, SharePoint. Office, Windows Azure, and Windows Phone 7 applications using their existing skills.

     

    ·         Visual Studio 2010 is a rich, personalized development environment.  We know that software developers spend much of their time in the IDE, and features like the new editor and multi-monitor support make your time in Visual Studio more productive and enjoyable.

     

    ·         Teams are able to work more efficiently using Application Lifecycle Management tools.  We’ve done a great deal of work in Visual Studio 2010 to improve testing and debugging tools.  Features like IntelliTrace and easy project management help your team ensure high quality.

     

    I always say that our partners play a key role in the success of our platforms and tools.  With Visual Studio, it is no different.  Between the tools that we deliver in Visual Studio and what our partners build on top of Visual Studio, we have a very comprehensive tools offering for our customers.  I do want to take this opportunity to thank the approximately 50 partners who announced availability of products and solutions built on this latest wave of technologies. I am also very appreciative and thankful of the customers, MVPs, and others who provided us valuable feedback and made Visual Studio 2010 and .NET Framework 4 such an amazing release.

     

    I am also thrilled to say that Silverlight 4 will be released to the Web later this week. When Silverlight 4 is released, you will be able to download an update for Visual Studio 2010 to support Silverlight 4 development.

     

    I hope you will join us at one of our events, or watch the keynote live.

     

    I look forward to your participation as we strive to reach a million developers on April 12 through our world-wide launch events. To purchase Visual Studio 2010 now, visit here.  If you are an MSDN subscriber, later in the day on April 12th you can download Visual Studio 2010 from MSDN.

     

    Namaste!

  • Somasegar's WebLog

    "Dogfooding" VS 2010 and .NET 4

    • 29 Comments

    As we get ready for the launch of Visual Studio 2010 and .NET Framework 4, I find myself looking back at the project to think about some of the critical factors that lead to our success. 

     

    One of the things that stands out clearly for me is our practice of dogfooding the various pieces of Visual Studio throughout the product cycle.  Here at Microsoft, we use the term “dogfooding” to refer to the internal use of a pre-release product in our daily work - after all, until our product is good enough for us to use every day, it’s not good enough for the rest of the world either!

     

    Microsoft teams have a long tradition of dogfooding their products long before releasing them to external customers for their own adoption and Developer Division is no exception to that.  In fact, because we are in the same business as many of our customers (namely writing software products) I would say that dogfooding is an especially important practice for us to embrace.  I’m happy to tell you that with Visual Studio 2010 we have redoubled our efforts in this area. 

     

    One of the first things we did during the VS2010 project cycle was to convert the entire division over to using Team Foundation Server for bug tracking and source control.  We had used TFS to track features across the entire project during previous product cycles.  We had also used TFS for source and bugs for the Team System teams.  So, switching over the entire division was a big step for us in terms of using our latest tools on such a large project.  Here are some statistics from our instance of TFS towards the end of the project:

     

    ·         3,668 active users in a 14 day period

    ·         896 builds per month

    ·         828,978 work items, including bugs, tasks and other work that we track

    ·         25,170,852 source code files under version control

    ·         15.5 terabytes of data

     

    Brian Harry runs the TFS team and has reported extensively about our use of TFS during this product cycle.  I’d encourage you to follow his blog if you’re interested in learning more about what we’ve done and what we’ve learned as we use TFS internally. 

     

    The other big thrust of our dogfooding effort for the VS2010 and .NET 4 project was to ensure that we had broad adoption of the latest builds of Visual Studio itself.  Unlike with TFS where the service is centrally managed, the tools developers and testers use on their desktops are not.  As such, we built telemetry into dogfood builds of VS to help us understand how many folks were using the product daily and what builds were deployed throughout the team. As of today, we have over 12,000 people inside Microsoft running VS 2010 for their day-to-day development.  In addition, employees installed pre-release versions of .NET Framework 4 to their desktops more than 35,000 times, and Microsoft.com and MSDN deployed pre-release .NET Framework 4 on 112 servers.

     

    Early feedback from our internal adopters has provided us significant help in ensuring that our product works well in many different real world scenarios for different sized teams, projects and application types. 

     

    As you can see, dogfooding plays a very significant role in our product development phase and one that we in Developer Division embrace fully.

     

    Namaste!

     

  • Somasegar's WebLog

    Windows Workflow Foundation in .NET4

    • 24 Comments

    Windows Workflow Foundation (WF4) in .NET 4 is designed to make it easier for new developers to learn, addresses a wider range of customer scenarios, and is more efficient. 

    WF is a programming model for composing application logic and coordinating execution, allowing developers to abstract complicated code while leveraging a set of runtime services.  Activities are the building blocks that are composed together to build workflows.  The runtime provides the ability to save the state of the workflows, track information about the workflow, and manage the coordination of multiple workflows executing at the same time.

    Design your Workflow

    Visual Studio 2010 represents a significant update to the WF design experience.  Performance and extensibility have been dramatically improved, and the designer surface has an improved, WPF-based look and feel.

    The new designer has significant productivity enhancements for authors composing large workflows, including the ability to expand and collapse child activities, a breadcrumb trail along the top of the designer that allows users to drill in and out of deep workflows, and better visualization capabilities to discover and address validation errors.

    Designer features 

    The workflow designer in WF4 is a WPF control that you can use to host the designer within your custom applications with a few lines of code. This allows you to create a custom workflow-editing experience within your application and allows your users to visualize an executing workflow within your applications. 

    Introducing Flowchart: The New Control Flow Style

    WF4 introduces a flowchart style of control flow, which allows you to create flexible workflows that require the ability to loop back to previous steps, as well as skip steps based on conditions within the workflow.  This is coupled with new tooling that allows for flowcharts to be constructed visually. The new flowchart control flow in WF4 allows for business logic to be composed in a way that feels more natural to the workflow author and in a way that is more visually compact.  Below, the flowchart style is used to build a hiring process workflow.

     

    Hiring process workflow 

    A Simplified Activity Model

    At the heart of WF is the authoring of custom activities for use in higher-order workflows, and WF4 makes creating custom activities easier than ever. WF4 dramatically reduces the amount of code that developers need to write to implement custom application logic for a variety of scenarios. As the activity model has been simplified, the performance of the runtime has dramatically increased.

    The way activities are authored has also been updated to provide options that are optimized for specific scenarios, supplying a variety of activity base classes that enable the developer to make the authoring experience only as powerful or complex as required.  The activity model also supports asynchronous execution, allowing a workflow to compose and coordinate multiple concurrent branches of asynchronous logic.  In addition, the model now includes an ActivityAction feature, which enables you to write an activity that can be customized by offering the consumer of your activity the ability to plug in type-safe callbacks for custom logic.  This would, for example, allow you to create a ProcessOrder activity that allows the consumer to provide their implementation of HandlePayment.  

    Building a Workflow

    To demonstrate WF, let’s construct a workflow to retrieve the syndication feeds from a number of blogs.  Here we will build a workflow that will use a GetWebPage custom activity to retrieve a number of feeds in parallel.  Additionally, we use the CompletionCondition of the ParallelForEach in order to stop retrieving feeds once half of the requests have completed.  This lets my workflow move forward once the first half of requests are successfully processed (and gracefully handle cancelling the other outstanding requests).

    Blog workflow 

    Now that we’ve built the workflow, we can incorporate it into an ASP.NET MVC application.  Here we’ll use the WorkflowInvoker to execute the workflow from a controller. 

    public ActionResult GetBlogs()

    {

        var results = WorkflowInvoker.Invoke(

            new GetSomeBlogs(),

            new Dictionary<string, object>

            {

                {

                    "Urls", new List<string>

                    {

                        "http://blogs.msdn.com/somasegar/atom.xml",

                        "http://blogs.msdn.com/brada/atom.xml",

                        "http://blogs.msdn.com/endpoint/atom.xml",

                        "http://blogs.msdn.com/mwinkle/atom.xml"

                     }

                 }

            });

        var feeds = results["Feeds"] as List<SyndicationFeed>;

        ViewData["Message"] = "You received " +

                              feeds.Count.ToString() +

                              " feeds with a total of " +

                              feeds.Sum(feed => feed.Items.Count()) +

                              " posts.";

        return View("Index");

    }

    Workflows and WCF Services

    As we talked with customers, we found that many were interested in using WF with services to compose and coordinate messaging in their application.  In .NET 4, we set out to make it easy to use workflows with services to compose and coordinate messaging by integrating WF with Windows Communication Foundation (WCF).  

    WF comes with messaging activities that allow you to expose service operations as part of the workflow, and can be used to enable fine-grained control over the way inbound messages are correlated to workflow instances.  Additionally, you can use WorkflowServiceHost to host your services within IIS7 and Windows Server AppFabric, eliminating the need to write custom hosting logic. If you are writing a workflow that uses web services to communicate, WorkflowServiceHost frees you from writing an application around your workflow service.  WorkflowServiceHost and the workflow runtime will ensure workflows are automatically persisted and restarted when needed, with the correct state information loaded.  The runtime addresses the complexities of managing the resources and state of the workflow, including managing the flow of transactions into and out of the workflow.   

    Find Out More

    Visit the WF MSDN Dev Center and the Endpoint team blog to learn more, or connect with the Workflow team on the MSDN forums.  To get started with Workflow Foundation, check out following whitepapers: The Workflow Way: Understanding Windows Workflow Foundation and A Developer’s Introduction to WF4.

    Namaste!

  • Somasegar's WebLog

    Introducing Windows Phone 7 Development Tools

    • 30 Comments

    Today at MIX10, we are introducing the Windows Phone 7 Series development story.  At the heart of Windows Phone 7 Series development is Silverlight.  This enables you to bring your existing development skills in building Windows Phone 7 applications.

    Windows Phone Developer Tools CTP, Microsoft’s developer toolset for Windows Phone 7 Series, is now available for download.

    The Windows Phone Developer Tools CTP contains what you need to get started with Windows Phone 7 development.  Specifically, it includes the following:

    -       CTP of Visual Studio 2010 Express for Windows Phone – This allows you to develop and debug your phone application in a familiar development environment.  If you are already using the release candidate of Visual Studio 2010, the Windows Phone 7 Series Add-in for Visual Studio lets you create applications alongside your web, cloud and desktop applications. 

     

    -       Windows Phone 7 Series Emulator – This is integrated with Visual Studio so you can see your app in action and debug it as you would with any other VS project.

     

    -       Silverlight - Microsoft has extended our platform technologies from the web, desktop and console to the phone giving developers a broader application development experience.  With your existing development skills you can start developing applications for the phone today.  Or if you have a great app already, Silverlight lets you write once and optimize everywhere, including the phone.

     

    -       XNA Game Studio – This enables you to build games spanning the phone, desktop and Xbox 360.

    Expression Blend for Windows Phone, a professional design tool for building immersive mobile experiences in Silverlight, is not a part of the Windows Phone Developer Tools CTP, but you can download it today as well.

    Getting Started

    Developing phone applications for Windows Phone 7 Series is similar to developing Silverlight or XNA applications in Visual Studio.  The Start Page in Visual Studio 2010 Express for Windows Phone offers learning resources to help you get started.

    Start Page 

    Your application can be in Silverlight or XNA.  You might be wondering when to use each technology.  Silverlight allows you to develop rich internet and out of browser applications and contains device-specific functionality giving you the ability to create a broad range of applications.  For game developers, XNA provides a great solution for building games that span from phone to desktop to Xbox 360.  When developing your application Visual Studio provides project and item templates to get you started with either Silverlight or XNA projects.

    New project

    Developing the App

    Visual Studio 2010 Express for Windows Phone extends the VS design, coding, and debugging capabilities with phone-specific extensions and features. The designer surface is skinned with the phone’s visual theme so you can see how your application will look on the device.  As controls are added to the app, they automatically adopt the Windows Phone Design System look and feel.  Of course, you can change the style if you prefer a different theme for your application.

    Mobile Designer

    When you’re ready to run your application, you can use F5 to run it like any other application developed in VS.  You can debug your application using the Windows Phone 7 Series emulator.  The emulator supports adjusting the orientation and has phone buttons available on the device. Windows Phone 7 Series phones won’t be available until later this year, but the emulator helps you get a head start on developing your apps now.

    Emulator

    Download the Tools

    Starting today you can download the Windows Phone Developer Tools from the Windows Phone or Microsoft Express sites.  To learn more about Windows Phone 7 Series development, please visit the Charlie Kindel on Windows Phone Development blog.

    Namaste!

  • Somasegar's WebLog

    Beta of VS Team Explorer with Cross Platform Support

    • 12 Comments

    Last November, I posted about our acquisition of the assets of Teamprise, a partner who provides access to Team Foundation Server from Eclipse and non-Windows platforms. 

     

    The Teamprise products have been very popular with TFS customers who were developing applications across Microsoft and non-Microsoft platforms.  Often customers want to standardize on a single enterprise-wide solution for Application Lifecycle Management because of the cost savings and increased transparency this provides. The Teamprise technology is key in enabling cross platform TFS access.

     

    Since welcoming the Teamprise technology and the development team into Microsoft, we’ve been hard at work introducing the essential features of TFS 2010 and working towards a high quality release. 

     

    Today we are announcing a broadly available beta of Microsoft Visual Studio Team Explorer 2010.  This release includes the Team Foundation Server Plugin for Eclipse as well as the Team Foundation Server Cross Platform Command Line Client.  It works on Windows, Mac, Linux, and multiple flavors of UNIX, providing access to the same source control, work item tracking, build automation, and reporting features that Visual Studio customers have benefitted from.

     

    Below, you can see a TFS user story work item in Eclipse.  The story’s implementation is described by a set of child tasks that are linked to that story.  It also shows the Pending Changes view with two source files checked out, the Team Explorer view with a set of work item queries organized into folders and the Eclipse import wizard connecting to TFS to import Java source into the Package Explorer. 

     

    Team Explorer

    You can download the beta of Microsoft Visual Studio Team Explorer 2010 here, and as always you can provide feedback through the Microsoft Connect site.

    Namaste!

  • Somasegar's WebLog

    New Offers for Visual Studio 2010

    • 137 Comments

    Last October, we announced a new packaging lineup and licensing options for Visual Studio 2010 to provide customers with simplified ways to purchase and license Visual Studio.  The new lineup includes three main versions of Visual Studio with appropriate MSDN subscriptions to go with Ultimate, Premium and Professional.

     

    Many of you have asked what this meant for Standard Edition customers looking to upgrade. 

     

    Today, I’m announcing our Standard Offer promotion to ensure current Standard Edition customers can easily and affordably move up to Visual Studio 2010.  The Standard Offer enables customers who purchased Visual Studio 2005 or 2008 Standard Edition to upgrade to Visual Studio 2010 at the previous Visual Studio 2008 Standard Edition $299 retail price. Standard customers can take advantage of this offer April 12-October 12, 2010.

     

    Visual Studio 2010 provides significant new benefits, such as the ability to optimize your development environment with multi-monitor support, and the ability to target multiple versions of the .NET Framework with one tool. For Standard customers this functionality represents a substantial step up in tooling.

     

    Today, we’re also unveiling an offer for customers who purchase Visual Studio Professional at retail. To help these developers fully realize the power and benefits of a MSDN subscription, I am announcing MSDN Essentials, a one-year trial MSDN subscription that will be included with every retail copy of Visual Studio Professional sold.

     

    MSDN Essentials subscribers will have access to three of the latest Microsoft platforms: Windows 7 Ultimate, Windows Server 2008 R2 Enterprise, and SQL Server 2008 Datacenter R2 for development and test use, as well as 20 hours of Windows Azure.  Subscribers will also have access to MSDN’s Online Concierge, Priority Support in MSDN Forums, and will be included in special offers from partners.

     

    For the first time ever, we are giving developers the opportunity to pre-order Visual Studio 2010. The Microsoft Store and select online resellers will pre-sell Visual Studio 2010 Professional with MSDN Essentials from March 9th until the product launch.

     

    Namaste!

  • Somasegar's WebLog

    Key Software Development Trends

    • 46 Comments

    More than ever before, today’s developers are open to considering and using multiple technologies to enable them to build solutions smoothly and deliver them to their customers quickly.  There are an increasing number of choices available for developers in terms of programming styles.  Our goal is to provide fantastic support for all programming styles within our tools to enable our customers to build great software.

    Several trends are emerging within the area of software development.  Below are some of the most important trends I’ve been thinking about recently.  This list isn’t comprehensive of all software trends, but each one represents an area that Microsoft is currently or will be investing in to bring to our customers.

    Cloud Computing

    Cloud computing allows companies to leverage just the computing resources they need today, scale up to handle peak loads, and avoid the overhead of managing hardware.  Cloud computing levels the playing field for small companies to compete against large, established companies at a reasonable and predictable cost.  Windows Server, Windows Azure, SQL Azure, and services such as Windows Live, Office, and Xbox Live are now live in the cloud.   Microsoft has committed to bringing the best cloud computing platform and services to the Windows ecosystem.   The cloud is just one example of a virtualized computing platform, and the next generation of developer tools must enable developers to build software that deploys and performs well in cloud and other virtual environments. 

    The Web as a Platform

    The browser provides a rich runtime environment and friction-free access to applications.  Developers are increasingly choosing the web as their platform of choice for software and software development.    Increasingly, developers and designers are using tools that offer a rich development, debugging, and profiling experience designed for the web.  JavaScript libraries allow web developers to get more done with JavaScript than ever before while reaching a wide audience, and immersive internet applications, such as those written for Silverlight, allow developers to break free of the limitations of HTML and take advantage of a range of resources and features while guaranteeing compatibility across platforms.

    Parallel Computing

    Moore’s Law, the prediction that CPU performance would double every eighteen months, is now fulfilled by adding more processor cores rather than by increased performance of a single core, bringing the power of multi-core processing to low-end machines.  New trends in computing take advantage of inexpensive and widely-available desktop graphics processors for certain tasks.  At the high end of processing ability, supercomputing centers are leveraging clusters to perform complex computational tasks.  Today, a small handful of programmers have the skills to write code that performs well in multi-core and many-core environments.  In the future, parallel libraries, debugging, profiling, and diagnostic tools will enable more developers to take advantage of parallel computing resources.

    Proliferation of Devices

    With the increasing availability of inexpensive devices that connect to the internet, we all want to access and interact with our data in ways that are appropriate to our devices’ capabilities.  We expect to access our online identities and data easily and securely on all our devices.  Today, Microsoft provides access to users’ data via Windows Live and Xbox LIVE.  With the proliferation of devices has come a proliferation of user interface paradigms that enable natural and intuitive interaction with those devices.  As touch-based, speech-based, and camera-based solutions become available and cost-effective, Microsoft is evolving software to take advantage of these capabilities to build intuitive user interfaces.  Windows 7 provides great support for touch-enabled applications in the platform.  Silverlight and WPF have embraced camera-based interactions and multi-touch, as has MFC.  I expect user interface paradigms to continue to evolve and become more intuitive and powerful.

    Agile Development Process

    Agile development processes, including Scrum, test-driven development, and continuous integration are commonly used in the enterprise and smaller development shops, often in combination with other development practices. Within Microsoft, many teams have integrated elements of Agile development practices to their process.  Visual Studio 2010 opens the door for Agile methodologies, offering support for some Agile processes such as unit testing and iteration planning.  We will continue to support more Agile methodologies going forward as well.

    Distributed Development

    Distributed development enables team members to work closely despite geographic separation from each other, bringing together worldwide talent to seamlessly work toward a common project or goal.  The experience of a team working across time zones and borders should be as good as the experience for a single developer, but also includes supporting cloud-based development activities such as distributed code reviews, remote paired programming, developer/tester collaboration and resource sharing.  Great distributed team development tools will enable developers to build the next generation of software, leveraging the worldwide talent pool.

    In Closing…

    These trends don’t represent a complete list of influential factors for all areas, but are some of the areas we feel can move software development forward.  I welcome your perspective: which of these trends do you feel will be most important in the future?  Are there trends you think should be included in this list?  Leave a comment with your perspective.

  • Somasegar's WebLog

    Visual Studio 2010 and .NET Framework 4 Release Candidate now available

    • 29 Comments

    Today, we are making available the Release Candidate (RC) for Visual Studio 2010 and .NET Framework 4 to all MSDN subscribers.  The RC will be made available to the world on Wednesday, February 10th.  The RC includes a go-live license for people who want to deploy in their production environment.

    Thank you for all the feedback you’ve sent our way so far.  The goal of this RC is to get more feedback from you and ensure we’ve addressed the performance issues in the product.  We have made significant performance improvements specifically as it relates to loading solutions, typing, building and debugging.

    I encourage you to download the RC and let us know what you think.  For more information on the RC, check out Jason Zander's blog.

    Namaste!

Page 1 of 16 (381 items) 12345»