在Ajax框架中,Asp.net方面最强当属Altas最强,以前使用AjaxPro.
Net和MagicAjax. 最几个都比较好用。这几个月来Altas已经进入CTP版本,是开始学习研究Altas的时机了。准备利用Altas为 http://www.yupsky.com 开发成员之间在线通讯的类似于MSN这样的功能。今天初步的学习了一下Altas,最基础的学习内容就是使用javascript调用服务端代码。
Altas和AjaxPro.Net类似,但比AjaxPro.Net强大很多。学习结果记录如下:
程序的原型来自http://weblogs.asp.net/scottgu/archive/2005/09/14/425131.aspx,但是这个是beta版时候的教程。
1、下载altas框架,到http://www.asp.net/default.aspx?tabindex=8&tabid=47上去下载,上面有很多内容
2、使用VS2005创建一个WebSite或者Web Application.
3、配置Web.config如下:
Web.config配置
<?xml version="1.0"?>

<configuration>
<configSections>
<sectionGroup name="microsoft.web" type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup">
<section name="converters" type="Microsoft.Web.Configuration.ConvertersSection" requirePermission="false" />
<section name="webServices" type="Microsoft.Web.Configuration.WebServicesSection" requirePermission="false" />
<section name="authenticationService" type="Microsoft.Web.Configuration.AuthenticationServiceSection" requirePermission="false" />
<section name="profileService" type="Microsoft.Web.Configuration.ProfileServiceSection" requirePermission="false" />
</sectionGroup>
</configSections>
<!--
The microsoft.web section defines items required for the Atlas framework.
-->
<microsoft.web>
<converters>
<add type="Microsoft.Web.Script.Serialization.Converters.DataSetConverter"/>
<add type="Microsoft.Web.Script.Serialization.Converters.DataRowConverter"/>
<add type="Microsoft.Web.Script.Serialization.Converters.DataTableConverter"/>
</converters>
<webServices enableBrowserAccess="true" />
<authenticationService enabled="true" />
<!-- The example application needs the profileService to be enabled and to specify the dragOverlayPosition property. -->
<profileService
enabled="false"
setProperties="dragOverlayPosition"
getProperties="dragOverlayPosition" />
</microsoft.web>

<connectionStrings >
<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|aspnetdb.mdf" />
<add name="AltasMsn" connectionString="Data Source=localhost;user id=sa;password=;initial catalog=msn" providerName="System.Data.SqlClient"/>
</connectionStrings>

<system.web>

<pages>
<controls>
<add namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
<add namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
</controls>
</pages>

<compilation debug="false">
<buildProviders>
<add extension=".asbx" type="Microsoft.Web.Services.BridgeBuildProvider" />
</buildProviders>
</compilation>
<membership>
<providers>
<remove name="AspNetSqlMembershipProvider" />
<add name="AspNetSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="100"
passwordAttemptWindow="10"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordStrengthRegularExpression="" />
</providers>
</membership>
<!-- The SimpleList application needs profile to be enabled, and to allow anonymous users access to the property. -->
<profile enabled="false">
<properties>
<add allowAnonymous="true" name="dragOverlayPosition" defaultValue="" serializeAs="String" />
</properties>
</profile>

<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="Microsoft.Web.Services.ScriptHandlerFactory" validate="false"/>
<add verb="*" path="*.asbx" type="Microsoft.Web.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="Microsoft.Web.Services.ScriptModule"/>
<add name="BridgeModule" type="Microsoft.Web.Services.BridgeModule"/>
<add name="WebResourceCompression" type="Microsoft.Web.Services.WebResourceCompressionModule"/>
</httpModules>

<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
-->
<authentication mode="Forms" />
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
WebService 代码
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;

namespace AltasMsn


{

/**//// <summary>
/// Summary description for $codebehindclassname$
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class LapService : System.Web.Services.WebService

{
[WebMethod]
public ProcessData[] GetProcesses()

{

return this.GetAllProcesses().ToArray();

}


[WebMethod]
public ProcessData[] MatchProcesses(string expression)

{

List<ProcessData> data = this.GetAllProcesses();

if (String.IsNullOrEmpty(expression))

{

return data.ToArray();

}

string[] words = expression.Split(' ');

return data.FindAll(new Predicate<ProcessData>(delegate(ProcessData process)

{

return System.Text.RegularExpressions.Regex.IsMatch(process.Name, expression);

})).ToArray();

}



private List<ProcessData> GetAllProcesses()

{

List<ProcessData> data = new List<ProcessData>();

System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcesses();

foreach (System.Diagnostics.Process process in processes)

{

data.Add(new ProcessData(process.ProcessName, process.WorkingSet64, process.Threads.Count));

}



return data;

}

}



public class ProcessData

{

private string _name;

private long _workingSet;

private int _threadCount;



public string Name

{


get
{ return _name; }


set
{ _name = value; }

}



public long WorkingSet

{


get
{ return _workingSet; }


set
{ _workingSet = value; }

}



public long WorkingSetInMB

{


get
{ return _workingSet / (1024 * 1000); }


private set
{ }

}



public int ThreadCount

{


get
{ return _threadCount; }


set
{ _threadCount = value; }

}




public ProcessData()
{ }



public ProcessData(string name, long workingSet, int threadCount)

{

_name = name;

_workingSet = workingSet;

_threadCount = threadCount;

}

}

}
页面的Html

<%
@ Page Language="C#" AutoEventWireup="true" CodeBehind="SimapleAjax.aspx.cs" Inherits="AltasMsn.SimapleAjax" %>

<!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 runat="server">
<title>Untitled Page</title>
</head>
<atlas:ScriptManager id="scriptManager1" runat="server">
<Services>
<atlas:ServiceReference Path="~/LapService.asmx" />
</Services>
</atlas:ScriptManager>


<script language="javascript" type="text/javascript">


function Button1_onclick()
{

var text1 = document.getElementById("Text1");

AltasMsn.LapService.MatchProcesses(text1.value, onSearchComplete);
}


function onSearchComplete(results)
{

var searchResults = document.getElementById("searchResults");


for (var i=0; i<results.get_length(); i++)
{
searchResults.innerHTML += results[i].Name + "<br>";
}
}

</script>

<body>
<form id="form1" runat="server">
<div id="logo">
Process Explorer

</div>
<div id="header">
Search:
<input id="Text1" type="text" />
<input id="Button1" type="button" value="Search" onclick="Button1_onclick();" />

</div>
<div id="content">
<div class="left">
<span id="searchResults"></span>
</div>
</div>
</form>
</body>
</html>
示例的结果如下:
Altas和AjaxPro.Net类似,但比AjaxPro.Net强大很多。学习结果记录如下:
程序的原型来自http://weblogs.asp.net/scottgu/archive/2005/09/14/425131.aspx,但是这个是beta版时候的教程。
1、下载altas框架,到http://www.asp.net/default.aspx?tabindex=8&tabid=47上去下载,上面有很多内容
2、使用VS2005创建一个WebSite或者Web Application.
3、配置Web.config如下:















































































































Step 1: 产生一个Web服务 推荐使用WebService atlas使用webService时,对于webService并没有特殊要求








































































































































































































这个服务用于查询当前系统中正在活动进程。
Step2 : Simple Invocation of the Web Service
使用很简单,使用Javascript调用远程服务。
页面代码如下:



































































示例的结果如下:
