Imports System Imports System.Data Imports System.Configuration Imports System.Web Imports System.Web.Security Imports System.Web.UI Imports System.Web.UI.WebControls Imports System.Web.UI.WebControls.WebParts Imports System.Web.UI.HtmlControls Imports System.IO <Serializable()> _ Public Class QuotesCollection : Inherits DataTable Public Sub QuotesCollection() End Sub Public Sub Synthesize() Me.TableName = "Quotations" Dim dr As DataRow Columns.Add(New _ DataColumn("Quote", GetType(String))) Columns.Add(New _ DataColumn("OriginatorLastName", GetType(String))) Columns.Add(New _ DataColumn("OriginatorFirstName", GetType(String))) dr = Me.NewRow() dr(0) = _ "Imagination is more important than knowledge." dr(1) = "Einstein" dr(2) = "Albert" Rows.Add(dr) dr = Me.NewRow() dr(0) = _ "Assume a virtue, if you have it not" dr(1) = "Shakespeare" dr(2) = "William" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = _ "A banker is a fellow who lends you his " + _ "umbrella when the sun is shining, but wants " + _ "it back the minute it begins to rain." dr(1) = "Twain" dr(2) = "Mark" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "A man cannot be comfortable without " + _ "his own approval." dr(1) = "Twain" dr(2) = "Mark" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Beware the young doctor and the " + _ "old barber" dr(1) = "Franklin" dr(2) = "Benjamin" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Reality is merely an illusion, " + _ "albeit a very persistent one." dr(1) = "Einstein" dr(2) = "Albert" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Beer has food value, but food has " + _ "no beer value" dr(1) = "Sticker" dr(2) = "Bumper" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Research is what I'm doing when I " + _ "don() 't know what I'm doing" dr(1) = "Von Braun" dr(2) = "Wernher"" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Whatever is begun in anger ends in shame" dr(1) = "Franklin" dr(2) = "Benjamim" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "We think in generalities, but " + _ "we live in details" dr(1) = "Whitehead" dr(2) = "Alfred North" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "Every really new idea looks crazy " + _ "at first." dr(1) = "Whitehead" dr(2) = "Alfred North" Me.Rows.Add(dr) dr = Me.NewRow() dr(0) = "The illiterate of the 21st century will " + _ "not be those who cannot read and write, but those " + _ "who cannot learn, unlearn, and relearn." dr(1) = "Whitehead" dr(2) = "Alfred North" Me.Rows.Add(dr) End Sub End ClassListing 19-3
Imports System Imports System.Web Imports System.Data Imports System.Web.Services Imports System.Web.Services.Protocols Imports System.Web.Caching Public Structure Quote Public _strQuote As String Public _strOriginatorLastName As String Public _strOriginatorFirstName As String Public Sub New(ByVal strQuote As String, _ ByVal strOriginatorLastName As String, _ ByVal strOriginatorFirstName As String) _strQuote = strQuote _strOriginatorLastName = strOriginatorLastName _strOriginatorFirstName = strOriginatorFirstName End Sub End Structure <WebService(Namespace:="http://tempuri.org/")> _ <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ Public Class QuoteServiceVB Inherits System.Web.Services.WebService Function LoadQuotes() As QuotesCollection Dim quotesCollection As QuotesCollection Dim ctx As HttpContext ctx = HttpContext.Current Dim o As Object o = ctx.Cache("quotesCollection") quotesCollection = CType(o, QuotesCollection) If quotesCollection Is Nothing Then quotesCollection = New QuotesCollection() Dim strAppPath As String strAppPath = Server.MapPath("") Dim strFilePathXml As String strFilePathXml = _ strAppPath ' _ "\\app_data\\QuotesCollection.xml" Dim strFilePathSchema As String strFilePathSchema = _ strAppPath ' _ "\\app_data\\QuotesCollection.xsd" quotesCollection.ReadXmlSchema(strFilePathSchema) quotesCollection.ReadXml(strFilePathXml) Dim cacheDependency As CacheDependency cacheDependency = New CacheDependency(strFilePathXml) ctx.Cache.Insert("quotesCollection", _ quotesCollection, _ cacheDependency, _ Cache.NoAbsoluteExpiration, _ Cache.NoSlidingExpiration, _ CacheItemPriority.Default, _ Nothing) End If Return quotesCollection End Function Public Sub QuoteService() End Sub <WebMethod()> _ Public Function HelloWorld() As String Return "Hello World" End Function <WebMethod()> _ Public Function GetAQuote() As Quote Dim quotesCollection As QuotesCollection quotesCollection = Me.LoadQuotes() Dim nNumQuotes As Integer nNumQuotes = quotesCollection.Rows.Count Dim random As Random random = New Random() Dim nQuote As Integer nQuote = random.Next(nNumQuotes) Dim dataRow As DataRow dataRow = quotesCollection.Rows(nQuote) Dim quote As Quote quote = New Quote(CType(dataRow("Quote"), String), _ CType(dataRow("OriginatorLastName"), String), _ CType(dataRow("OriginatorFirstName"), String)) Return quote End Function <WebMethod()> _ Public Sub AddQuote(ByVal quote As Quote) Dim quotesCollection As QuotesCollection quotesCollection = Me.LoadQuotes() Dim dr As DataRow dr = quotesCollection.NewRow() dr(0) = quote._strQuote dr(1) = quote._strOriginatorLastName dr(2) = quote._strOriginatorFirstName quotesCollection.Rows.Add(dr) Dim strAppPath As String strAppPath = Server.MapPath("") Dim strFilePathXml As String strFilePathXml = _ strAppPath + "\\app_data\\QuotesCollection.xml" Dim strFilePathSchema As String strFilePathSchema = _ strAppPath + "\\app_data\\QuotesCollection.xsd" quotesCollection.WriteXmlSchema(strFilePathSchema) quotesCollection.WriteXml(strFilePathXml) End Sub <WebMethod()> _ Public Function GetAllQuotes() As DataSet Dim quotesCollection As QuotesCollection quotesCollection = LoadQuotes() Dim dataSet As DataSet dataSet = New DataSet() dataSet.Tables.Add(quotesCollection) Return dataSet End Function End Class
by
updated