Monday, December 6, 2010

Consultant - System & Process Assurance

PricewaterhouseCoopers
Consultant - System & Process Assurance
Fluency in spoken and written English.
Egypt
Communication Engineering, Computer Software, Consultation
Full Time
The Systems and Process Assurance (SPA) practice is an integral part of PricewaterhouseCoopers audit team. Systems and Process Assurance mission is to provide management with independent assessments of IT risk, regulatory compliance, IT control assessments, and the efficiency/adequacy of IT systems and processes. Our Associate and Senior Associate professionals are responsible for assessing the internal control environment for accounting information systems and critical IT processes at our clients. You will have the opportunity to serve as part of a team of professionals delivering quality service to a variety of top-tier Consumer Industrial Products and Service clients. Responsibilities include developing work plans and project approaches in the financial audit context and/or consulting world, analyzing client multi-platform systems while providing detailed reports on the vulnerability’s of these systems to our clients. The position entails extensive communication at all levels of management within the client organizations we serve. Accordingly, strong interpersonal communication skills are essential.
- Bachelor’s degree in Computer Sciences or a related field. - 0-2 years of relevant experience. - Fluency in spoken and written English. - Good personality and Interpersonal skills. - High degree of professionalism with ability to interact with various levels of staff and management. - Effective oral and written communication skills and strong analytical and problem-solving skills. - Ability to travel and/or to be reallocated - Certified Information Systems Auditor (CISA) credentials are preferred, but not essential. - Familiarity with major accounting software package or financial system would be a plus (e.g., SAP, Oracle, Hyperion, etc.).
Any
Computer Science
1 - 2 Years.
Excellent Communication and presentation skills.
High degree of professionalism with ability to interact with various levels of staff and management. Effective oral and written communication skills and strong analytical and problem-solving skills.
Negotiable
qualified & interested candidates shall send an updated resume specifying the position in the e-mail subject
Marwa Khorshid
marwa.khorshid@eg.pwc.com

Project Manager

Via Technology
Project Manager
•Fluent in English and Arabic.
Egypt
Computer Software, Information Technology, Software Engineering
Full Time
•Direct and manage project development from beginning to end. •Define project scope, goals and deliverable that support business goals in collaboration with senior management and stakeholders. •Effectively communicate project expectations to team members and stakeholders in a timely and clear fashion. •Estimate the resources and participants needed to achieve project goals. •Draft and submit budget proposals, and recommend subsequent budget changes where necessary. •Where required, negotiate with other department managers for the acquisition of required personnel from within the company. •Identify and manage project dependencies and critical path. •Plan and schedule project timeliness and milestones using appropriate tools. •Track project milestones and deliverable. •Coach, mentor, motivate and supervise project team members and contractors, and influence them to take positive action and accountability for their assigned work. •Build, develop, and grow any business relationships vital to the success of the project. •You will follow up the projects of KSA branch from Egypt Branch. This may also require traveling to KSA site to follow up and manage projects.
•Bachelor Degree/Master in computer science or equivalent. •Preferred PMP certified. •Preferred had software development background •Min. 5 years of experience in same position. •High Managerial Competencies.
Male
6 - 9 Years.
•Excellent negotiation skills. •Superior presentation Skills. •Excellent oral and written communication skills.
Negotiable
- Kindly send your CV with a recent photo and mention the job title in the subject field with job code
Mr. Mohamed Bayoumi
hr@v-ia.com

Software Development Team Leader

Via Technology
Software Development Team Leader
Very good command of English language
Egypt
Computer Software, Information Technology, Software Engineering
Full Time
•Research and recommend software tools to upper management. •Analyze system specifications and translate system requirements to task specifications for team members. •Deliver High level design with the help of senior(s) under his supervision. •Participate in software development process improvement in development and other areas. •Responsible for developing function specifications for programs being developed by his/her team. •Setting monthly/quarterly objectives for his/her team members •Coordination between the team members and the head of programming division. •Help the team to improve their experience and solve the technical issues
•University degree in Software/Computer Engineering, Computer Sciences, or related field. •Minimum of 5 years of relevant software development experience. •Fluent in ASP .Net, C#, VB, ASP Classic Plus, OOP Concepts, ADO.NET, XML/XML Web Services and Java Scripting. •Extensive experience with relational databases and Microsoft SQL Server.
Any
Computer Science
3 - 5 Years.
•Persuasive, initiating, and leading personality. •Complete multiple tasks with minimal supervision. •Accurate, service-oriented and problem solving.
Negotiable
- Kindly send your CV with a recent photo and mention the job title in the subject field with job code
Mr. Mohamed Bayoumi
hr@v-ia.com

Senior Software Developer

Premier Services & Recruitment
Senior Software Developer
-Very good English.
Egypt
Computer, Computer Education, Computer Software
Full Time
1.Participate in the development and the maintenance of our C# applications, using Microsoft SQL Server as a DBMS through Multi-Tier architecture and Windows / Web / Office / Mobile / IVR User Interface and Telerik controls. 2.Participate in system High Level Analysis & Design under the supervision of the Team Leader. 3.Deliver the Detailed Analysis and provide Use Cases/ WBS Dictionary/ UML Diagrams in order to estimate the duration for technical deliverables. 4.Coding application components according to company coding standards 5.Participate in developing and evolving company coding standards. 6.Participate in code reviews for the junior(s) under his supervision to maintain enforcing coding standards usage into the development environment. 7.Participate in the development of reports using Crystal Reports / Telerik Reporting Tool, based on specifications delivered by the product manager or customers. 8.Write Unit test Cases to validate his code, and junior(s) under his supervision. 9.Assist with software integration tests, software packaging, releasing and deployment. 10.Analyzing and diagnosing application problems. 11.Assist the support team in investigating level 3 problems with application components, determine cause, and define solutions. 12.Meet deadlines and contributing towards team objectives. 13.Fast learning, with high searching capabilities to become efficient with new technologies as dictated by the product strategy.
•University degree in Software/Computer Engineering, Computer Sciences, or related field. • Minimum of 4 years of relevant software development experience. • Fluent in ASP .Net, C#, VB, ASP Classic Plus, OOP Concepts, ADO.NET, XML/XML Web Services and Java Scripting. • Extensive experience with relational databases and Microsoft SQL Server. • Knowledge of Software Development Process is an asset.
Any
Computer Science
3 - 5 Years.
2600 - 4500
Neveen Nasr
neveen@premieregypt.com
Job-Contact Information

MS SharePoint Implementer

SoftSolutions
MS SharePoint Implementer
English and Arabic
Egypt
Computer Software, Information Technology, Software Engineering
Full Time
Responsible for implementation and/or project management of Microsoft SharePoint, ensuring quality delivery practice. They will also interact with all levels to troubleshoot and advise in areas of product implementations and upgrades.
• +3 years of experience in Microsoft SharePoint (WSS/MOSS) application development experience • +2 years of pure experience in .NET development (latest frameworks, C#, Web parts, asp.net) • +2 years of working with database and web services (SQL 2005/2008, XML, WSDL, ASMX and WCF) • Packing and deploying SharePoint solutions • Strong Analysis skills and requirement gathering • Presentable and solid communication skills • MCITP SharePoint certification • Full command in English language • Can travel abroad • Full Project Lifecycle implementation and customization is a plus
Any
3 - 5 Years.
Negotiable
- Kindly send your CV with a recent photo and mention the job title in the subject field with your current salary and your expected salary - Mails with incomplete or different subject will be ignored
Shady Sayed
hr@softsolns.com
Job-Contact Information

NET Developer

Employer SoftSolutions
Job Title .NET Developer
Languages English and Arabic
Country Egypt
Job Category Computer Software, Information Technology, Software Engineering
Job Type Full Time
Description - Make a substantial contribution to the success of the company through the development of new Software components, and improvement of existing software components - Write, test, and debug new software applications and enhancements to existing software applications, using object oriented programming languages, especially .NET. - Perform systems analysis and design work on problems of varied scope. - Interact with technical staff, clients, and vendors to ensure the enterprise Software solutions for the industry are the best available in the competitive, fast-paced online marketplace
Qualifications • +3 years of experience in medium to large application development • C # • .NET 3.5, .NET 4.0, ASP .NET, Web Services, XML, SOAP, WCF • Front end experience with HTML, CSS, JavaScript • Visual Studio 2008, 2010 • UML experience • Strong understanding of Design Patterns and Object Oriented Programming • MCITP certification • Full command in English language • Can travel abroad • Experience in development of Microsoft Dynamics products is a plus
Gender Any
Experience 3 - 5 Years.

Applications Specialist

Job Title
Applications Specialist
Job Category
Computer Software, Information Technology, Oracle Database
Job Type
Full Time
Description
  1. Supports end-users of ERP Applications. Ensures optimum mapping of ERP Applications to business needs using implemented modules and Acts as first-line support for end users regarding daily transactions.
  2. Defines month-close and year-close application procedures.
  3. Provides knowledge and guidance regarding application functionality.
  4. Trains new users on application functionality and business cycles.
  5. Identifies and analyzes new business requirements. 
  6. Maps detailed business requirements to applications functionality and presents alternatives to identified gaps.
  7. Performs/updates and tests required set-ups in terms of deploying new business requirements. 
  8. Familiarizes end users with application functionality in regards to new solutions
  9. Develops and maintains user guides in regards to business cycles.
  10. Develops/Amends applications documentation.
    Develops and/or customizes application reports.
  11. Undertakes and executes internal implementations for new functionality and/or modules. Prepares a weekly activity report and submits it to the Applications Manager.
Qualifications
-Very good knowledge of Oracle Applications functionalities in the following functional suites: (Oracle Financials, Oracle Logistics, Oracle HRMS, Oracle Projects and Oracle Assets Management). -Good business knowledge in, at least, two suites of the following: (Financial Accounting, Logistics & procurement, Project, HR & Payroll and Asset Maintenance). -Very good knowledge of SQL, PL/SQL and Oracle Reports. -Knowledge seeker and continuous knowledge update. -Very good team player. -Presentation skills (Demos, presentations and Training). -Technical writing skills. -Very Good Command of English.
Gender
Any
Education major
Information Technology
Experience
3 - 5 Years.
Salary (L.E.)
4600 - 6000
Job Contact Person
Hussam El Kerdawy
Job Contact Email
Top of Form
Bottom of Form

Calling secured Web services methods from PHP

  • An overview of SOAP in PHP
  • A demonstration of how to create security headers with an actual implementation example
  • A description of complex structures that may be passed as parameters to SOAP methods and how to transform the PHP representation of such parameters into the required format of a SOAP call argument

  •  Getting started
    Open source applications and open standards are becoming the preferred method for building applications on the Web. The most effective way to create such applications is to utilize existing software components and services across the Web. A common implementation of such a tiered application includes server-side PHP scripts using Web services. With this type of architecture, there is an increased need for secured communication.
    SOAP and PHP - Overview and references
    Before the introduction of PHP 5, it was hard to call Web services in pure PHP. In PHP 5, the application developer has a number of options for implementing PHP Web services clients: PEAR:SOAP, NuSOAP, and the new SOAP extension. This tutorial focuses on the use of the latter.
    The SOAP extension has improved capabilities over previous PHP solutions, including the SoapVar type and several OO mechanisms that can be used to construct virtually any complex SOAP type.
    According to Rosenberg and Remy's 2005 book (see Resources), "WS-Security is an overarching conceptual model that abstracts different security technologies into "claims" and "tokens"...SOAP headers are used for directive information. This is essentially the place where SOAP security lives. System-level information used to manage and secure the message is placed here as well. SOAP runtimes and intermediaries process SOAP header directives. Headers are intended to add new features and functionality and WS-Security headers will be located here. A sender can require that the receiver understand the header. Headers speak directly to the SOAP processors and can require that a processor reject the entire SOAP message if it does not understand the header. If a header contains critical security information that the SOAP processor does not understand, you may not want it to process this SOAP message at all."
    The developerWorks article Access an enterprise application from PHP script (see Resources) describes the usage of SOAP in PHP 5 for accessing a J2EE application using Web services. It also describes the SOAP PHP installation procedure, and relates to the security issues we are discussing here. The article states: "...there's no first-class support in ext/soap for WS-Security. Therefore, if we're going to send and receive WS-Security headers in PHP, we'll have to drop down into a more detailed interface where we can explicitly create the SOAP headers. ...You build up the message elements using the SoapHeader, SoapParam and SoapVarclasses, and then use SoapClient::__call to send the SOAP request and get the response."

    Creating a WS-Security header
    As explained above, WS-Security works by adding security headers to the SOAP messages. The box below lists an example of the required security header for WS-Security basic authentication (for the user myUserName and the password myPass):

    Listing 1. Security header for WS-Security basic authentication
    
      
        
          myUserName
          myPass
        
      

    The challenge here is to utilize generic SOAP extension object constructions in order to create the required headers and integrate them into the SOAP call. The instrument for this task is the SOAP extension's SoapVar data structure, which is defined in the PHP online manual (see the Resources),:
    "SoapVar, is a special low-level class for encoding parameters and returning values in non-WSDL mode. It is just a data holder and does not have any special methods except the constructor. It's useful when you want to set the type property in SOAP request or response. The constructor takes data to pass or return, encoding ID to encode it (SOAP_VAR_ENC in our case) and, optionally, type name, type namespace, node name and node name namespace."
    The procedure for creating the required nested tag is: wrap the Username and Password simple (i.e., without nesting) tags into SoapVar. The result should then be wrapped into another SoapVar, tagged as UsernameToken, which is placed inside the tag. Finally, this tag is placed inside the SOAP header.
    In this case the required wrapping operation is two levels deep. In general the approach described here may also be applied to creating complex SOAP objects of arbitrary nesting levels.
    In the next section, we describe the actual implementation.

    Coding basic security in PHP
    The Security tag of the SOAP header is assembled using the bottom-up approach. First, the UserName and Password tags are expressed as XSD strings. Listing 2 assumes that the $username and $password variables are properly assigned:

    Listing 2. Creating XSD strings from credentials
    $nameSpace = "http://schemas.xmlsoap.org/ws/2003/06/secext";//WS-Security namespace
    $userT = new SoapVar($username, XSD_STRING, NULL, $nameSpace, NULL, $nameSpace);
    $passwT = new SoapVar($password, XSD_STRING, NULL, $nameSpace, NULL, $nameSpace);

    In order to express tag with nested and tags inside, we need to define the intermediate class with private data members: $Username and $Password. Note that while the defined class may have an arbitrary name, the data members must have the same names as the corresponding XML tags. Our implementation creates a class named UsernameT1. The data members are assigned by the constructor.

    Listing 3. The UsernameT1 class definition
    class UsernameT1 {
     private $Username; //Name must be  identical to corresponding XML tag in SOAP header
     private $Password; // Name must be  identical to corresponding XML tag in SOAP header 
     function __construct($username, $password) {
     $this->Username=$username;
     $this->Password=$password;
          }
    }

    Now, we can create the content of the complex XML tag as the SoapVar, whose type is not an XSD_STRING, but SOAP_ENC_OBJECT. In this case (unlike when creating an XSD string) the name of the created XML tag is also passed to the SoapVar constructor.

    Listing 4. Creating a UserNameT1 instance and wrapping it into SoapVar
    $tmp = new UsernameT1($userT, $passwT);
    $uuT = new SoapVar($tmp, SOAP_ENC_OBJECT, NULL, $nameSpace, 'UsernameToken', $nameSpace);

    This SoapVar will be wrapped into a UserNameT2 class with the private data member $UsernameToken. Again, the defined class may have an arbitrary name, but the data member must have the same name as the corresponding XML tag.

    Listing 5. The UsernameT2 class definition
    class UserNameT2 {
      private $UsernameToken;  
      //Name must be  identical to corresponding XML tag in SOAP header
      function __construct ($innerVal){
      $this->UsernameToken = $ innerVal;
      }
    }

    A UserNameT2 instance is created and wrapped into a SoapVar:

    Listing 6. Creating a UserNameT2 instance and wrapping it into SoapVar
    $tmp = new UsernameT2($uuT);
    $userToken = new SoapVar($tmp, SOAP_ENC_OBJECT, NULL, $nameSpace, 
     'UsernameToken', $nameSpace);

    The UsernameToken object is attached to the parent XML tag, using the same method again, and the SoapHeader is now constructed:

    Listing 7. Constricting the security header
    $secHeaderValue=new SoapVar($userToken, SOAP_ENC_OBJECT, NULL, $nameSpace, 
                        'Security', $nameSpace);
    $secHeader = new SoapHeader($nameSpace, 'Security', $secHeaderValue);

    This header will be passed to the method __soapCall() of the SoapClient class as an element in the input_headers array. For example, when the security is the only input header:

    Listing 8. Using the security header
    $client->__soapCall($theMethodName, $theMethodSignature, null, $secHeader );
     
    Creating the method's signature
    Calling __soapCall includes one additional task: the construction of the method's passed arguments, also known as the method's signature. In the case of a simple list of parameters, this is a trivial task which is documented in the PHP Online Manual (see the Resources). This section deals with the more complex case, where the Web service's method includes arrays and object parameters and these parameters may also have members that are themselves arrays or objects.
    As with the security header, we need to create a nested tag by using the SOAP extension's SoapVar data structure. This is needed for each parameter that is an object, and for each object member of any passed array or object.
    The next section introduces a few methods that are capable of packing a complex set of parameters into a valid __soapCall arguments parameter.
    Coding a method signature in PHP
    This section lists code for packing PHP parameters into a SOAP call. In order to do that, a generic definition of input is required. We have defined the input as a PHP array of parameters. The array may include simple types, objects, arrays, nested objects, and nested arrays.
    For example, consider the case of a Web services method storeProblemReport() that gets three parameters: severity (integer), errors (an array of strings), and owner (a record with a member that is also a record). The WSDL part of such a method may contain the following lines:

    Listing 9. Example method and parameters - WSDL definition
    
     
      
      
     
    
     
      
      
     
    
      
       
        
        
        
       
      

    An example of possible values and a value input may be:

    Listing 10. Assigning the example parameters
    $fileInfo->fname = '/usr/src/myDir/getToken.php'
    $fileInfo->line = 7;
    $theOwner->component = 'Parser';
    $theOwner->location = $fileInfo;
    $argumentsList = array ('severity'=> 7,
                            'errors' => array ("empty token","read error", "File open error"),
                            'owner'=> $theOwner));

    Creating the required arguments for soapCall is done by the CreateMethodSignature() function below:

    Listing 11. Creating the required arguments
    function createMethodSignature($theMethod, $paramAr) {
        if (null == $paramAr) 
            return array($theMethod =>null);
        $used = null;
        foreach ($paramAr as $name => $value) {
               if (is_array($value) || is_object($value)) {
                   $used[$name] = createMixedValueSignature($value);
               } else {
                   $used[$name] =  $value;
               }
       }
       return array($theMethod =>$used);
    }
    //---------------------------------------------------------------------
    // inner routine: packing an inner complex parameter into a  SOAP-valid representation 
    function createMixedValueSignature($MixedVals) {
        $mixedParamsList = null;
        if (is_object($MixedVals)) {
            foreach ($MixedVals as $name => $value) {
                  if (is_object($value) || is_array($value)) {
                   $mixedParamsList->$name = createMixedValueSignature($value);
              } else {
                $mixedParamsList->$name = $value;
              }
            }
            // an object needs to be passed as SoapVar
            return new SoapVar($mixedParamsList, SOAP_ENC_OBJECT , NULL, NULL);
        } else { // an array
            foreach ($MixedVals as $name => $value) {
               if (is_object($value) || is_array($value)) {
                 $mixedParamsList[$name] = createMixedValueSignature($value);
               } else {
                 $mixedParamsList[$name] = $value;
               }
            }
            // an array is passed as is !!
            return $mixedParamsList;
        }
    }

    Note that arrays of simple data types or arrays (arrays that do not include objects) need no special treatment. The only reason for processing arrays with the recursive function createMixedValueSignature() is the possibility of inner PHP objects. CreateMethodSignature(), with the above input, is used for producing a valid SOAP argument:

    Listing 12. Calling the example method
    $theMethodSignature = CreateMethodSignature('storeProblemReport', $argumentsList);
    $client->__soapCall('storeProblemReport', $theMethodSignature, null, $secHeader );
     

Calling XML Web Services from Windows Forms

A new aspect of Visual Studio is XML Web services, which provides the ability to exchange messages in a loosely coupled environment using standard protocols such as HTTP, XML, XSD, SOAP, and WSDL. The messages can be structured and typed or loosely defined. Because Web services are based on standard protocols, your Web service applications can communicate with a broad variety of implementations, platforms, and devices. For more information, see XML Web Services in Managed Code.
Web services can be used to enhance the functionality of Windows Forms. Connecting Windows Forms to Web services is as simple as making calls to Web service methods, which are processed on a server that then returns the results of the method call.
There are two types of Web service methods, synchronous and asynchronous. When synchronous Web service methods are called, the caller waits for the Web service to respond before continuing operations. When asynchronous Web service methods are called, you can continue to use the calling thread while waiting for the Web service to respond. This allows you to use the existing set of threads efficiently in the client application. For more information about working with synchronous and asynchronous Web service methods, see Accessing XML Web Services in Managed Code.

Synchronous Web Service Methods

A call to a synchronous Web service method involves calling the method and waiting for the computation to occur on the server and return a value before continuing with the rest of the code in the Windows Form.
To create an XML Web service
  1. Create a Web service application. For more information, see Creating XML Web Services in Managed Code.
  2. In Solution Explorer, right-click the .asmx file and choose View Code.
  3. Create a Web service method that does addition. This following Web service method will take two integers and add them, returning the sum:
    ' Visual Basic
     Public Function WebAdd(ByVal x As Integer, ByVal y As Integer) As Integer
       Return x + y
    End Function
    
    // C#
    [WebMethod]
    public int WebAdd(int x, int y)
    {
       return x + y;
    }
  4. Create another Web service method that does multiplication. The following Web service method will take two integers and multiply them, returning the product:
    ' Visual Basic
     Public Function WebMultiply(ByVal x As Integer, ByVal y As Integer) As Integer
       Return x * y
    End Function
    
    // C#
    [WebMethod]
    public int WebMultiply(int x, int y) 
    {
       return x * y;
    }
  5. From the Build menu, choose Build Solution. You can also browse to the .asmx file you created in this project to learn more about Web services. Your Web service is now available for calling from a Windows Form.
To call an XML Web service synchronously
  1. Create a new Windows application. For more information, see Creating a Windows Application Project.
    Security Note   Calls to Web Methods require a privilege level granted by the System.Net.WebPermisson class. If you are running in a partial-trust context, the process might throw an exception. For more information, see Code Access Security Basics.
  2. Add a reference to the Web service created above. For details, see Adding and Removing Web References.
  3. From the Toolbox, add three TextBox controls and two Button controls. The text boxes will be for the numbers, and the buttons will be used for the calculations and to call the Web service methods.
  4. Set the properties of the controls as follows:
    ControlPropertyText
    TextBox1Text0
    TextBox2Text0
    TextBox3Text0
    Button1TextAdd
    Button2TextMultiply
  5. Right-click the form and choose View Code.
  6. Create an instance of the Web service as a member of the class. You need to know the name of the server where you created the Web service above.
    ' Visual Basic
    ' Replace localhost below with the name of the server where
    ' you created the Web service.
    Dim MathServiceClass As New localhost.Service1()
    
    // C#
    localhost.Service1 MathServiceClass = new localhost.Service1();
  7. Create an event handler for Button1's Click event. For details, see Creating Event Handlers on the Windows Forms Designer.
    ' Visual Basic
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ' Create instances of the operands and result.
       Dim x, y, z As Integer
    ' Parse the contents of the text boxes into integers.
       x = Integer.Parse(TextBox1.Text)
       y = Integer.Parse(TextBox2.Text)
    ' Call the WebAdd Web service method from the instance of the Web service.
       z = MathServiceClass.WebAdd(x, y)
       TextBox3.Text = z.ToString
    End Sub
    
    // C#
    private void button1_Click(object sender, System.EventArgs e)
    {
    // Create instances of the operands and result.
       int x, y, z;
    // Parse the contents of the text boxes into integers.
       x = int.Parse(textBox1.Text);
       y = int.Parse(textBox2.Text);
    // Call the WebAdd Web service method from the instance of the Web service.
       z = MathServiceClass.WebAdd(x, y);
       textBox3.Text = z.ToString();
    }
    Visual C# Note   Be sure that the necessary code to enable the event handler is present. In this case, it would be similar to the following:
    this.button1.Click += new System.EventHandler(this.button1_Click);
  8. Create an event handler for Button2's Click event in the same fashion, and add the following code.
    ' Visual Basic
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    ' Create instances of the operands and result.
       Dim x, y, z As Integer
    ' Parse the contents of the text boxes into integers.
       x = Integer.Parse(TextBox1.Text)
       y = Integer.Parse(TextBox2.Text)
    ' Call the WebMultiply Web service method from the instance of the Web service.
       z = MathServiceClass.WebMultiply(x, y)
       TextBox3.Text = z.ToString
    End Sub
    
    // C#
    private void button2_Click(object sender, System.EventArgs e)
    {
    // Create instances of the operands and result.
       int x, y, z;
    // Parse the contents of the text boxes into integers.
       x = int.Parse(textBox1.Text);
       y = int.Parse(textBox2.Text);
    // Call the WebAdd Web service method from the instance of the Web service.
       z = MathServiceClass.WebMultiply(x, y);
       textBox3.Text = z.ToString();
    }
    Visual C# Note   Be sure that the necessary code to enable the event handler is present. In this case, it would be similar to the following:
    this.button2.Click += new System.EventHandler(this.button2_Click);
  9. Press F5 to run your application. Enter values into the first two text boxes. When you press the Add button, the third text box should show their sum. When you press the Multiply button, the third text box should show their product.
    Note   The first call to a Web service takes a while for the server to process, because the Web service is instantiated on the server. Keep this in mind when pressing the buttons in your application. This lag is dealt with in the section below.

Asynchronous Web Services

When you call asynchronous Web service methods, the application continues to run while waiting for the Web service to respond. This allows you to use the resources efficiently in the client application. This is a far more resource-savvy way to implement Web services within your Windows application.
For details, see Accessing an XML Web Service Asynchronously in Managed Code.

Calling Web Service using ASP.NET

Shows how to call a Web service inside ASP.NET Web project using a test published Web service: Extentrix Web Services 2.0 Application Edition

Introduction

Web services signal a new age of trivial distributed application development. While Web services are not intended nor do they have the power to solve every distributed application problem, they are an easy way to create and consume services over the Internet. One of the design goals for Web Services is to allow companies and developers to share services with other companies in a simple way over the Internet.
Web services take Web applications to the next level.
Using Web services, your application can publish its function or message to the rest of the world.
Web services use XML to code and decode your data and SOAP to transport it using open protocols.
With Web services, your accounting departments Win 2K servers' billing system can connect with your IT suppliers UNIX server.
Using Web services, you can exchange data between different applications and different platforms.
With Microsoft .NET platform, it is a simple task to create and consume Web Services. In this article, I am going to show how to call a published Web service inside a Web project.
I use a test published Web service; Extentrix Web Services 2.0 Application Edition that Extentrix published for the developer community to help them in testing and developing.
So I'll simply explain the functions of this Web services APIs. In general Extentrix Web Services for Citrix Presentation Server helps you get information about a published application for a specific client with the specified details, server types, and client types. It also returns the ICAfile description to be used to launch an application with a given parameter and checks the user's credentials and returns true if they are valid.
For more information, visit this website.
You can find more samples, use this web service, and test it here.

Background

Knowledge in ASP.NET is preferred.

Using the Code

Simple Steps to Consume a Web Service

  1. Create a Web Site project
  2. Add a Web Reference
  3. Call the Web services APIs inside the code

First Step: Create a Web Site Project

  1. To create a new Web Site project, choose New from File menu, then choose Web Site as shown below:

  2. Choose ASP.NET Web Site. Name the project and click OK:

Second Step: Add a Web Reference

After creating the Web Site project, it�s time to add a Web reference for our Web service.
  1. In the solution explorer, right click the project node, choose Add Web Reference:

  2. A new window with Add Web Reference title will be opened:

    In the URL field, insert the URL for the Web service. In this tutorial, as I mentioned before, I'll use the test published Web services from Extentrix: �Extentrix Web Services 2.0 � Application Edition�.
    After clicking the Go button, you will see the Web services APIs.
  3. Set a name for your Web service reference in the Web reference name field and click Add Reference:

Third Step: Call the Web Services APIs Inside the Code

After successfully adding to the Web service, now we are ready to call the Web services APIs inside our project.
  1. First we need to add the added Web reference to our class.
    ExtentrixWS is the name of the added Web service from the previous step.

    Collapse
    using ExtentrixWS;  
  2. Create a proxy object for our added Web service reference, where ExtentrixWebServicesForCPS is the name of the Web Services.

    Collapse
    //define a Web service proxy object.
    private ExtentrixWS.ExtentrixWebServicesForCPS proxy;
  3. As I explained before, we need credentials to pass to the Citrix Presentation Server. We will pass these credentials through the Web services APIs:

    Collapse
    //define a Citrix Presentation Server Credentials object
    private Credentials credentials;
    Initialize the proxy and the credentials objects:
    Collapse
    //initialize objects
    proxy = new ExtentrixWebServicesForCPS();
    credentials = new Credentials();
  4. Set the values for Citrix credentials. I set the credentials values for the test of Extentrix Web Service:

    Collapse
    //set credentials
    //these values are according to Citrix testdrive presentation server
    //for which Extentrix published a web service for developers to use it
    //as a test web service.
          credentials.Password = "demo";
          credentials.UserName = "citrixdesktop";
          credentials.Domain = "testdrive";
    
    //because it is a sample, we will use no encryption method.
    //so the password will be sent as a clear text.
          credentials.PasswordEncryptionMethod = 0;
    
    //set the domain type to windows domain
          credentials.DomainType = 0;
    Now we can call any Web services available. It is as simple as calling any ordinary function.
  5. Call the GetApplicationsByCredentialsEx Web service. This web service takes the following parameters:
    • Credentials: Citrix Credential to access Citrix Presentation Server Farm
    • Client Name: Pass your machine name
    • Client IP: Pass your machine IP
    • Desired Details : Details you asked for
    • Server Types: Pass �all�
    • Client Types: Pass �all�
I am not going to explain Extentrix Web services APIs, if you are interested, you can go here and look for it.
This API returns an array of ApplicationItemEx. This class will be built for you once you add the Web reference.
This class contains the published application properties. I used this Web service to get all the published applications, and then I created an ImageButton for each application.
Collapse
// 1) Get all the published applications list by calling GetApplicationsByCredentialsEx 
//    web service.
// 2) create an ImageButton for each application
// 3) Create Image for the application
// 4) Add it to the AppList panel.
// 5) Set the event handler for each ImageButton, so when clicking it the associated 
//    application will run calling the web service
ApplicationItemEx[] items = proxy.GetApplicationsByCredentialsEx
    (credentials, Request.UserHostName,
Request.UserHostAddress, new  string[] { "icon","icon-info"}, new string[]{ "all" },
new string[] { "all"});

//loop for each published application
for (int i = 0; i < items.Length; i++) {
//create the ImageButton
System.Web.UI.WebControls.ImageButton app = new System.Web.UI.WebControls.ImageButton();

//set the Image URL to the created image
app.ImageUrl = createIcon(items[i].InternalName,items[i].Icon);

//set the ToolTip to the name of the published application
app.ToolTip = items[i].InternalName;

//add the ImageButton to the AppList panel
AppList.Controls.Add(app);

//set the event handler for the ImageButton.
app.Click += new
System.Web.UI.ImageClickEventHandler(this.OnApplicationClicked);
}
Finally, another example in calling a Web service is to launch the published application.
In this example, in the event handler of the applications ImageButtons I launch the clicked application.
I get the ICA file content by calling LaunchApplication Web service. Then I write the ICA file content to the response to launch the application.
Collapse
private
void OnApplicationClicked (object sender, System.EventArgs e)
{
    ServicePointManager.Expect100Continue = false;

    // Get the event source object.
    System.Web.UI.WebControls.ImageButton app = 
        (System.Web.UI.WebControls.ImageButton)sender;

    //Get the file ICAfile content by calling LaunchApplication web service.
    string = proxy.LaunchApplication(app.ToolTip, credentials, Request.UserHostName, 
            Request.UserHostAddress);

    //Set the response content type to "application/x-ica" to run the file.
    Response.ContentType = "application/x-ica";

    //Run the application by writing the file content to the response.
    Response.BinaryWrite(Response.ContentEncoding.GetBytes(ica));        
    Response.End();
}