Moustafa Refaat
Login   Search
Skip Navigation Links
Home
Publications
Service Offerings
Downloads and Samples
My Resume
Endorsements
Contact Me
Books
Technical Articles
Software Packages
Scroll up
Scroll down
BizTalk The Practical Course
Mastering The BizTalk Technical Interview
Soduku:Challenging Puzzels
Scroll up
Scroll down
Design Patterns Review
Software Architecture Basics Review
Simplified BizTalk Content Based Routing for a Pass_Throu data
An Extensible Light Xml Rules Engine Component
Secure Messaging Solution
Create a SQL Database Programmatically
BizTalk Unzip Adapter
Implementing Singleton pattern with BizTalk Orchestrations
Developing BizTalk Custom Adapters
The BizTalk ESB Toolkit 2.0 experience Series
Scroll up
Scroll down
Setting the ESB Toolkit on the 64 Bit Machines
How The ESB Works
Sample Custom Resolver
Scroll up
Scroll down
Recent Training
Scroll up
Scroll down

News List

  • Toronto Code Camp Presentation is uploaded
  • BizTalk: The Practical Course is recommended by Micorsoft
  • Canadian Gigs Network (www.CanadianGigs.Net) a job web site focusing on Canadian Jobs
  • BizTalk Technical Interview Preparation
  • GT-DataSafe© Online Backup for Amazon Storage Services 3.0 is released
  • Soduku Challenging Puzzles
  • BizTalk: The Practical Course
  • Mastering The BizTalk Technical Interview is Published.

Technical Articles

  • SharePoint List Simplified Configuration Store
  • WCF and xsd:choice how to implement!
  • WCF: Refactoring a Plain old XML web service to a WCF Service
  • Setting the ESB Toolkit on the 64 Bit Machines
  • The BizTalk ESB Toolkit 2.0 experience Series
Skip Navigation Links>Home

 Welcome to my website, in the following pages you will find information about my experience, publications, software products I developed, and synopsis of the services I provide in the areas of software development, design, and architecture. As a software consultant, I worked on different roles, such as BizTalk Developer, SharePoint Developer, BizTalk Architect, Enterprise Architect, Technical Lead, and Instructor. I mainly provide services in the  GTA (Toronto, ON) , though I have provided services in Calgary AB, St Johns NFLD, Chicago IL, and Denver CL in the past. I work with many technologies but I am mainly focused on Microsoft .Net platform. Some of the technologies that I specialize in are:

  • BizTalk
  • SharePoint
  • ASP.Net
  • .Net 3.5
  • Amazon Web Services
  • Oracle
  • MS Dynamics CRM and GP

Lately I have been focusing on the cloud with Azure and Amazon web services.  Feel free to contact me at Moustafa@MoustafaRefaat.com if you have any questions regarding any of my posts, books, services, or products.

DateNews
07/05/2010Toronto Code Camp Presentation is uploaded
11/12/2009BizTalk: The Practical Course is recommended by Micorsoft
10/09/2009Canadian Gigs Network (www.CanadianGigs.Net) a job web site focusing on Canadian Jobs
07/08/2009BizTalk Technical Interview Preparation
11/07/2009GT-DataSafe© Online Backup for Amazon Storage Services 3.0 is released
06/04/2009Soduku Challenging Puzzles
06/04/2009BizTalk: The Practical Course
17/03/2008Mastering The BizTalk Technical Interview is Published.

Rss
<September 2010>
SuMoTuWeThFrSa
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
WCF: Refactoring a Plain old XML web service to a WCF Service
Recently I was tasked to help devise a plan to refactor an application that was exposing non-compliant SOAP web services. I took a closer look at the application and decided that the best route would be to use the WCF to implement the refactored services. The old service had published XSDs for request and response of the web services. It was necessary to keep backward compatibility and keep these same XSDs valid for the new services.  With that in mind I devised the following plan
1.       Convert the schemas to CS classes using the XSD tool
2.       Create a new WCF Service Application
3.       On project click add existing items and add the two generated classes
4.       Rename the IService1.cs file to I[yourserviceName]Service.cs
5.       Change the Interface as follows
a. [ServiceContract(Namespace="your namespace")]
b.     [XmlSerializerFormat(Style=OperationFormatStyle.Document,Use=OperationFormatUse.Literal)]
 
6.       Include  a template for serializing and de-serializing classes (ObjectXMLSerializer.cs fond in downloads)  in your project
7. Rename the interface and change the method inside to have the form    
a. [OperationContract(Name = "Name", Action = "URL")]
b.              Response Service(Request req);
8.       Rename Service1.svc to Yourservicename.svc
9.       Open the code behind
10.   Rename the class and the inheriting interface
11.   Implement the method to be in form
    [ServiceBehavior(Namespace=”Your Name space ",IncludeExceptionDetailInFaults=true)]
   
    public class YourService : IYourService
    {
        public YourServiceResponse Service(YourServiceRequest req)
       
12.   Update the config.web file
      <servicename="YourServiceNameSpace.YourService"behaviorConfiguration="YourServiceNamespace.YOurService1Behavior">
                        <!-- Service Endpoints -->
                     <endpointaddress=""binding="wsHttpBinding"contract="YourServiceNameSpace.IYourService">
13.   Update the .svc file directive <%@ ServiceHost Language="C#" Debug="true" Service="YoursServiceNameSpace.YourService" CodeBehind="YourServiceService.svc.cs" %>
14.   Set .svc as the starting page press and the project as the starting project
15.   Now is the tricky part we add a Message wrapper class on the generated schema to control the message serialization, so  Open the CS Request Schema 
a.       ADD code similar to the following
using System.ServiceModel;
[MessageContract(IsWrapped = false)]
public class YourServiceRequest
{
    [MessageBodyMember(Name = "REQUEST", Namespace = "YourNameSpace")]
      public Request request;
}
b.      ADD code similar to the following
using System.ServiceModel;
[MessageContract(IsWrapped = false)]
public class YourServicesResponse
{
    [MessageBodyMember(Name="RESPONSE")]
    public Response response;
}
Press f5 you should see the service description press on WSDL and you will see the WSDL
Hope this helps:)
{18/05/2010 1:39 PM} {Tags: WCF}
No Comments

Please enter a title
Title
Please enter your name
Author
Please enter a comment
Comment
Please enter the characters displayed in the image Invalid Anti Bot Code
Anti Bot Image   
  
Rss
 
BizTalkGear.com
BizTalk components
Genetic Thought Software Inc
Genetic Thought Web Site where you can by my software products
SodukuPro.com
Play Sudoku Online or buy a PC based edition

Rss
Key Subjects
  • BizTalk
  • EMail
  • SharePoint
  • Architecture
  • EAI
  • Exception Management
  • Web Developmenet
  • Deployment
  • Security
  • Busienss Rules
  • SQL Server
  • ESB Toolkit
  • WCF
Copyright © Moustafa Refaat 2004 - 2009. All Rights Reserved.