jwcolby
jwcolby at colbyconsulting.com
Sat Aug 29 20:21:21 CDT 2009
http://www.hanselman.com/blog/BreakingAllTheRulesWithWCF.aspx Read all the comments at the bottom. John W. Colby www.ColbyConsulting.com Shamil Salakhetdinov wrote: > Hi John, > > I have got only a reference to MSDN: > > "Web Services in Managed Code" > http://msdn.microsoft.com/en-us/library/xy59yt45.aspx > > This MSDN entry and related ones have rather detailed and step by step > introduction into Web Services subject area. > > Hamachi vs. Web Services: it depends - for me using Web Services look > quicker (no need to setup IIS and MS SQL for the sample I presented as it > runs on my ASP.NET hosting site - this sample deployed by XCOPY), more > flexible, scalable etc. To set wrapper activeX DLL (assuming all customers' > PC have target .NET Framework installed) is no more than run a .bat file. > > Of course learning how to use/develop Web Services takes some time. But this > learning will pay back very well - guaranteed. > > Thank you. > > -- > Shamil > > -----Original Message----- > From: dba-vb-bounces at databaseadvisors.com > [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby > Sent: Saturday, August 29, 2009 11:16 PM > To: Discussion concerning Visual Basic and related programming issues. > Subject: Re: [dba-VB] Access data across the internet > > Thanks Shamil. > > What is missing here is an explanation. > > 1) What IS a web service? > 2) What are the pieces, and what do they do? I assume that there is a > service and a client? > 3) What is this web service doing? > 4) Doesn't it seem that ... > > getting IIS and SQL Server set up, writing web services, writing a DLL for > the client Access > database, getting the existing system using the DLL and installing the DLL > on each machine... > > doesn't all of that seem much more complicated than installing Hamachi and > mapping a shared > directory to a drive letter? > > Now, having said that, I have a future project which (if you would slow down > and explain just what > the heck this stuff was) MIGHT be a perfect fit for this technology. OTOH, > the future project is a > system that I hope to sell to small drug companies. Whatever this stuff is > has to be point and > click installable as software at the client's site. > > As I mentioned to Eric, I am listening, but so far I haven't understood a > word of what I am hearing. > > Perhaps a reference to some book, or article that explains this stuff step > by step...? > > Thanks, > > John W. Colby > www.ColbyConsulting.com > > > Shamil Salakhetdinov wrote: >> Yes, web service would be a good solution here. >> >> I have made a test web service, which is located here: >> >> http://shamils-4.hosting.parking.ru/MSAccess/MSAccessWebService.asmx >> >> >> You can test it using this code (c#): >> >> using System; >> >> namespace WebServiceDirectTestConsole >> { >> class Program >> { >> // >> // Add ASP.NET 2.0 web service reference: >> // >> http://shamils-4.hosting.parking.ru/MSAccess/MSAccessWebService.asmx >> // >> static void Main(string[] args) >> { >> try >> { >> const int CALLS_QTY = 10; >> >> DateTime startTime = DateTime.Now; >> >> >> WebServiceDirectTestConsole.FileServiceSample.WebServiceFacade >> service = new >> WebServiceDirectTestConsole.FileServiceSample.WebServiceFacade(); >> >> >> //http://shamils-4.hosting.parking.ru/MSAccess/LoremIpsum.txt (50KB) >> string p = @"c:\temp\LoremIpsum.txt"; >> string fileName = "testFile"; >> string fileText = System.IO.File.ReadAllText(p); >> string text = null; >> >> for (int i = 1; i <= CALLS_QTY; i++) >> { >> service.StoreFile(fileName + i.ToString(), fileText); >> text = service.GetFile(fileName + i.ToString()); >> } >> >> text = service.GetWebServiceUsageStatistics(); >> >> Console.WriteLine(text); >> >> DateTime endTime = DateTime.Now; >> >> double elapsedTime = ((TimeSpan)(endTime - >> startTime)).TotalSeconds; >> >> Console.WriteLine("Elapsed Time = {0:#0.00} seconds for > {1} >> calls ({2}s/call, fileSize = {3})", >> elapsedTime, CALLS_QTY, elapsedTime / CALLS_QTY, >> fileText.Length); >> >> } >> catch (Exception ex) >> { >> Console.WriteLine(ex.Message); >> } >> } >> } >> } >> >> One of the results of the above test runs is the following: >> >> Total Web Calls: 20 >> Total Web Calls Duration: 20 ticks >> Total Store File Web Calls: 10 >> Total Store File Web Calls Duration: 10 ticks >> Total Get File Web Calls: 10 >> Total Get File Web Calls Duration: 10 ticks >> Total Delete File Web Calls: 0 >> Total Delete File Web Calls Duration: 0 ticks >> Currently Stored Files: 10 >> Currently Stored Files Length: 503440 >> >> FILES >> ----- >> fileName = testFile1, length = 50344 >> fileName = testFile2, length = 50344 >> fileName = testFile3, length = 50344 >> fileName = testFile4, length = 50344 >> fileName = testFile5, length = 50344 >> fileName = testFile6, length = 50344 >> fileName = testFile7, length = 50344 >> fileName = testFile8, length = 50344 >> fileName = testFile9, length = 50344 >> fileName = testFile10, length = 50344 >> >> Elapsed Time = 6,80 seconds for 10 calls (0,6799s/call, fileSize = 50467) >> >> >> If you are interested we can make intensive test of this sample web > service. >> (I personally would be interested in such testing.) >> I will make all its source code (simple) available on >> northwind.codeplex.com. >> This sample web service has already MS Access/VBA callable wrapper ActiveX >> DLLs. >> >> Thank you. >> >> -- >> Shamil >> >> P.S. Here is how the same web service can be called from MS Access/VBA > using >> ActiveX DLL wrapper library: >> >> Option Compare Database >> Option Explicit >> >> Public Function TestWebServiceAdv() >> Dim service As New MSAccessWebService >> Const CALLS_QTY As Integer = 10 >> Dim startTime As Date >> startTime = Now >> >> '//http://shamils-4.hosting.parking.ru/MSAccess/LoremIpsum.txt (50KB) >> Dim p As String >> p = "c:\temp\LoremIpsum.txt" >> >> Dim fileName As String >> fileName = "testFile" >> Dim fileText As String >> fileText = ReadAllText(p) >> Dim text As String >> Dim i As Integer >> >> For i = 1 To CALLS_QTY Step 1 >> service.StoreFile fileName + CStr(i), fileText >> text = service.GetFile(fileName + CStr(i)) >> Next i >> >> Dim endTime As Date >> endTime = Now >> >> text = service.GetWebServiceUsageStatistics() >> Debug.Print text >> >> Dim elapsedTime As Double >> elapsedTime = DateDiff("s", startTime, endTime) >> Debug.Print elapsedTime & " seconds per " & _ >> CStr(CALLS_QTY) & " calls" >> End Function >> >> Private Function ReadAllText(filePath As String) _ >> As String >> Dim text As String >> Dim fn As Integer >> Dim fileLen As Long >> fn = FreeFile >> Open filePath For Input As #fn >> fileLen = LOF(fn) >> text = Input(fileLen, fn) >> Close fn >> ReadAllText = text >> End Function >> >> One of the test calls results is the following: >> >> Total Web Calls: 20 >> Total Web Calls Duration: 20 ticks >> Total Store File Web Calls: 10 >> Total Store File Web Calls Duration: 10 ticks >> Total Get File Web Calls: 10 >> Total Get File Web Calls Duration: 10 ticks >> Total Delete File Web Calls: 0 >> Total Delete File Web Calls Duration: 0 ticks >> Currently Stored Files: 10 >> Currently Stored Files Length: 503460 >> >> FILES >> ----- >> fileName = testFile1, length = 50346 >> fileName = testFile2, length = 50346 >> fileName = testFile3, length = 50346 >> fileName = testFile4, length = 50346 >> fileName = testFile5, length = 50346 >> fileName = testFile6, length = 50346 >> fileName = testFile7, length = 50346 >> fileName = testFile8, length = 50346 >> fileName = testFile9, length = 50346 >> fileName = testFile10, length = 50346 >> >> 8 seconds per 10 calls >> >> >> -----Original Message----- >> From: dba-vb-bounces at databaseadvisors.com >> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of Eric Barro >> Sent: Friday, August 28, 2009 5:54 PM >> To: 'Discussion concerning Visual Basic and related programming issues.' >> Subject: Re: [dba-VB] Access data across the internet >> >> John, >> >> This is a good candidate for a web service. A web service allows you to >> expose certain methods to client machines outside the network. >> >> 1. Basically in terms of servers you will need a web server and a database >> server (one physical server is possible but two are better due to security >> issues). >> 2. The web server exposes the web service application and takes care of >> authentication to the database server. The web server is the only one that >> is publicly accessible from the outside. >> >> This saves you from having to set up VPN client software on the client >> machines and also saves you from having to purchase hardware to run the > VPN >> on the server side. >> >> Eric >> >> >> -----Original Message----- >> From: dba-vb-bounces at databaseadvisors.com >> [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby >> Sent: Friday, August 28, 2009 6:11 AM >> To: VBA >> Subject: [dba-VB] Access data across the internet >> >> I am looking at doing an application in C# that needs to be able to run on >> user systems around the country, but manipulate data in a common location. >> IOW employees can be anywhere, running this program on their machine, but >> reading / writing data to a central server. >> >> It is a fairly simple application in terms of the data, a hand full of >> fairly stable and short list tables that feed combos, and a couple of > "log" >> kind of tables that document processes. It would be nice to have access > to >> a fairly complex directory structure containing data files that need to be >> imported by and exported from this program. Again these files are small, >> less than a thousand lines of data, fixed width or CSV. I am looking at > the >> files now and the largest appear to be 80K or so. >> >> I am thinking that a VPN tunnel to allow access to the data directories, >> which are then mapped to a drive on the local workstation. Some kind of >> data store on the server, perhaps SQL Server Express. >> A local data store to do the import into, manipulation / cleanup of > data, >> export back to files on the remote server directory structure. >> >> I am wondering if you guys have experience in setting up this kind of a >> server and application to work on such a server. >> >> -- >> John W. Colby >> www.ColbyConsulting.com >> _______________________________________________ >> >> >> _______________________________________________ >> dba-VB mailing list >> dba-VB at databaseadvisors.com >> http://databaseadvisors.com/mailman/listinfo/dba-vb >> http://www.databaseadvisors.com >> >> > _______________________________________________ > dba-VB mailing list > dba-VB at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/dba-vb > http://www.databaseadvisors.com > > > __________ Information from ESET NOD32 Antivirus, version of virus signature > database 4379 (20090829) __________ > > The message was checked by ESET NOD32 Antivirus. > > http://www.esetnod32.ru > > > > _______________________________________________ > dba-VB mailing list > dba-VB at databaseadvisors.com > http://databaseadvisors.com/mailman/listinfo/dba-vb > http://www.databaseadvisors.com > >