Advise on protocol

  • Thread starter Thread starter Lee
  • Start date Start date
L

Lee

I will be building a pocket pc based app for use with our existing
appliction. The device would see a lot of use and traffic between it
and a server application could be significant at peak times.

I went through the simple webservices walkthrough and that seems like
the most straight forward way to implement this application. It would
be used on a local wireless lan, but distances from access points could
stretch and will obviously effect the bandwidth because of the signal.

I'm wondering if a binary protocol would be best for performance, but I
like the idea of a webservice since its more "open" and companies that
partner with us, like to have interfaces into our data stores. Once I
get more familiar with VS and CF I will have to do some testing. In
the meantime, I was hoping to get some broad feedback.

BTW, its not necessarily that the AMOUNT of data would be significant,
not large dataset or blobs being transferred. The number of requests
would be pretty much constant at peak times, but smaller pieces of data
(xml datasets passed as strings, I think) would be sent back and forth.

Thank you,
 
Hi,

As you imagine, this has to be prototyped and evaluated "in person." Even
though XML web services can be chatty, and a little bloated (well, perhaps
very bloated), if they work acceptably, they certainly are the way to go.
The ease of implementation with a standard web service, and its potential
for "openness" speaks volumes.

Without some metrics for the performance that you need, and the amount of
data involved, it is tough to make any concrete statements. My advice is to
give it a try, then make some worst-case assumptions about how it may
degrade in a loaded, production environment.

Dick

--
Richard Grier (Microsoft Visual Basic MVP)

See www.hardandsoftware.net for contact information.

Author of Visual Basic Programmer's Guide to Serial Communications, 4th
Edition ISBN 1-890422-28-2 (391 pages) published July 2004. See
www.mabry.com/vbpgser4 to order.
 
Dick Grier enlightened me by writing:
Without some metrics for the performance that you need, and the
amount of data involved, it is tough to make any concrete statements.
My advice is to give it a try, then make some worst-case assumptions
about how it may degrade in a loaded, production environment.

Dick

Thanks, Dick. I agree, there will have to be some tests. As I
mentioned, it will be mostly small request/response pairs. Below is an
example of how we have implemented something similar in Delphi 6 using
straight TCP sockets. The substance of the request and response
packets below are similar to what we would like to accomplish through
..net and possibly web services.

Additional question: I assume that since WebServices can work on top
of http, it can also work over top of https (ssl) as well?

Thanks again,

Lee


// Request
<?xml version="1.0" encoding="utf-16"?>
<Request>
<Operations>
<Command>
<OpType>StructuredData</OpType>
<Params>
<FunctionName>sales_single_sale</FunctionName>
<SaleID>4</SaleID>
<SaleDate />
</Params>
</Command>
</Operations>
</Request>

// Ressponse
<?xml version="1.0" encoding="utf-16"?>
<Result>
<ResponseCode>0</ResponseCode>
<ResponseText>OK</ResponseText>
<ResponseItems>
<sales_single_sale>
<SaleID>4</SaleID>
<TableID>0</TableID>
<OrderTime>05/25/2005 15:31:29</OrderTime>
<OrderType>QuickService/OrderType>
<OrderSub>23.45</OrderSub>
<Tax1>1.45</Tax1>
<Tax2>0.00</Tax2>
<AmusementTax>0.00</AmusementTax>
<AlcoholTax>0.00</AlcoholTax>
<AutoGrat>0.00</AutoGrat>
<OrderTotal>24.90</OrderTotal>
<EmployeeID>5</EmployeeID>
<StationID>1</StationID>
<StoreNumber>1</StoreNumber>
<NumberOfGuests>0</NumberOfGuests>
<DriverID>5</DriverID>
<ShiftNumber>2</ShiftNumber>
<CustomerID>0</CustomerID>
<Items>
<SaleItem>
<ProductID>3768</ProductID>
<ItemPrice>8.50</ItemPrice>
<ProductDescription>Fire House Wings 24</ProductDescription>
</SaleItem>
<SaleItem>
<ProductID>3582</ProductID>
<ItemPrice>5.25</ItemPrice>
<ProductDescription>Spinach and Artichoke
Dip</ProductDescription>
</SaleItem>
<SaleItem>
<ProductID>3576</ProductID>
<ItemPrice>5.95</ItemPrice>
<ProductDescription>Shooters Strip Tees 6</ProductDescription>
</SaleItem>
<SaleItem>
<ProductID>3579</ProductID>
<ItemPrice>3.75</ItemPrice>
<ProductDescription>Shooters Frippin
Chips</ProductDescription>
</SaleItem>
</Items>
<Discounts />
<Payments />
</sales_single_sale>
</ResponseItems>
</Result>
 
Hi,

I'm not sure about SSL.

BTW, you might be interested in this article:
http://www.businessanyplace.net/?p=wscompress

Your particular data look fairly small, so unless it grows quite a bit, is
sounds manageable via a web service.

Dick
--
Richard Grier (Microsoft Visual Basic MVP)

See www.hardandsoftware.net for contact information.

Author of Visual Basic Programmer's Guide to Serial Communications, 4th
Edition ISBN 1-890422-28-2 (391 pages) published July 2004. See
www.mabry.com/vbpgser4 to order.
 
You can consume a web service that uses SSL from the .NET Compact
Framework 1.0. You will need to implement your own Certificate Policy
(so that you can manually validate the certificates). Two links:
http://www.opennetcf.org/forums/topic.asp?TOPIC_ID=363&SearchTerms=ICertificatePolicy

http://www.explosivedog.com/blog/archive/2004/06/21/348.aspx

Also,these posts may be helpful, too:
http://blog.opennetcf.org/ayakhnin/CommentView.aspx?guid=ae434e4b-12b0-4c12-8b43-c249ab2facce
http://groups-beta.google.com/group...icy+Jan+Tielens&rnum=1&hl=en#de7e615086cbcbd1

FWIW, here's a quick example I did (a form with one button):

using System;
using System.Collections;
using System.Data;
using System.Drawing;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Windows.Forms;

namespace WSSSL_tester
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
private System.Windows.Forms.MainMenu mainMenu1;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

System.Net.ServicePointManager.CertificatePolicy = new
TrustAllCertificatePolicy();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.button1 = new System.Windows.Forms.Button();
//
// button1
//
this.button1.Location = new System.Drawing.Point(96, 56);
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.Controls.Add(this.button1);
this.Menu = this.mainMenu1;
this.Text = "Form1";

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>

static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
ngb.HelloService hs = new ngb.HelloService();
hs.Url = @"https://www.mysite.com/wsHello/HelloService.asmx";
MessageBox.Show(hs.HelloWorld());
}
}

public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
public TrustAllCertificatePolicy() {}

public bool CheckValidationResult(ServicePoint sp, X509Certificate
cert,WebRequest req, int problem)

{
return true;
}
}
}

HTH,
Nino
 
Nino Benvenuti enlightened me by writing:
You can consume a web service that uses SSL from the .NET Compact
Framework 1.0. You will need to implement your own Certificate
Policy (so that you can manually validate the certificates). Two
links:
http://www.opennetcf.org/forums/topic.asp?TOPIC_ID=363&SearchTerms=ICe
rtificatePolicy
http://www.explosivedog.com/blog/archive/2004/06/21/348.aspx

Also,these posts may be helpful, too:
http://blog.opennetcf.org/ayakhnin/CommentView.aspx?guid=ae434e4b-12b0
-4c12-8b43-c249ab2facce
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.
webservices/browse_thread/thread/e6f382917e83b683/de7e615086cbcbd1?q=W
eb+Service+SSL+Certificate+Policy+Jan+Tielens&rnum=1&hl=en#de7e615086c
bcbd1

Thank you Nino and Dick ask as well.

We will be using self-certs generated through http://www.openssl.org/
libraries which we use now for our Delphi apps.

Any links to setting up a webservice using ssl?

Great links, BTW. Thank you.
 
Assuming that you are using ASP.NET / IIS this link is a good start on
setting up SSL:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT16.asp

...and if you want to secure your web services in other means
(authentication and authorization options), check out:
http://msdn.microsoft.com/library/d...guide/html/cpconSecuringASPNETWebServices.asp

Of course, any queries in that realm need to be directed to the
microsoft.public.dotnet.framework.webservices and
microsfot.dotnet.framework.aspnet.webservices groups:
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.webservices?hl=en
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.aspnet.webservices?hl=en

HTH,
Nino
 
Nino Benvenuti enlightened me by writing:
Of course, any queries in that realm need to be directed to the
microsoft.public.dotnet.framework.webservices and
microsfot.dotnet.framework.aspnet.webservices groups:
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.
webservices?hl=en
http://groups-beta.google.com/group/microsoft.public.dotnet.framework.
aspnet.webservices?hl=en

Thanks, Nino. I will direct further queries of that type to the
appropriate groups.
 
Back
Top