zoukankan      html  css  js  c++  java
  • 我的WCF开发框架简化版及基于NET.TCP传输方式的实现

    前面介绍很多关于我的WCF开发框架的文章,前面的介绍思路,主要是基于一个整个仓库管理系统来进行整体介绍的,本来另辟蹊径,着重介绍一个备件信息的表的在我的WCF开发框架中,各层是如何体现的,通过简单的一个表的操作,走完一个WCF开发过程,着重介绍一个对象类,如何实现整个wcf的应用。另外穿插介绍如何基于net.tcp传输方式实现wcf的应用,以及使用这种方式需要注重的地方等功能模块的介绍。

    我们先来看看我的WCF开发框架整体架构设计图。

     

    上图中,值得注意的是,WCF服务层,可以Host(寄宿)在IIS中,也可以Host在Console控制台应用程序中,或者Windows服务中等方式。

    WCF 代理层一般通过在程序中添加服务引用的方式添加,添加成功后会自动生成WCF客户端的代理层,类似于添加WebService的方式。

    UI可以是Winform的实现、也可以是Web的方式实现,甚至还可以是其他方式的UI实现。由于我前面介绍的WCF开发框架中,主要以Winform方式来体现,本文就另外使用asp.net的Web方式来简单介绍使用WCF服务的例子,通过简单的调用使用,我们更加清晰其调用逻辑,更好的串联起来整个WCF开发框架的实现思路。

    1、 WCF服务开发

    首先我们来了解一个WCF服务的开发,需要实现那些东西。从下图可以看到,需要独立一个实体类层,因为实体类是需要很多地方引用的,独立又很多好处。

    其次就是业务层,它需要把我们的业务逻辑+数据访问层(可以实现多种数据库的操作)放到一起,这样作为一个整体的项目工程,更加方便管理。

    创建一个WCF服务工程,添加一些必要的接口层以及配置信息,就可以实现了。具体的操作过程,可以参考《基于我的Winform开发框架扩展而成的WCF开发框架》这篇文章的介绍。

    其中WCF服务层的开发就差不多定型了,您需要做的就是完善整个业务逻辑以及服务的调用(调用业务逻辑相关信息),如果你是使用我的WCF开发框架,所有基类的东西(包括业务层各种基类,WCF服务层的基类接口及服务基类)都是可以不用操心的,只需要实现自己的业务逻辑即可。

    2、WCF服务发布及调用

    通过以上的步骤1创建了WCF服务后,接下来就是如何Host我们创建的WCF服务并在客户进行调用了。WCF服务一般建议通过IIS的Host方式,这样方便管理也方便操作。如果您发布的WCF服务是net.tcp的传输方式,而且你的IIS是XP或者Win2003的,那么只能通过控制台的Host方式进发布服务了。因为Net.tcp的寄宿方式是需要IIS7以上的版本才可以。

    控制台的Host方式也很简单,通过应用步骤1的WCF服务项目,然后再Program.cs类中实现下面的代码即可。

    复制代码
            static void Main(string[] args)
            {
                try
                {
                    ServiceHost serviceHost = new ServiceHost(typeof(ItemDetailService));
                    serviceHost.Open();
                    Console.WriteLine("服务正在进行侦听......");
                    Console.ReadLine();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    Console.ReadLine();
                }
            }
    复制代码

    运行后,效果如下所示,就表示WCF顺利通过控制台Host成功了。

    WCF客户端(本例为asp.net例子)的调用代码如下所示.

    复制代码
    namespace TestNetTcpApp
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!this.IsPostBack)
                {
                    BindData();
                }
            }
    
            private void BindData()
            {
                ItemDetailServiceClient client = new ItemDetailServiceClient();
                DataTable dt = client.FindToDataTable(string.Format("ItemName like '%六角螺栓%' or ItemName like '%轴承%'"));
                if (dt != null)
                {
                    dt.Columns.Add("Seq", typeof(int));
                    int i = 0;
                    foreach (DataRow dr in dt.Rows)
                    {
                        dr["Seq"] = i++;
                    }
                }
                this.dg.DataSource = dt;
                this.dg.DataBind();
    
                //new ItemDetailServiceClient().Using(client =>
                //{
                //    this.dg.DataSource = client.Find(string.Format("ItemName like '%六角螺栓%'"));
                //    this.dg.DataBind();
                //});
            }
        }
    }
    复制代码

    以上是简单的数据绑定例子,唯一值得注意的就是,本例因为考虑通过net.tcp的方式进行数据传输(也就是网络式局域网内的),因此在调用的页面,将会显示上千条的数据进行测试。如下界面所示。

    3、配置信息要求。

     一般的WCF服务,服务的Web.Config和调用客户的配置文件,都要对服务的相关参数进行配置,否则,很容易出现各种各种的错误提示,有响应超时、数据字节数超过支持数量、或者集合列表数据量大于设定值等等相关的错误。

    1)数据量大或者集合大的配置

    对于集合数据比较大,或者数量比较多的时候,如上传的图片字节比较大、返回的列表集合比较大等情况,会出现调用错误,其实这些都是因为配置参数的问题,修改即可避免,但是如果开始就知道避免,会减少反复调试的时间,提高开发效率。

    2)Net.tcp的参数配置

    这种方式一般是考虑在内外(局域网内)的服务调用考虑,这个调用响应会比较快,但是和传统的http配置方式有所差别,下面介绍他们的配置内容。

    主要研究技术:代码生成工具、Visio二次开发、送水管理软件等共享软件开发
    专注于Winform开发框架、WCF开发框架的研究及应用。
      转载请注明出处:
    撰写人:伍华聪  http://www.iqidi.com 
        
     
  • 相关阅读:
    Azure PowerShell (7) 使用CSV文件批量设置Virtual Machine Endpoint
    Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台
    Azure China (7) 使用WebMetrix将Web Site发布至Azure China
    Microsoft Azure News(4) Azure新D系列虚拟机上线
    Windows Azure Cloud Service (38) 微软IaaS与PaaS比较
    Windows Azure Cloud Service (37) 浅谈Cloud Service
    Azure PowerShell (6) 设置单个Virtual Machine Endpoint
    Azure PowerShell (5) 使用Azure PowerShell创建简单的Azure虚拟机和Linux虚拟机
    功能代码(1)---通过Jquery来处理复选框
    案例1.用Ajax实现用户名的校验
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2545218.html
Copyright © 2011-2022 走看看