WCF快速搭建Demo_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WCF快速搭建Demo

WCF快速搭建Demo

 2015/4/1 15:33:55  Sunnier  程序员俱乐部  我要评论(0)
  • 摘要:WCF快速搭建Demops:本Demo只是演示如何快速建立WCF1.首先完成IBLL、BLL、Model层的搭建,由于数据访问层不是重点,WCF搭建才是主要内容,所以本Demo略去数据访问层。新建BLL类库项目,添加UserInfo类如下:1namespaceModel2{3[DataContract]4publicclassUserInfo5{6[DataMember]7publicintId{get;set;}8[DataMember]9publicstringName{get;set;
  • 标签:WCF

WCF快速搭建Demo

ps:本Demo只是演示如何快速建立WCF

1.首先完成IBLL、BLL、Model层的搭建,由于数据访问层不是重点,WCF搭建才是主要内容,所以本Demo略去数据访问层。

新建BLL类库项目,添加UserInfo类如下:

 

 1 namespace Model
 2 {
 3     [DataContract]
 4     public class UserInfo
 5     {
 6         [DataMember]
 7         public int Id { get; set; }
 8         [DataMember]
 9         public string Name { get; set; }
10     }
11 }

 

当实体对象作为网络传输时需要被序列化,所以注意以下几点:

  1.不给任何标记将会做XML映射,所有公有属性/字段都会被序列化

  2.[Serializable]标记会将所有可读写字段序列化

  3.[DataContract]和[DataMember]联合使用来标记被序列化的字段

接下来,新建IBLL类库项目,添加IUserInfoService类作为接口契约,代码如下:

1 namespace IBLL
2 {
3     [ServiceContract]
4     public interface IUserInfoService
5     {
6         [OperationContract]
7         UserInfo GetUser(int id);
8     }
9 }

ps:需要操作的方法一定要记得打上标签!

同样,新建BLL类库项目,添加UserInfoService类,代码如下(只为测试WCF搭建):

 1 namespace BLL
 2 {
 3     public class UserInfoService:IUserInfoService
 4     {
 5         public UserInfo GetUser(int id)
 6         {
 7             return new UserInfo() { Id = id, Name = "test" };
 8         }
 9     }
10 }

 

2.搭建WCFHost(宿主)

新建一个控制台项目,在配置文件app.config中的configuration节点下添加:

<system.serviceModel>
    <services>
      <service name="BLL.UserInfoService" behaviorConfiguration="behaviorConfiguration">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/"/>
          </baseAddresses>
        </host>
        <endpoint address="" binding="basicHttpBinding" contract="IBLL.IUserInfoService"></endpoint>
      </service>
    </services>
    
    <behaviors>
      <serviceBehaviors>
        <behavior name="behaviorConfiguration">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

注意以下几点:

  1.因为是本地测试,所以baseAddress填写了本地的地址,这个可以根据实际修改。

   2.service节点的name属性要修改为BLL层具体服务类的“命名空间+类名”。

  3.endpoint节点的contract属性要修改为IBLL层具体服务类接口的“命名空间+接口名”。

主程序代码中添加:

1 using (ServiceHost host = new ServiceHost(typeof(UserInfoService)))
2             {
3                 host.Open();
4                 Console.WriteLine("服务已启动,按任意键中止...");
5                 Console.ReadKey();
6                 host.Close();
7             }

ps:typeof()中换成要调用的服务类。

在项目上右键选择“在文件资源管理器中打开文件夹”,找到可执行程序WCFService.exe,右键选择“以管理员身份运行”。

 

3.最后一步,就是来测试我们的WCF服务是否搭建成功了,新建一个winform窗体项目WCFClient,在项目右键,添加服务引用,在地址栏输入   http://localhost:8000/  (配置文件中填写的baseAddress)。在该程序中调用刚刚搭建好的WCF服务:

1 UserInfoServiceClient client = new UserInfoServiceClient();
2 UserInfo u =  client.GetUser(5);
3 MessageBox.Show(u.Id + "-" + u.Name);

运行后,弹出消息,表示WCF服务搭建成功!

 

发表评论
用户名: 匿名