zoukankan      html  css  js  c++  java
  • 我的WCF项目系列之五WCF 面向对象开发

    在学习WCF之前,就见到过另一种编程思想,叫做面向服务开发,哈哈,当时不甚了了。

    前面提到,我之前一直用Delphi开发的,所以是学习的Delphi面向对象开发,记得足足有3个多月,写了22万行代码,才算是明白面向对象开发。对我以后的工作和学习打下了结实的基础。

    很长时间,我都是用WCF开发服务,用Delphi开发客户端,其中数据通过WCF交互的部分没有用到面向对象开发的思想,一直到转到C#开发WinForm。

    用C#开发了一些客户端期间,学习了一本书《Expret C#2005 Business Objects》,虽然最后也没有用轨道CSLA架构,可是对我的启发很大。

    一直到自己摸索到的开发风格。一律用类作为WCF数据交互的参数基础。

    略写如下。

    1. 先对一个系统要操作的数据进行规划,类化,即相关的数据组成一个类,

    2. 对主要数据集部分做成段或类,生成类的泛型列表属性

    3. 当然还要完善这个类的其他成员,方法等,才能写成一个有用的类

    4. 把类作为ref读写参数,或作为返回值,返回处理后的她自己

    例如:

    using System;

    using System.Collections.Generic;

    using System.Data;

    using System.Text;

    using myHomeLibrary;//这里写了许多基础的东西,写了一些通用的属性,成员等,算是一个基础类

    namespace BufferLibrary

    {

    public class BufLineItem ///主要数据集部分

    {

    private string _line = "N/A";

    private string _onLine = "N/A";

    private string _onLineFeederList = "N/A";

    private string _linkModel = "N/A";

    private string _linkMO = "N/A";

    private string _typeF = "F";

    public BufLineItem ()

    {

    //

    }

    public string LineName

    {

    get

    {

    return _line;

    }

    set

    {

    if (_line == value)

    return;

    _line = value;

    }

    }

    public string OnLineModel

    {

    get

    {

    return _onLineModel;

    }

    set

    {

    if (_onLineSFCModel == value)

    return;

    _onLineSFCModel = value;

    }

    }

    public string OnLineFeederList

    {

    get

    {

    return _onLineFeederList;

    }

    set

    {

    if (_onLineFeederList == value)

    return;

    _onLineFeederList = value;

    }

    }

    public string LinkSFCModel

    {

    get

    {

    return _linkSFCModel;

    }

    set

    {

    if (_linkSFCModel == value)

    return;

    _linkSFCModel = value;

    }

    }

    public string LinkMO

    {

    get

    {

    return _linkMO;

    }

    set

    {

    if (_linkMO == value)

    return;

    _linkMO = value;

    }

    }

    /// <summary>

    /// TypeF的標示

    /// </summary>

    public string TypeF

    {

    get

    {

    return _typeF;

    }

    set

    {

    if (_typeF == value)

    return;

    _typeF = value;

    }

    }

    }

    public class BufLineItemS : CHome

    {

    //

    private List<BufLineItem> _lineItemS = new List<BufLineItem>();//泛型列表属性成员

    #region 构造函数,析构函数

    public CBufLineItemS()

    {

    ProjectName = "LineItemS";

    ProjectType = 0;

    }

    #endregion

    #region 自定義屬性

    public List<BufLineItem> LineItemS//泛型列表属性

    {

    get

    {

    return _lineItemS;

    }

    set

    {

    if (_lineItemS == value)

    return;

    _lineItemS = value;

    }

    }

    #endregion

    #region 自定義方法

    public BufLineItem ItemOfLine(string _tmpLine)

    {

    BufLineItem _tmpItem = new BufLineItem();

    //

    foreach( BufLineItem _item in _lineItemS )

    {

    if (_item.LineName == _tmpLine)

    {

    _tmpItem = _item;

    break;

    }

    }

    //

    return _tmpItem;

    }

    #endregion

    //

    }

    还有一个把LineItemS转换成DataTable的方法,就不写详细代码啦,以便于客户端DataGrid或作为数据集操作处理

    }

    WCF服务端是这么写的

    [OperationContract]

    bool ExecuteBufLine(ref CBufLineItemS _tmpBufLineItemS, string ftype);

    public bool ExecuteBufLine(ref CBufLineItemS _tmpBufLineItemS, string ftype)

    {

    bool _boRes = false;

    try

    {

    //这里是作为数据库处理,得到数据,就不详细谢啦

    _tmpBufLineItemS.LineItemS.Clear();//这里清空原有数据

    BufLineItem _tmpBufLineItem = new BufLineItem() { LineName = _tmpLine, LinkMO = _tmpWO, LinkModel = _tmpLinkModel, OnLineSFCModel = _tmpOnLineModel, OnLineFeederList = _tmpOnLineBom, Type34F = _tmp34f };//这里是根据数据集处理结果生成新的

    _tmpBufLineItemS.LineItemS.Add(_tmpBufLineItem);//添加数据集

    }

    _boRes = true;

    }

    catch

    {

    _boRes = false;

    }

    return _boRes;

    }

    基本操作就是上述的方式,实际工作中,当然比非面向对象的方式快捷多啦。具体代码部分以后再补上。

  • 相关阅读:
    vue(5)
    vue(4)
    vue(3)-防止闪烁
    vue(2)
    bootstrap 模态框
    2017年上半年工作总结和计划
    vue(1)
    文本框数量加减功能
    meta 控制移动端页面的缩放
    题解 P1550 【[USACO08OCT]打井Watering Hole】
  • 原文地址:https://www.cnblogs.com/cangfriend/p/1860690.html
Copyright © 2011-2022 走看看