在本周举办的微软专业开发者大会(Professional Developers Conference)上,微软曾经力推的Silverlight受到了冷遇,Silverlight 5的发展只在会议开幕的主题演讲上被提及了一下,此后就销声匿迹了,没有一场会议用来专门讨论Silverlight 5。而从讨论风向上来看,软件帝国显然已经把目标转向了HTML5,关于HTML5话题的讨论热火朝天,CEO鲍尔默更是公开表明:“HTML5是促进前后端之间独立和创新的平台粘合剂。”
是Silverlight真的已经变得不重要了还是HTML5变得更重要了?有媒体就此问题向微软服务器与开发工具事业部负责人Bob Muglia做出了提问。
“Silverlight是我们针对Windows Phone的开发平台,同时在多媒体以及行业应用方面Silverlight也有着其一些独一无二的优势。”Muglia给出了一个算是较为明确的答复。
不过当提到Silverlight作为跨平台开发工具的时间周期表时,Muglia道出了实言:“我们的政策发生了转变。”
“Silverlight仍是一个跨平台解决方案,仍将在各种各样的操作系统和浏览器上继续工作、发展。”Muglia说道:“不过HTML5将是未来跨平台解决方案的唯一真理,包括苹果的iOS平台。”
Muglia明确表示未来将会有不同版本的Silverlight,按照功能和特性划分,就如同今年4月份发布的Silverlight 4一样。Muglia没有透露任何有关Silverlight 5的发布时间信息,不过他表示Silverlight的开发进度开始变缓了。他说:“正如任何事物都有一个成熟周期一样,Silverlight的研发节 奏发生了变化。”
当微软上月中首度公开展示Internet Explorer 9后,我们看到的是一个有史以来对HTML5支持的最好的IE版本。而在今年3月被问及是否会继续履行把Silverlight当做跨平台开发主力推广 时,微软官方还依然坚持的说法是Silverlight和HTML5两者将会并行,Silverlight将是微软今后数年内针对移动设备、Web和PC 跨平台开发的主力平台,HTML5将在未来成为一个共同认可的标准。
但在过去的数月中,微软推动了HTML5的极大发展,微软试图让开发者明白HTML5可以将他们的网站变的更像是应用程序。微软IE部 门总经理Dean Hachamovitch在PDC开幕主题演讲中说道:“HTML5可以帮助你创建迷人的交互式站点,并且可以提供对浏览器的全硬件加速,HTML5页面 给人感觉更像是一款应用程序或者一个游戏。”
HTML5的重要性正在日益凸显,各个软件公司对其重视亦在情理之中,凭借Flash吃遍天下的Adobe已经开发了将Flash转换成HTML5 的程序,更何况在与Flash争斗中完败的Silverlight呢?虽然Silverlight前景目前看起来并不是很明朗,但只要微软不打算将其变为 消失技术名词之一,可能如微软所说,我们依然可以在移动平台等地方看到Silverlight的身影。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title></title>
<script language="javascript" type="text/javascript">
var intRowIndex = 0;
function insertRow(tbIndex) {
tbIndex = GetRowsCount();
var objRow = myTable.insertRow(tbIndex);
var objCel = objRow.insertCell(0);
objCel.innerText = tbIndex;
var objCel = objRow.insertCell(1);
objCel.innerText = document.myForm.myCell1.value;
var objCel = objRow.insertCell(2);
objCel.innerText = document.myForm.myCell2.value;
objRow.attachEvent("onclick",getIndex);
objRow.style.background = "pink";
CalHours();
}
function deleteRow(tbIndex) {
if (tbIndex != 0) {
myTable.deleteRow(tbIndex);
intRowIndex = 0;
for (var i = 1; i < myTable.rows.length; i++) {
myTable.rows[i].cells[0].innerText = i;
}
CalHours();
}
else {
alert("请选择要删除的信息!");
}
}
function getIndex()
{
intRowIndex = event.srcElement.parentElement.rowIndex;
pos.innerText = intRowIndex;
}
function GetRowsCount() {
var rows = myTable.rows.length;
return rows;
}
function CalHours() {
var hours = 0;
for (var i = 1; i < myTable.rows.length; i++) {
hours += parseInt(myTable.rows[i].cells[0].innerText);
}
var txtHours = document.getElementById("txtHours");
txtHours.innerHTML = hours;
}
function searchList() {
var text;
var date = document.all.txtDate.value;
for (i = 1; i < myTable.rows.length; i++) {
text = myTable.rows(i).cells(0).innerText;
if (date == "" || date == text) {
myTable.rows(i).style.display = "";
}
else {
myTable.rows(i).style.display = "none";
}
}
}
</script>
</head>
<body>
<form name="myForm">
<div style="margin:5px 0px 5px 30px;">
<span style="padding-right:10px;">日期:</span>
<input id="txtDate" type="text" style="width:80px;" />
<input id="btnRefresh" type="button" value="刷新" onclick="searchList()" style="width:60px;" />
</div>
<div id="divList">
<span id="pos" style="display:none;"></span>
<table>
<tr>
<td style="text-align:right; padding-right:5px;"><span>投入工时:<span id="txtHours" style="color:Red;">0</span> H</span></td>
</tr>
<tr>
<td>
<table id="myTable" border="1">
<tr>
<th>Num</th>
<th>Text</th>
<th>Value</th>
</tr>
</table>
</td>
</tr>
</table>
</div>
第一栏:<input type="text" name="myCell1" value="CGI"><br>
第二栏:<input type="text" name="myCell2" value="ASP"><br>
<input type="button" onclick="insertRow(intRowIndex)" value="插入行">
<input type="button" onclick="deleteRow(intRowIndex)" value="删除行">
</form>
</body>
</html>
System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding();
byte[] buffer = converter.GetBytes(outerXml);
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream gzip = new GZipStream(ms, CompressionMode.Compress))
{
gzip.Write(buffer, 0, buffer.Length);
}
buffer = ms.ToArray();
}