• WCF快速搭建Demo


    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服务搭建成功!

  • 相关阅读:
    【分治】动态点分治 ([ZJOI2007]捉迷藏)
    【图论】Tarjan 割点(割顶)
    selenium (五) ActionChains
    selenium (四) WebDriverWait 与 expected_conditions
    selenium (三) 下拉框选项操作
    selenium (二) 浏览器的基本操作
    selenium (一) webdriver 元素定位方法
    selenium 常见问题
    locust 实战:完成用户登录并下单的流程
    MyEclipse 工具过期后,重新激活方法
  • 原文地址:https://www.cnblogs.com/sunniest/p/4383505.html
Copyright © 2020-2023  润新知