WCF 开发示例向导 Part 2 --- 经典推荐!

WCF 开发示例向导 Part 2 --- 经典推荐!


本文的上一篇文章:
WCF 开发示例向导 Part 1 --- 经典推荐!


使用Visual Studio 2008 创建WCF 应用程序
这里简要说明操作步骤: New Project 类型 – 选择WCF Service Application,默认的项目中包含有IService1.cs, Service1.svc , Service1.svc.cs, web.config 等文件。
 
其中IServices1 接口有ServiceContract attribute,并且其中的方法也定义了OperationContract attribute。Service1 是IService1 接口的具体实现,Endpoints 和其他行为属性在web.config 配置文件的system.serviceModel 节点定义。
 
如果你改变services 的名称,你需要同时更改 web.config 配置文件中的相关配置,否则外部系统不能识别服务。
 
 
定制默认的WCF 服务
现在我们根据实际示例项目的需求,更改默认的WCF 服务。第一步是对现有的服务文件进行改名,或删除现有的文件,然后增加新的文件。在本示例程序中,我们采用第一种方法,对现有的文件进行改名。
 
对IService1.cs 改名为IWCFForumService.cs,Service1.svc 改名为 WCFForumService.svc。代码文件Service1.svc.cs 会自动更名为 WCFForumService.svc.cs。下一步,需要更改web.config 的相关配置。
         <services>
              <service behaviorConfiguration="WcfServiceEntlib.ServiceBehavior" name="WcfServiceEntlib.WCFForumService">
                   <endpoint address="" binding="wsHttpBinding" contract="WcfServiceEntlib.IWCFForumService">
                   </endpoint>
                   <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
              </service>
         </services>
 
同时,对IWCFForumService.cs 代码进行修改,代码如下。另外,增加DataContact 类 – MessageInfo.cs,其中的成员变量通过DataMemeber 进行标识,MessageInfo 将作为DataContract 在 IWCFForumService 中使用。MessageInfo 是一个独立的类,标识为public,允许外部系统访问。
 
WCFForumService 则是对 IWCFForumService接口的实现类,代码如下:
        private string strConn = ConfigurationManager.ConnectionStrings["EntLibForum"].ConnectionString;
 
        public string GetMessage(int messageID)
        {
            string msg = string.Empty;
 
            string strSelect = "Select Message From yaf_message where MessageID=" + messageID.ToString();
 
            using (SqlConnection connection = new SqlConnection(strConn))
            {
                SqlCommand command = new SqlCommand(strSelect, connection);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                try
                {
                    if (reader.Read())
                    {
                        msg = reader["Message"].ToString().Trim();
                    }
                }
                finally
                {
                    // Always call Close when done reading.
                    reader.Close();
                }
            }
 
            return msg;
        }
 
        public MessageInfo GetMessageInfo(int messageID)
        {
            MessageInfo messageInfo = null;
            string strSelect = "Select * From yaf_message where MessageID=" + messageID.ToString();
 
            using (SqlConnection connection = new SqlConnection(strConn))
            {
                SqlCommand command = new SqlCommand(strSelect, connection);
                connection.Open();
                SqlDataReader reader = command.ExecuteReader();
                try
                {
                    if (reader.Read())
                    {
                        messageInfo = new MessageInfo();
                        messageInfo.MessageID = messageID;
                        messageInfo.Message = reader["Message"].ToString().Trim();
                        messageInfo.PostedDate = Convert.ToDateTime(reader["Posted"]);
                    }
                }
                finally
                {
                    // Always call Close when done reading.
                    reader.Close();
                }
            }
           
            return messageInfo;
        }
 
 
承载和测试WCF 服务
WCF 服务可以部署在IIS 6.0、Windows Activation Service (WAS) with vista 和 IIS 7.0。本示例中,我们采用IIS 6.0部署WCF 服务。编译、运行WCF 示例程序,从IE浏览器显示的文件列表,选择WCFForumService.svc 文件。



 
如果没有客户端程序,你不能直接测试WCF 服务,就像web service 一样。
Microsoft 提供了一个简单的方法来测试WCF 服务 – WcfTestClient 工具(关于该工具的具体介绍,请参考文章:http://forum.entlib.com/Default.aspx?g=posts&t=233 )。如果WCF 服务承载在WCF Service Host (WcfSvcHost.exe) ,WcfTestClient 工具将自动打开并运行。你也可以通过命令行来运行WcfTestClient 工具,脚本如下:
 
C :\> WcfTestClient http://localhost:4691/WCFForumService.svc
 
http://localhost:4691/WCFForumService.svc 是等待测试的WCF 服务地址。WcfTestClient 在左侧面板显示暴露的方法,同时在右上侧面板也可以输入参数。当输入参数后,点击Invoke 按钮,将调用指定的WCF 方法,在右下侧面板显示结果。




后面内容待续 http://forum.entlib.com/  ---- 包括范例程序下载!

 
Reference:
1. Codeproject.com, Windows Communication Foundation (WCF) Overview, by Deepthi Viswanathan Nair
http://www.codeproject.com/KB/WCF/WCFOverview.aspx
 
 
posted on 2008-09-24 08:19  EntLib  阅读(2020)  评论(1编辑  收藏  举报