CSharp Reference Implementation

From Direct Project
Jump to navigation Jump to search

Setup, Newcomer Developers, Start Here

Architecture Slides

  • CSharp XD* and Client API Architecture and Plan

  • Team Members

    The CSharp (.NET) Reference implemenation is being developed by the following team of volunteers. Please add your name to this list if you wish to contribute.

    Team Lead: Joe Shook

    Active Contributors

    Area of Interest
    Joe Shook
    Deployment/Installer, MDNMonitor, Agent, Config Store, Middle Tier, etc...
    Sri Koka
    Techsant Technologies
    XD*, Baremetal install
    Ryan Balsick
    Deployment, XD*
    Vassil Peytchev

    Former Contributors

    Area of Interest
    Umesh Madan
    Agent, Crypto/SMIME/SMTP, DNS, Common Libraries, Config Store, Middle Tier Services, SMTP Server Integration
    Sean Nolan
    Agent, DNS, Web Admin
    Ali Emami
    Agent, Crypto, DNS, Config Store, Middle Tier, etc...
    Arien Malec

    Agent, Common, XD*, Object Model Docs
    John Theisen
    Agent, STMP/MIME, Web Admin, Build, Deployment/Installer
    Chris Lomonico

    Common Libraries, DNS, Config, Testing
    Claudio Sanchez
    Web Admin

    Scrum Meetings

    See full Reference Implementation Group meetings

    Key Principles

    The C# reference implementation will....

    1. Provide a reusable object model and libraries used to build concrete Direct integrations
    2. Proivde an "out of the box" installable servers on a single server.
    3. Be quality code that can credibly be used in the real world.
    4. Have no install dependencies other than what comes standard on Windows Server 2008 (build/test tools don't count, .NET 3.5 and SQL Express exempted).
    5. Be modularized so that implementors can easily replace any major component with their own implementation, or when appropriate extract components for use in their own codebases.
    6. Will not include any code that breaks the BSD license.
    7. Have clear structure and documentation that minimizes developer "jumpstart" time.

    Project Management

    Release Plan

    CSharp Project & Release Plan

    Issue Forum

    • Issues that need to be addressed by the CSharp Reference Implementation Team should be submitted here.


    • Lightweight (agile) project management. Individual collaborators use whatever mechanism works for them them.
    • 30 minute Scrum calls.
    • "Do-opoloy". Working code speaks louder than words!

    Source Code

    Software Requirements For Development

    • .NET Framework 3.51 SP1
    • msbuild.exe: Ships free with .NET Framework.
    • Project Files are created in Visual Studio 2008:
      • Visual Studio 2008 Professional fully supported. Required for building the complete RI. See the details for building the .NET RI.
    • For large messages, Windows Hot Fix

    VS 2012 Express Edition

    In support of developers running VS 2012 Express for Web solutions and projects have also been included, identified by the VS2012 suffix. These are also targeted against .NET version 3.51 SP1.

    Build Environment

    You build projects using either Visual Studio or from the command line using msbuild.exe.
    CSharp Build Instructions

    Publishing a New Release

    Building and Publishing the Installer and Source archive

    Coding Guidelines

    CSharp Coding Guidelines


    The C# Reference implementation provides software at two levels:

    Object Model and libraries that allow you to integrate and leverage - pick and choose - even copy and paste - Direct technology into your existing .NET code.

    More packaged solutions that use the object model to deliver turn-key out of the box functionality.

    Configuration Settings

    Extensibility and Custom Code

    Enable CRL support