Wcf的使用
l 创建wcf服务库项目,创建接口点与数据类型
namespace WcfServiceLibrary1
{
// 注意: 如果更改此处的接口名称“IService 1 ” ,也必须更新 App.config 中对“IService 1 ” 的引用。
[ServiceContract]
public interface IService1
{
//[OperationContract]
//string GetData(int value);
//[OperationContract]
//CompositeType GetDataUsingDataContract(CompositeType composite);
[OperationContract]
Boolean TestConnect();
[OperationContract]
News GetNewsById(string id);
[OperationContract]
News GetNews();
[OperationContract]
List<News> GetTopNews(int num);
// 任务: 在此处添加服务操作
}
// 使用下面示例中说明的数据协定将复合类型添加到服务操作
[DataContract]
public class News
{
[DataMember]
public string Id { get; set; }
[DataMember]
public string Title { get; set; }
[DataMember]
public DateTime Date { get; set; }
}
}
l 实现接口
namespace WcfServiceLibrary1
{
// 注意: 如果更改此处的类名“IService 1 ” ,也必须更新 App.config 中对“IService 1 ” 的引用。
public class Service1 : IService1
{
string constr = "Server=127.0.0.1,1423; database=DB_news; User ID=sa; password=sa;";
#region IService1 成员
public bool TestConnect()
{
SqlConnection con = new SqlConnection(constr);
con.Open();
if (con.State == System.Data.ConnectionState.Open)
{
con.Close();
return true;
}
else return false;
}
#endregion
#region IService1 成员
public News GetNewsById(string id)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select * from N_draft where id =" + id, con);
con.Open();
SqlDataReader da = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
News n = null;
if (da.Read())
{
n= new News();
n.Date = DateTime.Parse(da["broadcastdate"].ToString());
n.Id = da["id"].ToString();
n.Title = da["title"].ToString();
}
return n;
}
public News GetNews()
{
return GetTopNews(1)[0];
}
#endregion
#region IService1 成员
public List<News> GetTopNews(int num)
{
List<News> ns = new List<News>();
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select top " + num + " * from N_draft ", con);
con.Open();
SqlDataReader da = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
News n = null;
while (da.Read())
{
n = new News();
n.Date = DateTime.Parse(da["broadcastdate"].ToString());
n.Id = da["id"].ToString();
n.Title = da["title"].ToString();
ns.Add(n);
}
return ns;
}
#endregion
}
}
l 创建应用程序项目,添加服务引用
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Service.News[] datas ;
Service.Service1Client service = new WindowsFormsApplication1.Service.Service1Client();
private void button1_Click(object sender, EventArgs e)
{
datas = null;
News n=service.GetNewsById(textBox1.Text );
datas = new News[] { n };
Bind();
}
void Bind()
{
dataGridView1.DataSource = datas;
dataGridView1.Columns[0].HeaderText = "id";
dataGridView1.Columns[0].DataPropertyName = "id";
dataGridView1.Columns[1].HeaderText = "title";
dataGridView1.Columns[1].DataPropertyName = "title";
dataGridView1.Columns[2].HeaderText = "date";
dataGridView1.Columns[2].DataPropertyName = "date";
}
private void button2_Click(object sender, EventArgs e)
{
datas = null;
datas = service.GetTopNews(int.Parse(textBox1.Text));
Bind();
}
}