Tuesday 29 April 2014

Internet of Things (IoT)

How many objects do we have that is connected to internet? Answer to this about, a decade ago would be computers; Smartphone’s and tablets but today nearly everything around us — right from coffee pots to Smart TV to watches everything is able to interact, transfer data over a network without requiring human-to-human or human-to-computer interaction. This idea of Physical objects being connected to the internet is referred as The Internet of Things. Linking all objects in the world with tiny machine-readable identifiers could be huge makeover of daily life. For instance, business may no longer run out of stock much before any crises arises. One would be able to interact with objects and alter remotely based on immediate or present needs.  In next to no time, world will  soon be covered with billions of sensors, continuously monitoring ,captivating  the real time data from the real world and uploading it into the internet. The planet we live will be a place, where internet is always on. Every object living or non-living will be inhaling intelligent sensors all around. These interconnected sensors and devices will soon facilitate new insights, superior efficiency, and bring totally new Business Model unlike the conventional models used. This Internet of Things will indicate companies to alter business models, incorporate evolving technology, and use analytics to create and design new organizations. E.g. when you walk to the refrigerator, it not only tells what is stored in there, but also informs you what can be made out of that stuff, to the addition, it can tell you what is the perfect meal based on your diet program or depending on your mood or activity level. The term Internet of Things (IoT) was proposed by Kevin Ashton in 1999 more than a decade ago. This concept emerged from RFID technology that uses low-cost radio tags to identify objects in warehousing, distribution, and retail. Implanting these tags inside a physical object eliminates the need for humans to constantly enter and monitor data. Instead, objects can work directly with each other, without the need for a person to link them together.  According to Cisco, Internet of Everything will have an economic impact of over $14 trillion by 2022. GE says the “Industrial Internet” could add $15 trillion to the world economy over the next 20 years. The latest revision of Internet protocol from IPv4 to IPv6’s is important factor in the development of the Internet of Things. Research says, every device that connects to the Internet requires an IP address, and it has been predicted that by 2020 there will be 50 billion Internet-enabled devices in the world. This equates to more than six connected devices per person, based on an expected global population of 7.6 billion people.

The Internet of Things is a near-term and growing at an exponential rate. If it doesn’t already influence your life in a way you recognize, it soon will. The Internet of Things will automate many actions and thus the opportunities presented by the Internet of Things will be endless.



About Author:
Mohini Bhandari is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, she actively contributes to the areas of Technology and Information Security. She can be contacted at mohini.b@spluspl.com 

Making Quality a Habit

Quality comes when u develop it as a habit. Every organization these days tries to find ways in which to grow their business. These organizations have a common theme in place which makes them profitable and noteworthy in the market. This can be done can having proper business processes in place, aligning your scope and setting up appropriate objectives which can be measured and sustained in the long run. The other important aspect is the maintaining the quality of services over the period of time. For such an organization to run effectively and productively you will require a certain number of professionals from quality leads to business associates. This ratio can vary depending upon the business process, its complexity, size of its operations, and managing it in the long run. This is also applicable to the providers as well in the market who deliver services at a certain amount cost. The providers & organizations can use the below mentioned points to be successful and effective in their business.
  1. Baseline measures and metrics – To define is to achieve. Before you start something new, it’s necessary to define what you need to achieve at the end of it. Organizations need a have proper set of objectives & benchmarks before you initiate a business process. Often service providers find it difficult to identify these because of the lack of historical or process data from clients end. It’s always better to define a set of baseline metrics before the start of an engagement. It enables you to better handle the targets, incentives and service credits associated to it. Anything that can be measured can be improved.
  2. Training and Certifications – Training’s are an important part of the culture of the organization. It’s like an investment that you do on your executives. Training allows them to imbibe the culture of the organization and also help them better understand the business process. You may not attain quick gains from this, but it would yield benefits to the company in the long run. Similarly certifications can be done depending upon the experience and domain of the executives.
  3. Sustainability – This is an important aspect when it comes to long term solutions or engagements. Often it happens that more focus is given during the implementation stage but very little on how to sustain it. For any system to work, the main focus should be on how you can sustain your business process. This can be achieved by constantly monitoring, tracking and improving your services subsequently. Provide solutions which can be sustained over a long period of time.
  4. Knowledge & Resource Management – This are two backbones of any organization. One is the knowledge that you possess of your market domain and how you utilize those in improving your business. Resources are the ones through which you can achieve those. Thus attrition can play major role in decreasing your bench strength. This can be dealt with by having quality management systems such as ISO 9001 which can useful. Once you have a rigorous set of processes which are ISO 9001 certified the over time it can be game changer for your business growth. While outsourcing, examine the knowledge management processes of your potential service provider.
  5. Continuous Improvements Programs – Keep improving as you move ahead, that should the company motto when it comes to growth. Every client needs new improvements in their business but they always come at a price. This usually happens when outsourcing. Implement a share based model when the client and the provider invest in improving the business process. This can benefit both the parties and they have equal partnership in driving it ahead. This keeps the client happy and also the service provider is confident of building a long term relationship with the client.
  6. Ideas and Best Practices – The process of capturing ideas and industrializing them across the organization. Organizations often have their best practices in place to deliver better results to clients. ISO 9001 can help businesses and organizations throughout the world to develop a best-in-class Quality Management System (QMS). Capturing new ideas can be also be implemented through a formal process and a structured reward and recognition program.
  7. Feedback & Qualitative analysis – Clients often have a lot to say about their counter parts or service providers. There should be proper set of attributes through the feedback data should captured, tracked and presented in a dashboard form. Service providers should also have a feedback process in place where you capture data based on different parameters. Similarly should be followed by organizations for their own employees and consequently have some incentive based program which will help build the executives morale.
About Author:
Mihir Sakhle is consultant and part of Systems Plus Pvt. Ltd. He is a part of consulting team that delivers Sourcing and Vendor Managementg Office projects. He can be contacted at: mihir.s@spluspl.com

Monday 28 April 2014

An Introduction to JQuery Templates

JQuery Templates enable you to display and manipulate data in the browser. For example, you can use jQuery Templates to format and display a set of database records that you have retrieved with an Ajax call.

We will go through the basics of JQuery templates and then see an example usage. To use JQuery template you need to include the jquery-tmpl javascript file.

You can get this at
https://github.com/BorisMoore/jquery-pl/blob/master/jquery.tmpl.min.js
and copy the contents and save it in a file with whatever name you want.
Let’s use ‘jquery.tmpl.min.js’ (same as in the source).

You also need JQuery. You can get JQuery 1.10 here
http://code.jquery.com/jquery-1.10.2.min.js
Save this also in the similar way.

Here’s the complete code:

<!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Intro</title>

</head>
<body>

<divid="pageContent"style="">

<h1>Widgets Gallery</h1>
<divid="widgetsContainer"></div>

</div>

<scriptid="widgetsTemplate"type="text/x-jQuery-tmpl">
<div style="border:1px solid;text-align:center;height:150px;width:450px" >
<img style="height:60px" src="${picture}" alt="" />
<h2>${title}</h2>
            Price: ${formatPrice(price)}
</div>
</script>

<scripttype="text/javascript"src="jquery-1.10.2.min.js"></script>
<scripttype="text/javascript"src="jquery.tmpl.min.js"></script>

<scripttype="text/javascript">
// Create an widgets
var widgets = [
            { title: "iPad", price: 37.79, picture: "iPad.png" },
            { title: "Monitor", price: 44.99, picture: "monitor.png" },
            { title: "Printer", price: 4.00, picture: "Printer.png" },

        ];

// Render the books using the template
        $("#widgetsTemplate").tmpl(widgets).appendTo("#widgetsContainer");

function formatPrice(price) {
return"$" + price.toFixed(2);
        }

</script>

</body>
</html>

In above codeyou should notice that the actual template is included in a script tag with a special MIME type of text/x-jQuery-tmpl:











This template is displayed for each of the widgets rendered by the template. The template displays a widgets picture, title, and price.

MIME type of text/x-jQuery-tmpl is used becausewhen a browser encounters a SCRIPT tag with an unknown MIME type, it ignores the content of the tag. This is the behaviour that you want with a template. You don’t want a browser to attempt to parse the contents of a template because this might cause side effects.

For example, the template above includes an <img> tag with a src attribute that points at “${picture}”. You don’t want the browser to attempt to load an image at the URL “${picture}”. Instead, you want to prevent the browser from processing the IMG tag until the ${picture} expression is replaced by with the actual name of an image by the jQuery Templates plugin.

If you are not worried about browser side-effects then you can wrap a template inside any HTML tag that you like. For example, the following DIV tag would also work with the jQuery Templates plugin:










The expression ${…} is used to display the value of a JavaScript expression within a template. For example, the expression ${title} is used to display the value of the widgets title property.

The template is rendered with the help of the tmpl() method. The following statement selects the widgetsTemplateand renders an array of widgets using the widgetsTemplate. The results are appended to a DIV element named widgetsContainerby using the standard jQuery appendTo() method.

$("#widgetsTemplate").tmpl(widgets).appendTo("#widgetsContainer");

So this is the introduction for JQuery Template.This is a very simple templating engine. There are more sophisticated and advanced ones like Handlebars, Moustache etc. Check them out too. Hope you enjoyed this.


About Author:
Vaibhav Patil is enthusiast .net developer who works as associate consultant with Systems Plus Pvt. Ltd. He in free time reads and write on various web technologies. He can be contacted at: vaibhav.p@spluspl.com

Thursday 24 April 2014

Scrum Technology – Demand of most IT projects

SDLC has various models like the Water Fall Model, Spiral Model, V Model, Iterative Model and Prototype Model. The latest model of the SDLC is the agile methodology. Agile approaches are typically used in software development to help businesses respond to unpredictability. Agile is also becoming very much adaptable to maintain a contant visibility on the project by the client / product owner. Under the Agile umbrella there are various mythologies that can be used namely; Kanban, Scrum, Lean, Extreme Programming and many others. Let’s try and understand what Scrum Technology is.

What is Scrum?

In Rugby: Scrum (short for scrummage) is a method of restarting play. The scrum is utilized either after an accidental infringement or when the ball has gone out of play.

Agile Methodologies: Scrum is a framework for effective team collaboration on complex projects. Each team member contributes in project decisions with their opinions. This is also very effective in increasing team communication and eliminate hurdle if any during course of project. Agile approach of iterative and incremental process is facilitated by Scrum Technology.

The Roles in Scrum

Product Owner: In Scrum, the Product Owner is the voice of the customer. He acts like the head of the family, taking responsibility for communicating the vision of the product to the development team. He decides the release date, features of the product and contents. The product owner is responsible for the profitability of the project.

Scrum Master: The Scrum Master acts as a mediator between the Product Owner and the team. He represents management to the project.  The main responsibility of the product owner is to ensure that the team is fully functional and productive and to enact scrum values and practices within the team. The scrum master shields the team from all external forces.

Team Member: The team is the strength pillar which is responsible for completing work. Ideally, teams consist of five to seven cross-functional members. For software projects, a typical team includes a mix of software engineers, architects, programmers, analysts, QA experts, testers, and UI designers. The team members decide how the work is arranged and how assignments are distributed.



Scrum Terminologies

Product & Sprint backlog: The product backlog is a list of desired features for the product. The sprint backlog is a list of tasks from the product backlog to be completed in a particular sprint. Sprint is like a subset of Product backlog.

Sprint planning meeting: This is done once at the beginning of each sprint, where all the top priority items are picked up from the Product backlog and brought into the Sprint backlog. It is basically a list that is the list of tasks the team has committed to complete in the sprint.

Daily Scrum: Every day during the sprint, there is a 15 minutes stand up meeting to discuss: 1.What did you do yesterday? 2 What will you do today? 3 Is anything in your way?. All members of the team are required.

Sprint review meeting: At the end of each sprint, the team demonstrates the completed functionality at a sprint review meeting, during which, the team shows what they accomplished during the sprint. It is a very informal meeting.

Scrum is an agile process most commonly used for product development, especially software development. Scrum is a project management framework that is applicable to any project with aggressive deadlines, complex requirements and a degree of uniqueness. Scrum is much more than a simple framework. Scrum supports our need to be human at work: to belong, to learn, to do, to create and be creative, to grow, to improve, and to interact with other people.


About Author:
Shweta Samudra is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, she actively contributes to the areas of Technology and Information Security. She can be contacted at: shweta.samudra@spluspl.com

Centralized vs. Local Support Teams

Before we compare the centralized and local support, let us understand the two terms in brief:

Centralized Support:
A support architecture comprising of a single team providing support to all applications / systems utilized by an Organization across all geographies forms a Centralized Support desk

Local Support:
A support architecture comprising of multiple teams providing support applications / systems wise, geography (Branch) wise for an Organization forms a Local Support desk


Centralized Support over Local Support

One stop destination: Centralized support is a one stop destination for all applications / Systems related issues across geographies as compared to Local support team scenario, where in users may have to raise issues in different systems or dial in different numbers in case of telephonic communication to resolve their issues.

Reports: Reporting related to support becomes easy and efficient in centralized support architecture as there is only one system and one team across all applications / systems. Thus reports like total issues encountered in previous month, no. of issues escalated, no. of issues closed and such can be easily made available. This will help the stakeholders and senior management to have a holistic view of the entire support scenario for analysis and decision making.  However, it is a tedious and cumbersome activity when it comes to local support team scenarios, as collating reports generated from different systems by different teams in different formats will be time consuming and would require additional resources to accomplish the task. Also, it would be difficult for the senior management to have a clear picture of the support status.

Standardization: Standardization can be implemented in SLAs and in the escalation process which increases the efficiency of resolving issues in centralized support architecture as there is one single team managing support through one system. Hence, there is single hierarchy for setting escalations on SLAs. In case of local support scenario, different teams with different reporting hierarchies are present. Hence, standardization cannot be implemented for SLAs and escalations which in turn affect the efficiency of the overall support.

Cost efficient: Centralized support is cost efficient as it can be hosted at one place with pre-defined IT infrastructure and resources. However, in case of local support scenario, whenever a new application / system is implemented or new branch / office is added to the organizational a separate budget have to be sanctioned for support expenditure which includes cost of the physical location, support team and IT infrastructure.
Local Support over Centralized Support

Dependability: In case of centralized support scenario, the dependability is too high on single support team. At any given point, if the respective support team faces any technical or human resource issues, support for all applications across geographies gets affected.
However, in case of local support teams, even if the support team for one application /system suffers technical or human resource shortcoming, support to other applications across geographies is carried out smoothly without interruption.

Easily approachable: Local support teams are easily approachable as there is no language barrier for communication and the issues are attended to and resolved quickly as that particular support team is dedicated to that particular geography / application. However, in centralized support architecture, these benefits cannot be experienced as there is a single team managing issues for all applications / geographies.

Resolution time: The resolution time is generally lesser in case of local support team as there is minimal prioritization thanks to independence from application / system / geographies. Thus, the local support team approaches every issue as it comes for that particular system as there are dedicated resources providing support. On the other hand, in case of centralized support architecture, issue resolution time will be based on the prioritization and also dependant on the geography and other factors. Thus, small issues which can be resolved quickly can take longer to get resolved.

It can be seen that both centralized support and local support have their advantages and disadvantages when compared with each other. Hence, in order to implement a successful, efficient and cost effective support system one needs to understand the nature of the organization and also analyze the support architecture that will suit it the best within the available budget.

About Author:
Amol Bhembre is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, he actively contributes to the areas of Technology and Information Security. He can be contacted at: amol.b@spluspl.com

Wednesday 23 April 2014

Multi-Vendor Outsourcing – Challenges

Most companies these days are adopting multi-vendor approach in outsourcing. Organizations are now looking up to lower their risks in outsourcing deals by not putting “all their eggs in one basket”. A multi vendor outsourcing approach for outsourcing services also enhances the quality of services.

However, having multiple suppliers also brings multiple risks to the organization. Organization has to deal with multiple vendors, each with different service level and service quality. To make sure these vendors deliver value to organization becomes a challenging task. Greater the number of vendors involved greater are the challenges.

The challenges of outsourcing with multi-vendor are not easy to overcome. What are these challenges which need to be faced?
  • Inconsistent quality – different vendors have varied service levels, different reporting structure, escalation procedures, different point of view and development style. This leads to inconsistency in the quality of deliverables.
  • Management time – managing multiple vendors requires more time, which may increase the overall costs of the engagement.
  • Governance related risks – organization is exposed to multiple risks, as it has to deal with multiple vendors which introduce governance related risks. If this engagement are not managed and governed properly, it can be more time consuming and expensive.
  • Measuring value – Measuring value across the enterprise becomes a challenging task as each vendor has their distinct service, tool, culture which is different from other vendors.

Best practices to overcome these challenges –
  • Check for capability and preparedness of organization – people, process, infrastructure, technology before getting into multi-vendor sourcing engagement
  • Set baseline standards for vendors in order to measure performance of each vendor using common baseline
  • Evaluate each vendor at regular interval based on agreed metrics and measurement framework
  • Establish an effective governance framework which would specify key deliverables for each service and provide mechanisms to measure the achievement of goals. The framework should facilitate communication between stakeholders
  • Enter into Operating Level Agreements (OLAs) to state clear roles, responsibilities and expected behavior of each vendor
  • Incentivize and penalize to encourage and push service providers to provide quality services

About Author:
Nisha Tolani is consultant and part of Systems Plus Pvt. Ltd. She is a part of consulting team that delivers Sourcing and Vendor Management Office projects. She can be contacted at: nisha.t@spluspl.com

Application Testing in IT

Software/ Application testing is very important and plays a vital role in successful and error free implementation of the software/Application. IT Companies invest a lot in development and customization as per client requirements. However, subsequent to development of such applications/software, companies are required to ensure that such software/applications perform in accordance with the client’s requirements. To ensure that all bugs in the software are identified prior to the deployment, various testing procedures are implemented by the IT industry. The importance of this process directly impacts the ability of software up to its potential. If the new application is unable to perform the function it was designed to do, the client might face severe losses due to stoppage of work and also adversely affect the business of the respective Application development Company. Thus, IT Company’s invest substantial amount of money on Application testing. The scope of these procedures is to facilitate identification of a problem in the application. Some of the leading Testing methodologies implemented by companies in the IT industry are as listed below:
  1. General Testing: This refers to the tests carried out on software/applications to check whether the functionality of newly developed Application/software is working fine as per the requirement of the client. Among all other testing, web testing and usability testing are generally used for most of the application testing. The online performance of an application is measured using web performance testing. Usability testing is implemented depending on the type of application. Its main objective is to see whether the application works successfully in different IT environments. The purpose of these types of testing is to identify the general functional capabilities of the software/application and to help developers determine areas of improvement for the same. A software development organization performs general testing of software/applications along with other more advanced methods to ensure that the software conforms to the pre-defined operational capabilities specified by the client/user group.
     
  2. Load Testing: This methodology simulates operating conditions of the software/application during higher/normal load conditions to analyze the effect of such changes on the functional capabilities of the software/application. Load testing checks the operational capabilities in case of both normal load and high load conditions. This is considered to be a type of non-functional testing, which is undertaken to gauge how many users can simultaneously login/use the application.

    This is a commonly deployed methodology in IT Companies. It is often utilized on similar lines with volume, reliability, software performance and concurrency testing. By using load testing, developers can attempt to determine the reason for slow performance of software. The common reasons for such slow response commonly include load balancing between multiple servers, types of Server used, their specifications, client-side processing, network congestion/latency, available database service and/or bugs in the application server(s) or software. The use of load testing is a must for software/applications, which are subjected to SLA (service level agreement) for ensuring that the software is capable of supporting multiple concurrent users. As the procedure simulates an increase in system load by using multiple virtual users, various software are currently available to carry out load testing. Some of the leading load-testing tools used by developers globally are IBM Rational Performance Tester, Apache JMeter, LoadRunner etc.

  3. Functional Testing: This is a type of black-box testing based on the specifications and functionalities of the software components being tested. It is called black box testing because the internal structure of the program is seldom considered. The functionality of specific modules of the application is to give inputs and check respective output thus obtained. The key steps involved in functional testing include identification of functions which the application is expected to perform, creation of input data according to specifications of the identified functions, determining output based on the specifications of those functions, executing the test scenario based on the test cases followed by comparison of the obtained output vs. the expected output. Functional testing is carried out by checking a program with respect to established specifications and available design documents for the software/applications.
     
  4. Regression Testing: The regression testing is a technique which works on identifying errors/bugs that are present in the functional or non-functional areas of the application before working on the final configuration or adding patches as per the client requirement. The main objective of regression testing is to ensure that the use of a new patch or upgrade does not introduce a new bug into the existing system. Also, regression testing helps ensure that the changes in one section of the software do not affect other part of the software’s code. Some of the commonly applied regression testing methods include the use of earlier tests to check for alterations in program operation and the search of any previously fixed bugs, which had re-emerged subsequent to introduction of the new code. Fixed bugs in software often re-emerge and regression testing is one of the leading methods to ensure that such re-emergence is identified and easily controlled before any major damage occurs. Software development companies repeatedly perform regression testing of software/applications after any change in coding such as use of patches etc. to ensure that the functionality of the application is unaffected. Such repetitive testing is usually automated by using an external tool such as Bamboo, TeamCity, Jenkins, Hudson, Tinderbox etc. This type of testing is generally performed by the QA team in case of leading software development companies, however, smaller companies are often engaged in outsourcing such services to companies specializing in the field of software QA and testing.
Application testing is very important for the success of any Software/Application. Various types of application testing should be religiously followed depending on the type of Software/Application before the final implementation/deployment. This will ensure successful implementation of the application within set timelines and as per the user requirements. Proper usage of Application testing methodologies will result in smooth functioning of the application for the client which in turn will help the Application development company to achieve goodwill and success.

About Author:
Amol Bhembre is a consultant in Systems Plus Pvt. Ltd. Within Systems Plus, he actively contributes to the areas of Technology and Information Security. He can be contacted at: amol.b@spluspl.com

Monday 21 April 2014

WCF Service over HTTP with custom username and password validation in IIS

WCF comes with a rich set of security features such as transport level message and transport with message; each security type has its own advantages and overheads as well. The best solution is message level security using custom username - password authentication. After digging in to the net, I found pieces of information, and with some effort, I implemented a concrete solution which I am hoping is helpful for others.

I create a class and name it CustomValidator.cs. We the implement this code in it:

Note: This class must be derived from System.IdentityModel.Selectors.UserNamePasswordValidator and override the Validate method. And to validate the user, use any data source; in this example, we will use a hard coded value.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IdentityModel.Selectors;
using System.ServiceModel;

namespace Services
{
    public class CustomValidator : UserNamePasswordValidator
    {
        // This method validates users. It allows in two users, test1 and test2
        // with passwords 1tset and 2tset respectively.
        // This code is for illustration purposes only and
        // must not be used in a production environment because it is not secure.
        /// <summary>
        /// userName userId~MachineName
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        public override void Validate( string userName, string password )
        {
            if (null == userName || null == password)
            {
                throw new ArgumentNullException();
            }         

            if (!( userName == "Amit" && password == "Gupta" ))
            {
                // This throws an informative fault to the client.
                throw new FaultException("Unknown Username or Incorrect Password");
                // When you do not want to throw an infomative fault to the client,
                // throw the following exception.
                // throw new SecurityTokenException("Unknown Username or Incorrect Password");
            }
        }
    }
}



Creating the service

Add file .svc file in your project for example is used BusinessPartner.svc
The WCF Service just contains a function Select_Schedule():


   [ServiceContract]
    public class BusinessPartner : IBusinessPartner
    {

        [OperationContract]
        public DateTime Select_Schedule(  )
        {
            try
            {
                DateTime dt=DateTime.Now;
                return dt;
            }
            catch (Exception ex)
            {
                throw new FaultException(Utility.HandleException(ex).ToString());
            }
        }
    }



Configuring the Web Service

Modify the web.config and add following lines in it.

a) Behavior setting
<behaviors>
      <serviceBehaviors>       

        <behavior name="Services.EZJemsBehaviorValidator">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceCredentials>
            <serviceCertificate findValue="EzJemshttp"  storeLocation="LocalMachine" storeName="My" x509FindType="" />
            <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Services.CustomValidator, Services" />           
          </serviceCredentials>
        </behavior>


        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>



b) Binding setting
<bindings>     
      <wsHttpBinding>
        <binding name="wsHttpBinding_EZJEMS" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00"
                 sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                 maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"
                 textEncoding="utf-8" useDefaultWebProxy="true">
          <security mode="Message">
            <message clientCredentialType="UserName"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>



<service behaviorConfiguration="Services.EZJemsBehaviorValidator" name="Services.BusinessPartner">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_EZJEMS" contract="Services.BusinessPartner" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/" />
          </baseAddresses>
        </host>
      </service>




Creating the site in IIS 7

Open IIS Manager. Right click Sites and Add Website. Name it as Services, set Application pool to DeafaultAppPool, and select the physical path.


Now browse the site & verify the service, it should be up.

The final step is to create a client to consume the service


Add the app.config and add following lines in it.

<wsHttpBinding>
        <binding name="wsHttpBinding_EZJEMS" closeTimeout="00:10:00"
          openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
          bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
          maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text"
          textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
            maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <reliableSession ordered="true" inactivityTimeout="00:10:00"
            enabled="false" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" negotiateServiceCredential="true"
              algorithmSuite="Default" />
          </security>
        </binding>
</wsHttpBinding>


<client>
      <endpoint address="http://115.111.112.43/EZJEMSServicesOld/BusinessPartner.svc"
       binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_EZJEMS"
       contract="BusinessPartner.BusinessPartner" name="WSHttpBinding_BusinessPartner">
      </endpoint>
    </client>

The client application is the desktop application Used service method in your application using below code:

BusinessPartner.BusinessPartnerClient wsBusinessPartner = new BusinessPartner.BusinessPartnerClient();

wsBusinessPartner.ClientCredentials.UserName.UserName = "Amit";
wsBusinessPartner.ClientCredentials.UserName.Password = "Gupta";

DateTime dt = wsBusinessPartner.Select_Schedule(intIdPartner, id_Entity);



About Author:
Amit Gupta is technology lead in Systems Plus Pvt. Ltd and keen to resolve challenges using his technical skills. He actively contributes to technology and can be contacted at: amit.gupta@spluspl.com