zoukankan      html  css  js  c++  java
  • 学习 WCF (2)开发WCF服务


    namespace WCFStudent
    {
        
    public static class StudentManage
        {
            
    private static DataTable TD_stu;
            
    static StudentManage()
            {
                TD_stu 
    = new DataTable();
                TD_stu.Columns.Add(
    new DataColumn("Name"));
                TD_stu.Columns.Add(
    new DataColumn("Sex"));
                TD_stu.Columns.Add(
    new DataColumn("School"));
            }

            
    public static void AddStudent(string name, string sex, string school)
            {
                DataRow row 
    = TD_stu.NewRow();
                row[
    "Name"= name;
                row[
    "Sex"= sex;
                row[
    "School"= school;
                TD_stu.Rows.Add(row);
            }

            
    public static IEnumerable GetStudent()
            {
                
    return TD_stu.DefaultView;
            }
        }
    }

    接下来创建一个类WCFStudentText,实现接口IStuServiceContract


    namespace WCFStudent
    {
        
    public class WCFStudentText:IStuServiceContract
        {
            
    public WCFStudentText()
            {
            
    //
            
    //TODO: 在此处添加构造函数逻辑
            
    //
            }

            
    public void AddStudent(Student stu)
            {
                StudentManage.AddStudent(stu.StuName, stu.StuSex, stu.StuSchool);
            }

            
    public stuCollection GetStudent()
            {
                IEnumerable list 
    = StudentManage.GetStudent();
                stuCollection stucollect 
    = new stuCollection();
                Student stu;
                IEnumerator iter 
    = list.GetEnumerator();//通过GetEnumerator方法获得IEnumerator对象的引用

                
    bool first = true;
                PropertyDescriptorCollection pds 
    = null;
                
    while (iter.MoveNext())//用IEnumerator对象对存储在IEnumerator集合中的Student信息进行迭代,每一个PropertyDescriptor都是一个学生的信息
                {
                    
    if (first)
                    {
                        first 
    = false;
                        pds 
    = TypeDescriptor.GetProperties(iter.Current);
                    }

                    stu 
    = new Student();
                    stu.StuName 
    = (string)pds["Name"].GetValue(iter.Current);
                    stu.StuSex 
    = (string)pds["Sex"].GetValue(iter.Current);
                    stu.StuSchool 
    = (string)pds["School"].GetValue(iter.Current);
                    stucollect.Add(stu);
                }

                
    return stucollect;
            }
        }
    }

     用IEnumerator对象对存储在IEnumerator集合中的Student信息进行迭代,每一个PropertyDescriptor都是一个学生的信息。

    驻留WCF服务

    添加一个ADO.NET数据服务文件WCFStudentText.svc,并修改文件的内容为:

    <%@ ServiceHost  Service="WCFStudent.WCFStudentText"%>

    最后我们要做的就是修改Web.config文件:


    <system.serviceModel>
        
    <services>
          
    <service name="WCFStudent.WCFStudentText" behaviorConfiguration="ServiceBehavior">
            
    <!-- Service Endpoints -->
            
    <endpoint address="" binding="wsHttpBinding" contract="WCFStudent.IStuServiceContract">
              
    <!-- 
                  部署时,应删除或替换下列标识元素,以反映
                  在其下运行部署服务的标识。删除之后,WCF 将
                  自动推导相应标识。
              
    -->
              
    <identity>
                
    <dns value="localhost"/>
              
    </identity>
            
    </endpoint>
            
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
          
    </service>
        
    </services>

     将WCF服务的名称设为WCFStudent.WCFStudentText,WCF服务端点(EndPoint)的服务契约设定为我们所编写的契约WCFStudent.IStuServiceContract

    当然我们可以用VS2008直接创建WCF工程,将会给我们带来很多方便。

    这样,一个WCF服务就完成了。



        文章作者:高维鹏(Brian)
        文章出处:http://www.cnblogs.com/gaoweipeng
        欢迎转载,转载时请注明出处。谢谢合作。

  • 相关阅读:
    局部变量和全局变量
    Javascript高级编程学习笔记(26)—— 函数表达式(4)私有变量
    Javascript高级编程学习笔记(25)—— 函数表达式(3)模仿块级作用域
    Javascript高级编程学习笔记(24)—— 函数表达式(2)闭包
    Javascript高级编程学习笔记(23)—— 函数表达式(1)递归
    Javascript高级编程学习笔记(22)—— 对象继承
    Javascript高级编程学习笔记(21)—— 对象原型
    Javascript高级编程学习笔记(20)—— 创建对象
    Javascript高级编程学习笔记(19)—— 对象属性
    Javascript高级编程学习笔记(18)—— 引用类型(7)单体内置对象
  • 原文地址:https://www.cnblogs.com/soundcode/p/2130996.html
Copyright © 2011-2022 走看看