Contract First Development in WCF 4.5

WCF 4.5 supports contract first development. Means it allows to create all the data contract classes can be auto generated using the WSDL. one of the advantage in using the is if we start developing the service from the data contracts & then generating the WSDL we might end up in creating from data contracts with .net specific data types. But when using contract first development as WSDL is xml based only xml based data types are allowed to create so no .net specific contract will be created. This feature can be very useful when WSDL file is produced through design phase either by a solution architect or through mutual parties that agree on a contract prior to development and build phases.  When this is the case, either the contract can be created for a future service implementation or contracts can be created so that developers can begin coding for the client side of an interface prior to the endpoint being available.

The contract-first tool is integrated into Visual Studio 2012 as a build task. The code files generated by the build task are created every time the project is built, so that the project can easily adopt changes in the underlying service contract.

We’ll see step by step how we can create the data contracts using a WSDL file.

Step 1:

Create a WCF service library project.Add a sample WSDL file in to the project. This is a sample WSDL for a data contract named Product with some properties.

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ServiceSchema"
targetNamespace="http://tempuri.org/ServiceSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/ServiceSchema.xsd"
xmlns:mstns="http://tempuri.org/ServiceSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:complexType name="Product">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string" default="2.2" />
<xs:element minOccurs="0" maxOccurs="1" name="Category" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Code" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" name="Quantity" type="xs:double" />
<xs:element minOccurs="0" maxOccurs="1" name="Price" type="xs:double" />
<xs:element minOccurs="0" maxOccurs="1" name="Orders" type="xs:double" />
</xs:sequence>
</xs:complexType>
</xs:schema>

Step 2:


Contract-first options can be configured in the Properties menu of a WCF project. To enable contract-first development, select the Enable XSD as Type Definition Language check box in the WCF page of the project properties window.


image


You can set the advanced properties by clicking the advanced button & configure them in the advanced properties window.


 


image


Step 3:


After setting the properties build the project by pressing F6. Then the data contract will be available in the project.


image


 


Auto Generated code will be as follows. The file is created in the <project directory>/obj/<build configuration>/XSDGeneratedCode/ directory by default.


//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.17929
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ContractFirstDemo.ContractTypes
{
    using System.Xml.Serialization;
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("MSBuild", "4.0.30319.17929")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace="http://tempuri.org/ServiceSchema.xsd", IsNullable=true)]
    public partial class Product
    {
        private string nameField;
        private string categoryField;
        private string codeField;
        private double quantityField;
        private bool quantityFieldSpecified;
        private double priceField;
        private bool priceFieldSpecified;
        private double ordersField;
        private bool ordersFieldSpecified;
        public Product()
        {
            this.nameField = "2.2";
        }
        /// <remarks/>
        [System.ComponentModel.DefaultValueAttribute("2.2")]
        public string Name
        {
            get
            {
                return this.nameField;
            }
            set
            {
                this.nameField = value;
            }
        }
        /// <remarks/>
        public string Category
        {
            get
            {
                return this.categoryField;
            }
            set
            {
                this.categoryField = value;
            }
        }
        /// <remarks/>
        public string Code
        {
            get
            {
                return this.codeField;
            }
            set
            {
                this.codeField = value;
            }
        }
        /// <remarks/>
        public double Quantity
        {
            get
            {
                return this.quantityField;
            }
            set
            {
                this.quantityField = value;
            }
        }
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool QuantitySpecified
        {
            get
            {
                return this.quantityFieldSpecified;
            }
            set
            {
                this.quantityFieldSpecified = value;
            }
        }
        /// <remarks/>
        public double Price
        {
            get
            {
                return this.priceField;
            }
            set
            {
                this.priceField = value;
            }
        }
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool PriceSpecified
        {
            get
            {
                return this.priceFieldSpecified;
            }
            set
            {
                this.priceFieldSpecified = value;
            }
        }
        /// <remarks/>
        public double Orders
        {
            get
            {
                return this.ordersField;
            }
            set
            {
                this.ordersField = value;
            }
        }
        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool OrdersSpecified
        {
            get
            {
                return this.ordersFieldSpecified;
            }
            set
            {
                this.ordersFieldSpecified = value;
            }
        }
    }
}

Hope this gives you a starting point to start developing WCF with Contract first development. You can find some posts in the below URLS.



 


Happy Coding

Comments

  1. If we create dotnet specific data contracts in WCF, then what would be the mistake, eventually it will create WSDL in xml format only so that this will be used any technology, Here I dont find any wrong

    ReplyDelete
  2. Excellent ! I am truly impressed that there is so much about this subject that has been revealed and you did it so nicely. Dot Net Training in Chennai

    ReplyDelete
  3. Great post! I am actually getting ready to across this information, It’s very helpful for this blog.Also great with all of the valuable information you have Keep up the good work you are doing well.
    Microsoft Azure online training
    Selenium online training
    Java online training
    Java Script online training
    Share Point online training

    ReplyDelete
  4. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    devops online training

    aws online training

    data science with python online training

    data science online training

    rpa online training

    ReplyDelete
  5. This comment has been removed by a blog administrator.

    ReplyDelete
  6. This comment has been removed by a blog administrator.

    ReplyDelete
  7. celR offers data science course in hyderabad , the most comprehensive Data Science course in the market, covering the complete Data Science lifecycle concepts from Data Collection, Data Extraction, Data Cleansing, Data Exploration,

    ReplyDelete
  8. Attend The Course in Data Analytics From ExcelR. Practical Course in Data Analytics Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Course in Data Analytics.
    ExcelR Course in Data Analytics

    ReplyDelete
  9. I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page!

    ReplyDelete
  10. This post is very simple to read and appreciate without leaving any details out. Great work! data science course fees in Bangalore

    ReplyDelete
  11. I have to search sites with relevant information on given topic and provide them to teacher our opinion and the article.

    ExcelR data analytics courses

    ReplyDelete
  12. Thanks for sharing this post, it was great reading this article! would like to know more! keep in touch and stay connecteddata scientist courses

    ReplyDelete
  13. Very nice blogs!!! i have to learning for lot of information for this sites…Sharing for wonderful information. Thanks for sharing this valuable information to our vision. You have posted a trust worthy blog keep sharing, data science training

    ReplyDelete
  14. I've read this post and if I could I desire to suggest you some interesting things or suggestions. Perhaps you could write next articles referring to this article. I want to read more things about it!
    data science certification

    ReplyDelete
  15. You re in point of fact a just right webmaster. The website loading speed is amazing. It kind of feels that you're doing any distinctive trick. Moreover, The contents are masterpiece. you have done a fantastic activity on this subject!
    data scientist course in hyderabad

    ReplyDelete
  16. I enjoy it for creating the details, keep up the truly amazing perform continuing
    data scientist training in hyderabad

    ReplyDelete
  17. https://intellimindz.com/splunk-online-training/
    https://intellimindz.com/r-programming-online-course/
    https://intellimindz.com/react-online-course/
    https://intellimindz.com/salesforce-online-training/

    ReplyDelete
  18. We are really grateful for your blog post. You will find a lot of approaches after visiting your post. Great work
    data scientist course

    ReplyDelete
  19. Thanks for such a great post and the review, I am totally impressed! Keep stuff like this coming.
    cyber security course in malaysia

    ReplyDelete
  20. You completed certain reliable points there. I did a search on the subject and found nearly all people will agree with your blog.
    data scientist course in hyderabad

    ReplyDelete
  21. Really an awesome blog. The way you present this blog is impressive. If you want to become a data science expert, follow the below link.
    Online Data Science Training in Hyderabad

    ReplyDelete
  22. I want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging enedevors
    data analytics course in trivandrum

    ReplyDelete
  23. I go to your blog frequently and counsel it to the complete of folks who desired to feature-on happening their understanding subsequent to ease. The style of writing is exquisite and plus the content material is summit-notch. thanks for that perception you provide the readers! https://crackdj.com/windows-7-ultimate-product-key/

    ReplyDelete
  24. i'm incapable of reading articles online particularly frequently, however Im happy I did nowadays. it is selected adroitly written, and your points are adeptly-expressed. I demand you harmoniously, entertain, dont ever lower writing. Free Reimage Repair License Key

    ReplyDelete
  25. Data Science course is for smart people. Make the smart choice and reach the apex of your career. Learn the latest trends and techniques from the experts.
    data science course

    ReplyDelete
  26. It is different from the data insight aspect. Algorithms are used to develop data, whereas the executives make better decisions about the product using data insight.

    data science course in lucknow

    ReplyDelete

  27. Hi. Great stuff! But I'd like to tell you about a great website with free software.
    Native Instruments Massive

    ReplyDelete
  28. Its very informative post really impressed . I would like to introduce a course to you which the best data science training course in greater noida . Click on the link and enroll right away.

    ReplyDelete
  29. Python is a programming language that enables quicker work and more efficient system integration. Because of its simplicity, ease of use, and accessibility to libraries like NumPy, Pandas, and Matplotlib, it is one of the best languages used by data scientists for a variety of data science applications. You will gain a multidisciplinary skill set and be prepared to work with massive volumes of data to find insights and solutions to business challenges after completing this data science certification course. Having this certification will provide you a technical understanding of computer science and statistics in addition to a postgraduate degree. It covers the spring framework, hibernate, and advanced java.data science course training in faridabad

    ReplyDelete
  30. Thank you for providing valuable information about B.Com colleges in Hyderabad. Your input is greatly appreciated!
    Colleges In Hyderabad For B.com

    ReplyDelete
  31. Thanks for the great info on B.com degree colleges in Hyderabad
    Degree Colleges in Hyderabad For B.com

    ReplyDelete
  32. Kindly Visit my website for latest movies.
    watchasiantv

    ReplyDelete
  33. I appreciate you sharing the best information, and your blog is excellent.
    CMA Coaching Institutes in Hyderabad

    ReplyDelete
  34. Appreiciate your research and for sharing the valuable information that we desire
    Data science courses in Ghana

    ReplyDelete
  35. This blog offers an insightful introduction to WCF 4.5’s contract-first development approach. The step-by-step guide on generating data contracts from WSDL is clear and easy to follow, making it a valuable resource for developers. I especially appreciate how it highlights the advantage of using XML-based data types to avoid .NET-specific contracts, ensuring broader compatibility. The integration of the contract-first tool in Visual Studio 2012 is well-explained, and the example code provides a helpful reference. Overall, this is a great starting point for those looking to implement contract-first development in WCF.
    data analytics courses in dubai

    ReplyDelete
  36. Contract-first development in WCF 4.5 is a significant approach that ensures data contracts are XML-based, preventing .NET-specific types from causing compatibility issues. This method allows for a more standardized service design and enables teams to collaborate effectively during the design phase. It's great to see how this approach can facilitate both service and client-side development! Data Science Courses In Malviya Nagar ​

    ReplyDelete
  37. Fantastic work on discussing "Contract First Development in WCF 4.5"! Your insights on this approach are invaluable for developers looking to enhance their service-oriented architecture skills. Keep up the great writing—you're making a significant impact in the tech community!
    Data Science Courses in Singapore

    ReplyDelete
  38. Great insights on Contract First Development in WCF 4.5! This approach really streamlines the development process and ensures that services are well-defined from the outset. I appreciate the emphasis on creating robust contracts that promote better communication between teams. It’s a game-changer for maintaining consistency and reliability in service-oriented architectures. Looking forward to applying some of these techniques in my next project! Thanks for sharing!
    Online Data Science Course

    ReplyDelete
  39. Thanks for this insightful guide on contract-first development in WCF 4.5! Your explanations make it easy to understand the benefits and process involved.
    Data science courses in Bhutan

    ReplyDelete
  40. I enjoyed reading your perspective on contract first develpoment in WCF 4.5. It made me understand it easily.Such a great read.
    Online Data Science Course


    ReplyDelete
  41. Thank you for this clear explanation of WCF 4.5’s contract-first development! Data science courses in Mysore

    ReplyDelete
  42. Contract-First Development in WCF 4.5 enables a structured approach by defining service contracts before implementing code. This method promotes clear specifications, making integration across different systems smoother. By starting with a WSDL file, developers ensure service interfaces are well-defined and agreed upon early, reducing issues later. It’s ideal for complex, enterprise-level applications needing consistent communication protocols.
    Data science Courses in Germany

    ReplyDelete
  43. "I couldn’t agree more! The future is all about data, and having access to courses locally is a game changer. If you're in Iraq and interested in getting into data science, visit Data science courses in Iraq to find the best courses available."

    ReplyDelete
  44. "Great post! The explanation of contract-first development in WCF 4.5 is clear and insightful. It's a valuable resource for developers looking to better understand WCF and its best practices. Thanks for sharing!"

    Data science courses in Bangladesh

    ReplyDelete
  45. Your practical advice on contract-first development in WCF 4.5 is just what I needed. I can’t wait to try these tips out. Thanks for the article.
    Data Science Courses in China


    ReplyDelete
  46. This blog offers a great explanation of Contract-First Development in WCF 4.5, outlining how it enables the creation of data contract classes through a WSDL file. By focusing on XML-based data types, it ensures platform-agnostic contracts without .NET-specific types. The detailed step-by-step guide, including the integration of contract-first tools in Visual Studio, is particularly helpful for developers looking to implement this approach. It provides clear instructions on how to configure the project, generate code, and integrate WSDL with WCF services—ideal for teams working with service-oriented architectures or those collaborating on API contracts before implementation. Investment Banking Course

    ReplyDelete

Post a Comment

Popular posts from this blog

Responsive Web Design

Affine Cipher in C#