How complex is this, really?

S

sam

I have been a Window application developer for over 13 years. I know
SQL though I have been able to avoid it for a vast majority of my
career. I understand the basics of ASP.Net and Web servers, actually
put together a VERY basic Asp.net web site for my little business. It
was basically a static site that I used ASP.Net to implement a fancy
navigation system. But now I am wondering if I am biting off more
then I can chew...

My son's Boy Scout Troop has one big fund raiser each year and I have
volunteered to revamp the order entry/tracking software. Two people
from their respected homes will enter the orders into the system
through out the week. The night of the meeting orders will be entered
on a laptop that is disconnected from the Internet.

My whole strategy is to leverage what I know best, Windows.Form
development. I will develop a basic Windows Application in .Net 3.5
to enter orders. Originally I had some crazy ideas to make the data
store XML and sync everything myself. Then last night I learned of
the existence of SQL Server Compact 3.5 and Sync Services.

My thought now is to leverage SQL Server Compact 3.5, Sync Services,
and Web Services. All the web service would be doing is keeping four
different tables in sync for a handful of known users. My web hosting
account is .Net 2.0 but I only have access to a MySQL database. One
of the other things the web service is going to have to do is allow
large (500K ~ 4M) images to be uploaded (I am going to have the order
forms scanned into the system to ease order verification).

It sounds like pretty straight forward web service to me, but is it?
One of my issues is I don't know how to contend with security.

Hay, is there anyone out there that might be willing to give me hand
in this?

Sam
 
B

Barrie Wilson

Sounds like a lot of effort for a Boy Scout app that doesn't need to do much
nor for very long, Sam ... but I like the idea of doing a hybrid
Winforms/Web Services app as a general matter ... you really need to scan
order forms for verification? sounds like too much digital bling for what
you're doing here ... but maybe you want to take the opportunity to work on
that sort of thing?

Seems to me you could more easily just use HttpWebRequest to POST the home
orders from the WinForms app to MySQL via a simple ASP or ASP.NET page
during the week and then just merge that data with the table(s) from the
meeting ... it's a one-time thing, right? But that wouldn't be as much fun
or as good of a tech workout ...
 
S

Scott Roberts

If it were me, I'd just create an asp.net web app with a SQL backend. Users
can enter orders on a "public" web site up until the event (hosting is dirt
cheap). Also install the web app on the notebook (I assume it's yours).

The night of the event, I'd back up the SQL database and restore it to the
notebook. You can run the web app locally (on the notebook) the night of the
meeting and continue to enter orders as usual.

After the event, you can move the database back to the hosted site (if
necessary).
 
S

sam

Sounds like a lot of effort for a Boy Scout app that doesn't need to do much
nor for very long, Sam ...

The event happens once a year, so the solution will be used annually.
you really need to scan order forms for verification? sounds like too much
digital bling for what you're doing here ... but maybe you want to take the
opportunity to work on that sort of thing?

It is two fold, I know imaging well, I am writing image acquisition
software during the day and I am a professional photographer at night,
so the concept is right up my ally. From the business side of things,
the real problem I am trying to solve is this:

There is one day the product is delivered by all the scouts to all the
customers. There is someone at a central location that is able to
take calls when customers call and complain they did not get the
correct items. In the past they had to figure out which order number
the person was, find the paper order to determine of there was an
error in entering the order or if the customer marked the wrong thing.

My solution is to scan in that order form so that it is easy for
others to double check that it WAS entered correctly. More
importantly, on delivery day, make is a one click stop to confirm what
the customer wrote down.

P.S. Normally even of the customer marked down the wrong thing, the
troop tries their best to get the customer what they really wanted;)
Seems to me you could more easily just use HttpWebRequest to POST the home
orders from the WinForms app to MySQL via a simple ASP or ASP.NET page
during the week and then just merge that data with the table(s) from the
meeting ... it's a one-time thing, right? But that wouldn't be as much fun
or as good of a tech workout ...

I am really very open to any approach that is fast and easy. Can you
give me a bit more detail on HttpWebRequest? I looked it up and it
looks like a generic way to post data to a web server. Would not a
Web Service be easier because it will do all the packaging and
unpackaging of the data for me? It is my understanding that
WebServices is simply Microsoft's version of SOAP which is simply an
interface to make function calls and to interact with classes over
HTTP. Am I mistaken?

Sam
 
S

sam

If it were me, I'd just create an asp.net web app with a SQL backend. Users
can enter orders on a "public" web site up until the event (hosting is dirt
cheap). Also install the web app on the notebook (I assume it's yours).

The night of the event, I'd back up the SQL database and restore it to the
notebook. You can run the web app locally (on the notebook) the night of the
meeting and continue to enter orders as usual.

After the event, you can move the database back to the hosted site (if
necessary).

Well, the thing is... I don't own a laptop:(

The other thing I did not mention is that the orders/sales goes on for
about two months. At the weekly meetings the scouts compete against
one another to see who brought in the most orders. At the meetings,
orders are entered and reports are generated so the scouts know where
everyone stands.

Besides, I would REALLY like to learn more about web development.

Sam
 
K

Kevin Spencer

It sounds pretty straightforward, Sam, except for one thing:
(I am going to have the order
forms scanned into the system to ease order verification).

There's nothing easy about this approach. First, an order form is a
container of string data, such as name, address, etc. An image is a
container of pixel data (colors in a plane). Images are useful with forms
only when the original form is in a paper format, since a sheet of paper is
also a container of colors in a plane. To extract string data from an image,
a human being must display the image and read the data in it. To extract
string data from a container of string data, a computer can read the string
data easily. It can also be displayed in a Windows form application, or
formatted as an image for viewing by humans.

In addition, string data is small, consisting only of the characters which
comprise the data. Image data is large, because most of the data is the
background of the image.

In other words, any way you slice it, putting your form data into an image
does nothing to ease order verification, and in fact, makes the whole
process much more difficult.

If you have a client Windows Forms app that uploads form data to a Web
Service, it makes much more sense to upload string data.

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP
 
S

sam

It sounds pretty straightforward, Sam, except for one thing:


There's nothing easy about this approach. First, an order form is a
container of string data, such as name, address, etc. An image is a
container of pixel data (colors in a plane). Images are useful with forms
only when the original form is in a paper format, since a sheet of paper is
also a container of colors in a plane. To extract string data from an image,
a human being must display the image and read the data in it. To extract
string data from a container of string data, a computer can read the string
data easily. It can also be displayed in a Windows form application, or
formatted as an image for viewing by humans.

Kevin,

Come on Kevin, it is clear to me that you are a smart guy, think
outside the box just a little;)

First off, if you had read the whole thread, you would have seen that
I have 13 years of professional software development under my belt AND
that I am a photographer. I know you are smart enough to put together
these facts to realize that I know the difference between a scanned
image and manually entered data.

Second, the data verification is *NOT* going to be done by a computer,
but a human. I was hoping I did not need to spell it out, but I
will... Here is the data entry process:

1: person picks up orders from the PO box
2: person starts my application
3: person reads all the data off the order and enters it into my
Windows Application
4: person places the order in the scanner
5: person scans the order form that is saved as a PNG file
6: person saves the complete order, both text data (from step 3) and
the binary image (step 5)

At some point all this is sync with the main data source

Another human needs to verify that the order was entered correct...

1: person selects an order and see the entered data and the binary
image.
2: person zooms into the area on the binary image of interest and
verifies that is was is in the entered data.

I don't see anything all to hard about this other the me learning how
to get the PNG file from the application to the web site.

Sam
 
S

Scott Roberts

sam said:
Well, the thing is... I don't own a laptop:(

The other thing I did not mention is that the orders/sales goes on for
about two months. At the weekly meetings the scouts compete against
one another to see who brought in the most orders. At the meetings,
orders are entered and reports are generated so the scouts know where
everyone stands.

Besides, I would REALLY like to learn more about web development.

Sam

Ah, I completely misunderstood you.

You may want to check out Google Gears as well. I've never used it, but it
looks like it might be up your alley:

http://code.google.com/apis/gears/
 
B

Barrie Wilson

There is one day the product is delivered by all the scouts to all the
customers. There is someone at a central location that is able to
take calls when customers call and complain they did not get the
correct items. In the past they had to figure out which order number
the person was, find the paper order to determine of there was an
error in entering the order or if the customer marked the wrong thing.

ah, this one is easy ... outsource the call center to India, put people on
hold for 45 minutes and then drop the call ... it works great for Dell;
they save money and I live with the problem

I am really very open to any approach that is fast and easy. Can you
give me a bit more detail on HttpWebRequest? I looked it up and it
looks like a generic way to post data to a web server.

it's a way to make a request over HTTP, with or without data being sent;
this is an example of what it takes to send data from a WinForm to a web
server; I'm leaving out what comes back from the server; you can have your
web page send back whatever makes sense (or nothing at all); the page you
request just has to handle the data in the Request collection and dump it in
the SQL store ... simple ...

string url = "http://www.MyServer.com/DataPost.asp";

HttpWebRequest req;
req = (HttpWebRequest)HttpWebRequest.Create(url);

// no search for proxy; takes forever
req.Proxy = null;

// create an arbitrary HTTP request header
req.AllowAutoRedirect = true;
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR
1.1.4322)";
req.Accept = "*/*";
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded"; // important

// you have to build up your data string from the WinForm
string postData = "var1=POSTMEISTER&var2=message";
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData.ToString());

req.ContentLength = postDataBytes.Length;

Stream postDataStream = req.GetRequestStream();
postDataStream.Write(postDataBytes, 0, postDataBytes.Length);
postDataStream.Close();
Would not a
Web Service be easier because it will do all the packaging and
unpackaging of the data for me?

I think it's hard to get simpler than what I posted above ...
It is my understanding that
WebServices is simply Microsoft's version of SOAP which is simply an
interface to make function calls and to interact with classes over
HTTP. Am I mistaken?

not mistaken but over-simplified ... but I am by no means knocking web
services and if learning to write a web service to do this project is
valuable payback for taking on the project then by all means do it would be
my view
 
K

Kevin Spencer

Hi Sam,

I think outside the box for a living. Also, I read the whole thread, and I
know what you are experienced in, as well as what you are NOT experienced
in.

I don't have to time to get into a debate about this, but suffice it to say
I don't believe you've thought the problem through quite thoroughly. As I
mentioned, there are issues with the size of the data being transmitted, as
well as the readability of the data, both by computers and by humans. In
addition, the verification of the form data is not likely to be the last
usage of it, and again, text/string data is represented in computers by the
use of strings rather than images for the same sorts of reasons that numeric
and date-time data is not stored as text.

You're free, of course, to choose whatever solution you desire. My desire is
to be helpful by providing what I know, and I have done that. Convincing
people that I'm right about it is not in my agenda.

--
HTH,

Kevin Spencer
Chicken Salad Surgeon
Microsoft MVP
 
B

Barrie Wilson

Kevin

I don't think Sam was intending to machine-read the images and extract
strings; looked like the idea was to be able to display the scanned order
form and have a human read it and verify it .. personally, I think it's
overkill either way ... but it's not my project
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,997
Messages
2,570,241
Members
46,831
Latest member
RusselWill

Latest Threads

Top