2008/04/01

Flex 3 Call .Net WebService (2)

1. 開啟Flex 3 並新增專案 命名為 FlexCallWebServiceSample

2. Import 自己寫的WebService 也是 Flex 3 新增號稱強大的功能

選擇 Data - > Import WebService (WSDL)

3. 會出現此畫面 就選擇你要放的地方 我是採用預設所以直接按下Next


4.請在框1地方輸入WebService 位置 記得後面加上?wsdl不然一定不會成功

之後按下框2的Next



5.

接下來就是Mega(台語),框1地方請將預設的Service1Soap12 改成 Service1Soap根據官方網站的論壇是說目前現在如果選擇Soap12會出現問題,沒錯,我之前就是卡關卡在這邊,天殺的害我試了好久,記的這邊部要傻傻的就給他用預設的,框2部分果真可以看到他抓到我寫的4隻Web Service,框3部分可以自行命名在Felx中你要用啥名稱稱呼這隻Service他預設

他預設Package: generated.webservices ,Main Class: Service1

我只有改變其Main Class 為 TestService ,之後就可以大膽按下框4

Finish.


6.之後應該是會看到這樣的結構..






Flex 3 Call .Net WebService (1)

首先我們得先建立WebService ..


開啟VS.Net ...


並且建立一個 Class 為


public class UserInfo
{
public string Name{get;set;} //姓名
public
string Tel{get;set;} // 電話
public string Addr{get;set;} //地址
}






並建立下述的WebService 以提供測試

我直接原程式碼Po上...


using System;
using System.Collections;

using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;

using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace TestFlexWebService

{
/// <summary>
///Service1 的摘要描述
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService

{
/// <summary>
/// 一個暫存的ArrayList 提供 GetUserInfoArray() 所使用
/// </summary>
public static ArrayList PubList = new ArrayList();


/// <summary>
/// 新增一個UserInfo 至 PubList 中 並且回傳回去
/// </summary>
/// <param name="name">UserInfo的Name</param>

/// <param name="tel">UserInfo的Tel</param>
/// <param name="addr">UserInfo的Addr</param>
/// <returns>回傳回去一個UserInfo的物件</returns>

[WebMethod]
public UserInfo AddUserInfo(string name,string tel,string addr)

{
UserInfo res = new UserInfo();
res.Name = name;

res.Tel = tel;
res.Addr = addr;

PubList.Add(res);
return res;
}

/// <summary>
/// 將PubList 此UserInfo Array 傳出去
/// </summary>
/// <returns>UserInfo Array</returns>

[WebMethod]
public UserInfo[] GetUserInfoArray()
{
return (UserInfo[])PubList.ToArray(typeof(UserInfo));
}


/// <summary>
/// 傳入一UserInfo Array 並回傳裡面有多少個UserInfo
/// 已測試是否.Net 此端是否可以接到到Flex傳入的UserInfo Array.
/// </summary>
/// <param name="userInfos">UserInfo Array</param>

/// <returns>Length of UserInfoArray.</returns>
[WebMethod]
public int GetUserInfoCount(UserInfo[] userInfos)

{
return userInfos.Length;
}

}

}

之後就完成了.Net WebService 這一端..


接下來就是Flex3 那邊的部份了....

Flex 3 Call .Net WebService (0)

本文將介紹 Flex 3 如何去Call .Net WebService

基本上他多了很多自動化的功能(跟Flex2)比起來真的是舒服多了...

這文章有使用到的工具為 VS.net 2008 and Adobe Flex 3


有三項測試項目..


1. Flex 3 如何傳入自訂的 Class給 WebService 且 這自訂的Class為.Net WebService 所定義的

2. Flex 3 從.Net WebService 取得自訂的 Class Array 並且把他Bind 到 DataGrid 中

3. Flex 3 傳入一自訂的Class Array至 .Net WebService 中 並且回傳此Array的內容

接下來幾篇文章中都會提到一些方法....

LINQ基本操作


Insert

Customer
newCust = new Customer();
newCust.CompanyName = "AdventureWorks Cafe";
newCust.CustomerID = "ADVCA";

db.Customers.InsertOnSubmit(newCust);







Update
var existingCust =
(from c in db.Customers
where c.CustomerID == "ALFKI"
select c)
.First();

existingCust.ContactName = "New Contact";







Delete
Order ord0 = existingCust.Orders[0];
OrderDetail detail0 = ord0.OrderDetails[0];
db.OrderDetails.DeleteOnSubmit(detail0);






Submit Changes Item
db.SubmitChanges();

2008/03/28

攻城器具的用法


攻城器具如果要大量拆除別人家的話,要分成多波派出。才能達到大量拆除的效果。


以下是錯誤試範:

因為多台在同一次攻擊,所以只會損壞一樣建築。