Web Services Software Factory tutorial (5 of 5)

We have landed. This is tutorial part 5 of 5. In parts 1-4 (part 1 starts here) we created a web service that does some simple encryption, decryption, and hashing. Before beginning this part of the tutorial, please create a virtual directory in IIS pointing to the Web Service project that you set up in part 4 and make it a .Net application. I named the virtual directory CryptService and as such I can browse to http://localhost/CryptService/CryptService.svc and see the service.

Create a new C# Console Application. I named my application TestCryptService. Right click on your project in solution explorer and select “Add Service Reference”. Put your URL to your service in and click Go. After a few moments, you should see what was discovered about your service. Change the namespace to CryptService and click Ok.
Add Service Reference to Project

Notice that all of the binding information has been added to your app.config. If you look at the endpoint section, you will see that /basic was added to the end of the CryptService.svc. I mentioned last time that that allows you to create multiple endpoints to the same point, and just use different bindings, etc.

<? xml version="1.0" encoding="utf-8"  ?>
< CONFIGURATION >
    
< SYSTEM.SERVICEMODEL >
        
< BINDINGS >
            
< BASICHTTPBINDING >
                
< BINDING  name ="Crypt"  useDefaultWebProxy ="true"  transferMode ="Buffered"  textEncoding ="utf-8"  messageEncoding ="Text"  maxReceivedMessageSize ="65536"  maxBufferPoolSize ="524288"  maxBufferSize ="65536"  hostNameComparisonMode ="StrongWildcard"  bypassProxyOnLocal ="false"  allowCookies ="false"  sendTimeout ="00:01:00"  receiveTimeout ="00:10:00"  openTimeout ="00:01:00"  closeTimeout ="00:01:00" >
                    
< READERQUOTAS  maxNameTableCharCount ="16384"  maxBytesPerRead ="4096"  maxArrayLength ="16384"  maxStringContentLength ="8192"  maxDepth ="32"   />
                    
< SECURITY  mode ="None" >
< TRANSPORT  realm =""  proxyCredentialType ="None"  clientCredentialType ="None"   />
                        
< MESSAGE  clientCredentialType ="UserName"  algorithmSuite ="Default"   />
                    
</ SECURITY >
                
</ BINDING >
            
</ BASICHTTPBINDING >
        
</ BINDINGS >
        
< CLIENT >
            
< ENDPOINT  name ="Crypt"  contract ="CryptService.CryptService"  bindingConfiguration ="Crypt"  binding ="basicHttpBinding"  address ="http://localhost/CryptService/CryptService.svc/basic"   />
        
</ CLIENT >
    
</ SYSTEM.SERVICEMODEL >
</ CONFIGURATION >
Now, within the Program.cs file that was created for you, enter in this code:

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;
using  TestCryptService.CryptService;

namespace  TestCryptService
{
    
class  Program
    {
        
static   void  Main( string [] args)
        {
            TestDesEncryption();
            TestRijndaelEncryption();
            TestMd5Hash();
            TestSha256Hash();
        }

        
///   <SUMMARY>
        
///  This method is the only one that is commented.  All of the other methods function
        
///  in exactly the same way.  The only reason they are included is for completeness,
        
///  so that all of our server methods are hit.
        
///   </SUMMARY>
         static   void  TestDesEncryption()
        {
            
//  The CryptServiceClient is the proxy created automatically for you.
            
//  It would be called CryptServiceClient whether you used svcutil.exe
            
//  yourself or you added a service reference.
            CryptServiceClient client  =   new  CryptServiceClient();

            EncryptionObject encryptionObject 
=   new  EncryptionObject();

            encryptionObject.EncryptionAlgorithm 
=  EncryptionAlgorithm.DES;
            encryptionObject.Text 
=   " Testing our DES Encryption " ;

            
//  Call the EncryptString method and get back our encrypted value
             string  encryptedText  =  client.EncryptString(encryptionObject);

            encryptionObject 
=   new  EncryptionObject();
            encryptionObject.EncryptionAlgorithm 
=  EncryptionAlgorithm.DES;
            encryptionObject.Text 
=  encryptedText;

            
//  Call the DecryptString method and get back our plain text
             string  plainText  =  client.DecryptString(encryptionObject);

            
//  Output the values and see what we get.
            Console.WriteLine( " -- DES -- " );
            Console.WriteLine(
" Encrypted Text: {0} " , encryptedText);
            Console.WriteLine(
" Plain Text: {0} " , plainText);
            Console.WriteLine();
        }

        
static   void  TestRijndaelEncryption()
        {
            CryptServiceClient client 
=   new  CryptServiceClient();
            EncryptionObject encryptionObject 
=   new  EncryptionObject();

            encryptionObject.EncryptionAlgorithm 
=  EncryptionAlgorithm.Rijndael;
            encryptionObject.Text 
=   " Testing our Rijndael Encryption " ;

            
string  encryptedText  =  client.EncryptString(encryptionObject);

            encryptionObject 
=   new  EncryptionObject();
            encryptionObject.EncryptionAlgorithm 
=  EncryptionAlgorithm.Rijndael;
            encryptionObject.Text 
=  encryptedText;

            
string  plainText  =  client.DecryptString(encryptionObject);

            Console.WriteLine(
" -- Rijndael -- " );
            Console.WriteLine(
" Encrypted Text: {0} " , encryptedText);
            Console.WriteLine(
" Plain Text: {0} " , plainText);
            Console.WriteLine();
        }

        
static   void  TestMd5Hash()
        {
            CryptServiceClient client 
=   new  CryptServiceClient();
            HashObject hashObject 
=   new  HashObject();

            hashObject.HashType 
=  HashType.MD5;
            hashObject.StringToHash 
=   " Some string to hash " ;

            
string  md5Hash  =  client.HashString(hashObject);

            Console.WriteLine(
" -- MD5 Hash -- " );
            Console.WriteLine(
" Original String: {0} " , hashObject.StringToHash);
            Console.WriteLine(
" Hashed Value: {0} " , md5Hash);
            Console.WriteLine();
        }

        
static   void  TestSha256Hash()
        {
            CryptServiceClient client 
=   new  CryptServiceClient();
            HashObject hashObject 
=   new  HashObject();

            hashObject.HashType 
=  HashType.SHA256;
            hashObject.StringToHash 
=   " Some string to hash " ;

            
string  shaHash  =  client.HashString(hashObject);

            Console.WriteLine(
" -- Sha256 Hash -- " );
            Console.WriteLine(
" Original String: {0} " , hashObject.StringToHash);
            Console.WriteLine(
" Hashed Value: {0} " , shaHash);
            Console.WriteLine();
        }
    }
}

When I run this code, I see this output:
Test Console Output

That is IT! If you’ve made it this far and see that output, you are done. You are now ready to use the Web Services Software Factory to make web services yourself. As always, if you didn’t get these results, double check your steps and if you are still having problems, leave me a comment and I will try to help you.

All code was written as throwaway code, so I realize that it could use some refactoring and some optimization. The point of this tutorial was to expose you to using the WSSF in more than a “Hello World” kind of way and to at least mimic the real world with something a little bit fun.

 

reprint [Pete on Software]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值