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

Post a Comment

Popular posts from this blog

Responsive Web Design

Affine Cipher in C#