473,654 Members | 3,108 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Optimizing size of generated XML

Hi,

I have to send an array of prices for a list of products over XML.

Currently my XML data looks like this:

<ArrayOfProd>
<Prod Code="productco de001">
<Prices>
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
</Prices>
</Prod>
</ArrayOfProd>

Is there a way I ca remove the redundant <prices> tag (caused by the
array name of the property) so that the P tags nest directly within the
Prod tag?

Also, can I prevent it from formatting the XML with leading whitespace
somehow? Since a human never has to read it, the whitespace is just a
waste of bandwidth. Even if it just removed the leading spaces - that
would be a lot better.

My classes are below:

[XmlType("Prod")]
public class ProductPriceGro up {
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;

[System.Xml.Seri alization.XmlAr rayItemAttribut e("P")]
public Price[] Prices;
}

public class Price {
[System.Xml.Seri alization.XmlAt tribute("F",Dat aType="date")]
public DateTime FromDate;

[System.Xml.Seri alization.XmlAt tribute("T",Dat aType="date")]
public DateTime ToDate;

[System.Xml.Seri alization.XmlAt tribute("Q")]
public int Quantity;

[System.Xml.Seri alization.XmlAt tribute("V")]
public decimal Value;
}

Thanks,

Nick...

Nov 23 '05 #1
3 1802
Hi Nick,

Welcome to ASPNET newsgroup.
From your description, you'd like to perform the following two tasks on
your asp.net webservice:
1.Preventing the asp.net runtime from formatting the response SOAP
message(put whitespace and indent?)

2.Customize your custom class to avoid wrapper element for array property.

If there're anything I didn't quite get, please feel free to let me know.
Based on my research, here are some of my understanding and suggestions on
the two problem:
1. I'm not sure how did you get the underlying SOAP message and found that
it was formated with whitespace and indent. I've used trace utility(in soap
toolkit3) and the .NET soap Extenstion to capture the soap message of
asp.net webservice and didn't find any additional formatting on the
message. So would you tell me the way you capture the message or use which
trace tool?

2. For customizing the serizlized xml content of our classes, we can use
xmlserizliation attributes to adjust our classes. For your scenario, you
can try modify your ProductPriceGro up class's defintion as below:

[XmlType("Prod")]
public class ProductPriceGro up
{
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;
[System.Xml.Seri alization.XmlEl ement("P")]
public Price[] Prices;
}

which will make the serilized xml of ProductPriceGro up's Prices[] property
without the wrapper element.
Also, for such problem, generally we can first define the XML Schema for
your webservice methods and then use some XML 2 CLASS tools (such as the
.net's xsd.exe) to generate the class file from the schema. Though the
autogenerated class code maynot be perfect, but it'll be much eaiser for us
to do some adjustment based on that generated file. Also, this means can
make our webservice more interopable.

Hope these helps. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


--------------------
Date: Wed, 20 Jul 2005 14:16:43 +0100
From: Nick Gilbert <Ni***@newsgrou p.nospam>
User-Agent: Mozilla Thunderbird 1.0+ (Windows/20050714)
MIME-Version: 1.0
Subject: Optimizing size of generated XML
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID: <Of************ **@tk2msftngp13 .phx.gbl>
Newsgroups:
microsoft.publi c.dotnet.xml,mi crosoft.public. dotnet.framewor k.webservices
NNTP-Posting-Host: neon.staging.x-rm.com 195.166.37.20
Lines: 1
Path: TK2MSFTNGXA01.p hx.gbl!TK2MSFTN GP08.phx.gbl!tk 2msftngp13.phx. gbl
Xref: TK2MSFTNGXA01.p hx.gbl
microsoft.publi c.dotnet.framew ork.webservices :7263
microsoft.publi c.dotnet.xml:77 80
X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.webservices

Hi,

I have to send an array of prices for a list of products over XML.

Currently my XML data looks like this:

<ArrayOfProd>
<Prod Code="productco de001">
<Prices>
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
</Prices>
</Prod>
</ArrayOfProd>

Is there a way I ca remove the redundant <prices> tag (caused by the
array name of the property) so that the P tags nest directly within the
Prod tag?

Also, can I prevent it from formatting the XML with leading whitespace
somehow? Since a human never has to read it, the whitespace is just a
waste of bandwidth. Even if it just removed the leading spaces - that
would be a lot better.

My classes are below:

[XmlType("Prod")]
public class ProductPriceGro up {
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;

[System.Xml.Seri alization.XmlAr rayItemAttribut e("P")]
public Price[] Prices;
}

public class Price {
[System.Xml.Seri alization.XmlAt tribute("F",Dat aType="date")]
public DateTime FromDate;

[System.Xml.Seri alization.XmlAt tribute("T",Dat aType="date")]
public DateTime ToDate;

[System.Xml.Seri alization.XmlAt tribute("Q")]
public int Quantity;

[System.Xml.Seri alization.XmlAt tribute("V")]
public decimal Value;
}

Thanks,

Nick...
Nov 23 '05 #2
Hi Steven,

Thanks for your suggestion with the XML Attributes. I have now got the
XML formatted as I would like it. I found the XML Schema editor in
VS.NET difficult to use and I couldn't understand how to produce the XML
I wanted, but the XML Attributes seem to have solved my problem.

With regards to the whitespace in XML problem: I was testing the
webservice using the "Invoke" button on the test page that you get if
you go to the webservice in a browser. This returned formatted XML with
whitespace indenting. Perhaps a real SOAP call to the webservice causes
it to render XML with no whitespace as it is not trying to be
human-readable?

Thanks,

Nick...
Steven Cheng[MSFT] wrote:
Hi Nick,

Welcome to ASPNET newsgroup.
From your description, you'd like to perform the following two tasks on
your asp.net webservice:
1.Preventing the asp.net runtime from formatting the response SOAP
message(put whitespace and indent?)

2.Customize your custom class to avoid wrapper element for array property.

If there're anything I didn't quite get, please feel free to let me know.
Based on my research, here are some of my understanding and suggestions on
the two problem:
1. I'm not sure how did you get the underlying SOAP message and found that
it was formated with whitespace and indent. I've used trace utility(in soap
toolkit3) and the .NET soap Extenstion to capture the soap message of
asp.net webservice and didn't find any additional formatting on the
message. So would you tell me the way you capture the message or use which
trace tool?

2. For customizing the serizlized xml content of our classes, we can use
xmlserizliation attributes to adjust our classes. For your scenario, you
can try modify your ProductPriceGro up class's defintion as below:

[XmlType("Prod")]
public class ProductPriceGro up
{
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;
[System.Xml.Seri alization.XmlEl ement("P")]
public Price[] Prices;
}

which will make the serilized xml of ProductPriceGro up's Prices[] property
without the wrapper element.
Also, for such problem, generally we can first define the XML Schema for
your webservice methods and then use some XML 2 CLASS tools (such as the
net's xsd.exe) to generate the class file from the schema. Though the
autogenerated class code maynot be perfect, but it'll be much eaiser for us
to do some adjustment based on that generated file. Also, this means can
make our webservice more interopable.

Hope these helps. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


--------------------
Date: Wed, 20 Jul 2005 14:16:43 +0100
From: Nick Gilbert <Ni***@newsgrou p.nospam>
User-Agent: Mozilla Thunderbird 1.0+ (Windows/20050714)
MIME-Version: 1.0
Subject: Optimizing size of generated XML
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID: <Of************ **@tk2msftngp13 .phx.gbl>
Newsgroups:
microsoft.publi c.dotnet.xml,mi crosoft.public. dotnet.framewor k.webservices
NNTP-Posting-Host: neon.staging.x-rm.com 195.166.37.20
Lines: 1
Path: TK2MSFTNGXA01.p hx.gbl!TK2MSFTN GP08.phx.gbl!tk 2msftngp13.phx. gbl
Xref: TK2MSFTNGXA01.p hx.gbl
microsoft.publi c.dotnet.framew ork.webservices :7263
microsoft.publi c.dotnet.xml:77 80
X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.webservices

Hi,

I have to send an array of prices for a list of products over XML.

Currently my XML data looks like this:

<ArrayOfProd>
<Prod Code="productco de001">
<Prices>
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
</Prices>
</Prod>
</ArrayOfProd>

Is there a way I ca remove the redundant <prices> tag (caused by the
array name of the property) so that the P tags nest directly within the
Prod tag?

Also, can I prevent it from formatting the XML with leading whitespace
somehow? Since a human never has to read it, the whitespace is just a
waste of bandwidth. Even if it just removed the leading spaces - that
would be a lot better.

My classes are below:

[XmlType("Prod")]
public class ProductPriceGro up {
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;

[System.Xml.Seri alization.XmlAr rayItemAttribut e("P")]
public Price[] Prices;
}

public class Price {
[System.Xml.Seri alization.XmlAt tribute("F",Dat aType="date")]
public DateTime FromDate;

[System.Xml.Seri alization.XmlAt tribute("T",Dat aType="date")]
public DateTime ToDate;

[System.Xml.Seri alization.XmlAt tribute("Q")]
public int Quantity;

[System.Xml.Seri alization.XmlAt tribute("V")]
public decimal Value;
}

Thanks,

Nick...

Nov 23 '05 #3
Hi Nick,

As for the building .net serializable classes from xml schema, I'd also
recommend you another tools built by Chris Cells:

#XSDClassesGen
http://www.sellsbrothers.com/tools/#xsdClassesGen

This tool can be installed so as to directly used in VS.NET. You can also
try using this tool to generate class after you create your message contact
schema in VS.NET

In addition, as for the whitespaces you see in the test interface (in
browser) , I think this is because IE explorer will always format the xml
document so as to display in a nice view. As I've mentioned in the former
message, a real SOap call to the webservice will get a unformated (with no
extra whitesspaces ) SOAP response message. You can check it through some
network trace tools such as SOAPTOOLKIT'S trace utility , TCPTrace or
netmon....

Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)
--------------------
Date: Fri, 22 Jul 2005 12:04:40 +0100
From: Nick Gilbert <Ni***@newsgrou p.nospam>
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: en-us, en
MIME-Version: 1.0
Subject: Re: Optimizing size of generated XML
References: <Of************ **@tk2msftngp13 .phx.gbl>
<$R************ **@TK2MSFTNGXA0 1.phx.gbl>
In-Reply-To: <$R************ **@TK2MSFTNGXA0 1.phx.gbl>
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Message-ID: <eY************ *@TK2MSFTNGP10. phx.gbl>
Newsgroups: microsoft.publi c.dotnet.framew ork.webservices
NNTP-Posting-Host: neon.staging.x-rm.com 195.166.37.20
Lines: 1
Path: TK2MSFTNGXA01.p hx.gbl!TK2MSFTN GP08.phx.gbl!TK 2MSFTNGP10.phx. gbl
Xref: TK2MSFTNGXA01.p hx.gbl
microsoft.publi c.dotnet.framew ork.webservices :7283
X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.webservices

Hi Steven,

Thanks for your suggestion with the XML Attributes. I have now got the
XML formatted as I would like it. I found the XML Schema editor in
VS.NET difficult to use and I couldn't understand how to produce the XML
I wanted, but the XML Attributes seem to have solved my problem.

With regards to the whitespace in XML problem: I was testing the
webservice using the "Invoke" button on the test page that you get if
you go to the webservice in a browser. This returned formatted XML with
whitespace indenting. Perhaps a real SOAP call to the webservice causes
it to render XML with no whitespace as it is not trying to be
human-readable?

Thanks,

Nick...
Steven Cheng[MSFT] wrote:
Hi Nick,

Welcome to ASPNET newsgroup.
From your description, you'd like to perform the following two tasks on
your asp.net webservice:
1.Preventing the asp.net runtime from formatting the response SOAP
message(put whitespace and indent?)

2.Customize your custom class to avoid wrapper element for array property.

If there're anything I didn't quite get, please feel free to let me know.
Based on my research, here are some of my understanding and suggestions on the two problem:
1. I'm not sure how did you get the underlying SOAP message and found that it was formated with whitespace and indent. I've used trace utility(in soap toolkit3) and the .NET soap Extenstion to capture the soap message of
asp.net webservice and didn't find any additional formatting on the
message. So would you tell me the way you capture the message or use which trace tool?

2. For customizing the serizlized xml content of our classes, we can use
xmlserizliation attributes to adjust our classes. For your scenario, you
can try modify your ProductPriceGro up class's defintion as below:

[XmlType("Prod")]
public class ProductPriceGro up
{
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;
[System.Xml.Seri alization.XmlEl ement("P")]
public Price[] Prices;
}

which will make the serilized xml of ProductPriceGro up's Prices[] property without the wrapper element.
Also, for such problem, generally we can first define the XML Schema for
your webservice methods and then use some XML 2 CLASS tools (such as the
net's xsd.exe) to generate the class file from the schema. Though the
autogenerated class code maynot be perfect, but it'll be much eaiser for us to do some adjustment based on that generated file. Also, this means can
make our webservice more interopable.

Hope these helps. Thanks,

Steven Cheng
Microsoft Online Support

Get Secure! www.microsoft.com/security
(This posting is provided "AS IS", with no warranties, and confers no
rights.)


--------------------
Date: Wed, 20 Jul 2005 14:16:43 +0100
From: Nick Gilbert <Ni***@newsgrou p.nospam>
User-Agent: Mozilla Thunderbird 1.0+ (Windows/20050714)
MIME-Version: 1.0
Subject: Optimizing size of generated XML
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID: <Of************ **@tk2msftngp13 .phx.gbl>
Newsgroups:
microsoft.publi c.dotnet.xml,mi crosoft.public. dotnet.framewor k.webservices
NNTP-Posting-Host: neon.staging.x-rm.com 195.166.37.20
Lines: 1
Path: TK2MSFTNGXA01.p hx.gbl!TK2MSFTN GP08.phx.gbl!tk 2msftngp13.phx. gbl
Xref: TK2MSFTNGXA01.p hx.gbl
microsoft.publi c.dotnet.framew ork.webservices :7263
microsoft.publi c.dotnet.xml:77 80
X-Tomcat-NG: microsoft.publi c.dotnet.framew ork.webservices

Hi,

I have to send an array of prices for a list of products over XML.

Currently my XML data looks like this:

<ArrayOfProd>
<Prod Code="productco de001">
<Prices>
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
<P F="2005-01-01" T="2005-09-09" Q="10" V="27.50" />
</Prices>
</Prod>
</ArrayOfProd>

Is there a way I ca remove the redundant <prices> tag (caused by the
array name of the property) so that the P tags nest directly within the
Prod tag?

Also, can I prevent it from formatting the XML with leading whitespace
somehow? Since a human never has to read it, the whitespace is just a
waste of bandwidth. Even if it just removed the leading spaces - that
would be a lot better.

My classes are below:

[XmlType("Prod")]
public class ProductPriceGro up {
[System.Xml.Seri alization.XmlAt tribute("Code")]
public string ProductCode;

[System.Xml.Seri alization.XmlAr rayItemAttribut e("P")]
public Price[] Prices;
}

public class Price {
[System.Xml.Seri alization.XmlAt tribute("F",Dat aType="date")]
public DateTime FromDate;

[System.Xml.Seri alization.XmlAt tribute("T",Dat aType="date")]
public DateTime ToDate;

[System.Xml.Seri alization.XmlAt tribute("Q")]
public int Quantity;

[System.Xml.Seri alization.XmlAt tribute("V")]
public decimal Value;
}

Thanks,

Nick...


Nov 23 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
3524
by: ArShAm | last post by:
Hi there Please help me to optimize this code for speed I added /O2 to compiler settings I added /Oe to compiler settings for accepting register type request , but it seems that is not allowed and if I remove register type for "l" , time of generating codes doesn't change the original code makes some files , but I removed that section to make it simple for you to read please help me to optimize it for faster running
3
3324
by: PWalker | last post by:
Hi, I have written code that I would like to optimize. I need to push it to the limit interms of speed as the accuracy of results are proportional to runtime. First off, would anyone know any resources that explains how to optimize code i.e. give some rules on c++ optimization? e.g. using memcpy to copy an array (which i have done). Also, what is the best sorting algorithm out there for sorting an array of of size 100 or less? I have...
8
1947
by: Hagen | last post by:
Hi, I have a question that you probably shouldn´t worry about since the compiler cares for it, but anyways: When you run your compiler with optimization turned on (eg. g++ with -Ox flag) and your program gets significantly faster than without, did you write bad code/ have a bad design? Cause what happens in those optimization steps is, I think, mostly
37
681
by: Thomas Matthews | last post by:
Hi, My son is writing a program to move a character. He is using the numbers on the keypad to indicate the direction of movement: 7 8 9 4 5 6 1 2 3 Each number has a direction except for '5'. So in his switch statement, he omits a case for '5':
4
1473
by: Flashman | last post by:
A little confusing with setting up optimizing options with 2003 .NET. Under the Optimization Tab. if you set to /O1 or /O2 is the program ignoring the settings for Inline Function expansion, Enabling of Intrinsic? Would seem these should be greyed out to let you know. Bigger question is what have people found in setting up the optimizing? Using /O1 or /O2 ? Any ideas would be greatly appreciated.
7
3545
by: sameer | last post by:
Hi all, Application environment : VB.Net desktop application,.NET 1.1 Framework, VS 2003. communicates between the database and the application is done over webservices using ADO.NEt Datasets. Returned dataset is Gzip compressed and is then decompressed on the receiving side. Every thing works good, the problem is that it takes a lot of time for the
24
3153
by: Richard G. Riley | last post by:
Without resorting to asm chunks I'm working on a few small routines which manipulate bitmasks. I'm looking for any guidance on writing C in a manner which tilts the compilers hand in, if possible, a compiler/underlying processor independant way : althought to be fair I cant see this stuff on anything other than x86, but who knows. I found some ok info here: http://www.eventhelix.com/RealtimeMantra/Basics/OptimizingCAndCPPCode.htm...
35
2096
by: Brett Romero | last post by:
I'm using MSBUILD to build release and debug versions of a winform project (VS.NET 2005). The project file has conditionals to file reference DLLs depending on the build configuration (debug or release). The generated EXE PDB file for release is 2KB smaller than the debug version. However, the EXEs are exactly the same size. Release is set to optimize code but why are these EXEs the same size? The program also loads the same with both...
2
1764
by: Andrea Taverna | last post by:
Hello everyone, I wrote a bunch of recursive functions to operate on multi-dimensional matrices. The matrices are allocated dynamically in a non-contiguous way, i.e. as an array of pointers pointing to arrays of data,or other pointers if the matrix has more than 2 dimensions. The parameters passed to these functions are: - current_dimension: counts (from 0 to dimensions-1) the matrix dimension on which the function is working, it's...
0
8706
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8475
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
0
8591
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
5621
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4149
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
0
4293
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2709
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
1
1915
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.
2
1592
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.