精华内容
下载资源
问答
  • WCF开发框架形成之旅--WCF应用常见问题处理
    2017-12-04 11:59:00

    本文继续前面几篇关于WCF开发框架的随笔,继续介绍WCF的一些经验和知识,其中主要介绍在使用WCF开发中碰到的问题以及解决方法,为自己做个记号,也为后来者提供解决思路,其中包括有动态修改 WCF配置内容、规范WCF客户端的调用和处理。 

    1、 动态修改WCF配置内容

    由于在软件登录界面中,需要提供用户切换内网、外网的功能,而配置文件中内外网的地址配置是不一样的,因此需要动态修改应用程序的配置文件,然后更新其中节点内容,界面如下所示。

     

    修改WCF节点的C#代码如下所示

             private  void ChangeConfig() 

            {
                bool isIntranet = radNetType.EditValue.ToString() == "内网";
                if (isIntranet)
                {
                    UpdateConfig("192.168.1.2""8002");
                }
                else
                {
                    UpdateConfig("219.136.1.2""8002");
                }
            }

            private void UpdateConfig(string serverIPAddress, string serverPort)
            {
                //Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location);  
                Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                ConfigurationSectionGroup sct = config.SectionGroups["system.serviceModel"];
                ServiceModelSectionGroup serviceModelSectionGroup = sct as ServiceModelSectionGroup;
                ClientSection clientSection = serviceModelSectionGroup.Client;

                foreach (ChannelEndpointElement item in clientSection.Endpoints)
                {
                    string pattern = "://.*/";
                    string address = item.Address.ToString();
                    if (address.ToLower().Contains("localhost"))
                        return;

                    string replacement = string.Format("://{0}:{1}/", serverIPAddress, serverPort);
                    address = Regex.Replace(address, pattern, replacement);
                    item.Address = new Uri(address);
                }

                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection("system.serviceModel");
            }

    其中为了调试方便,在修改配置文件代码里面,判断地址如果是localhost的则不进行修改切换。

    2、 规范WCF客户端的调用处理。

    在创建WCF服务客户端实例的时候,我们可能会这样共创建客户端并调用,就是在窗体的顶部,创建一个该窗体内的全局WCF服务客户端实例。

         public  partial  class FrmParkUser : BaseDock
        {
             private DeviceUserServiceClient client =  new DeviceUserServiceClient();
             public  string ID =  string.Empty;

             public FrmParkUser()
            {
                InitializeComponent();
            }

            .................  

    实际使用wcf客户端的时候,我们可能会这样调用。

                 this.winGridViewPager1.PagerInfo.RecordCount = client.GetRecordCount2( where);

                this.winGridViewPager1.DataSource = client.SearchParkUser(wherethis.winGridViewPager1.PagerInfo);

    OK,其实这样使用看起来是没什么问题的,而且也能顺利使用,不过,由于wcf客户端都有一个超时时间,可能静止过了一段时间,你在界面刷新数据的时候,你会发现出现下面的错误:"通信对象 System.ServiceModel.Channels.ServiceChannel 无法用于通信,因为其处于“出错”状态。" 

    或者是一些奇怪的错误信息。

    既然上面的调用不好,那么我们应该如何调用客户端呢,有人这样调用。

    using (var client =  new SomeWCFServiceClient()) 
    {
         // Do something with the client 

    }  

    其实这样操作,更不好,也会出现上面红色的错误,微软建议的调用方式应该是这样的

    try
    {
        ...
        client.Close();
    }
    catch (CommunicationException e)
    {
        ...
        client.Abort();
    }
    catch (TimeoutException e)
    {
        ...
        client.Abort();
    }
    catch (Exception e)
    {
        ...
        client.Abort();
         throw;

    }  

    但如果调用频繁,这样实在不雅,管理也非常难受。有没有更好的方式,避免出错,又能够正确调用wcf客户吗,当然有,下面这样方式就是比较好的一种解决方案,经过实际测试,效果不错。

    1、 首先创建一个扩展辅助类,代码如下所示

         ///   <summary>
        
    ///  WCF服务包装类,避免使用Using等方式导致服务出错的问题
        
    ///   </summary>
         public  static  class WcfExtensions
        {
             public  static  void Using<T>( this T client, Action<T> work)
                 where T : ICommunicationObject
            {
                 try
                {
                    work(client);
                    client.Close();
                }
                 catch (CommunicationException e)
                {
                    client.Abort();
                }
                 catch (TimeoutException e)
                {
                    client.Abort();
                }
                 catch (Exception e)
                {
                    client.Abort();
                     throw;
                }
            }

        }   

    然后实际调用的时候,如下即可,看起来还是非常简单的,这样是即需创建的代理客户端,即使很久不操作,也不会发生超时等错误信息了。

             private  void GetTable()
            {
                 new EnterpriseServiceClient().Using(enterpriseClient =>
                {
                    DataTable dt = enterpriseClient.GetAllForLookUp();
                     this.searchPark.Properties.DisplayMember =  " PARK_NAME ";
                     this.searchPark.Properties.ValueMember =  " ID ";
                     this.searchPark.Properties.DataSource = dt;
                }); 

                 new ManufacturerServiceClient().Using(manufacturerClient =>
                {
                    ManufacturerInfo[] manuList = manufacturerClient.GetAll();
                     this.searchCompany.Properties.DisplayMember =  " CompanyName ";
                     this.searchCompany.Properties.ValueMember =  " ID ";
                     this.searchCompany.Properties.DataSource = manuList;
                }); 
           } 

     或者如下例子。

                ManufacturerInfo info =  null;
                 new ManufacturerServiceClient().Using(manufacturerClient =>
                    {
                        info = manufacturerClient.FindByID(searchCompany.EditValue.ToString());
                    });
                 if (info !=  null)
                {
                     this.txtCompanyAddr.Text = info.CompanyAddr;
                } 

     本文转自博客园伍华聪的博客,原文链接:WCF开发框架形成之旅--WCF应用常见问题处理,如需转载请自行联系原博主。



    更多相关内容
  • SOA是一个组件模型,它将应用程序的不同功能单元称为服务通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件...此文档为简单介绍面向 SOA 的 WCF 开发框架
  • C# WCF快速开发框架 | 原创作品

    千次阅读 2018-12-21 13:51:00
    C# WCF快速开发框架 | C/S框架网原创作品 多年来,我们积累了数百家用户,他们使用开发框架成功开发应用在多个行业的系统,如制造、物流、贸易、零售行业的ERP、MRP、CRM、MIS、HIS、MES、POS等基于C/S架构的...

     

    C# WCF快速开发框架 | C/S框架网原创作品

     

    C# WCF快速开发框架 | 原创作品


    多年来,我们积累了数百家用户,他们使用开发框架成功开发应用在多个行业的系统,如制造、物流、贸易、零售行业的ERP、MRP、CRM、MIS、HIS、MES、POS等基于C/S架构的数据库管理系统。


    我们积极收集用户反馈的意见,历经迭代升级,最新版本很难发现系统性缺陷。我们秉着分享成功经验,坚持创新原则,永久性提供优质的售后服务与技术保障,每次发布新版本总会给用户带来惊喜,每次免费升级让用户感到贴心的温暖,许多个每次,我们感受到成功和喜悦,欢迎选购我们的产品。

     

    C# WCF快速开发框架主要面向IT专业技术人员,如软件工程师,系统架构师等,免费提供专业的开发框架相关的解决方案、原创技术文档与原创源码等,在商业层面,提供基于.NET Winform平台的C/S(Client/Server)系统的设计与研发服务配套的开源框架。本站全面剖析了.NET快速开发平台的核心组成部分以及快速开发能力,结合UML图、系统架构图、开发文档与源代码全面展示给广大用户。

     

    下面重点推荐几款C# WCF快速开发框架:

     

    C/S系统WCF快速开发框架旗舰版V5.0(Ultimate Edition)
     
     
    C/S系统快速开发框架旗舰版V5.0
     
     产品介绍 
     
        C/S系统开发框架旗舰版为软件团队提供强大的技术支撑以及快速开发能力,开发框架集成大量的通用开发包与工具实用类,提供丰富的例子,借助技术文档、网站资源、演示源码以及在线技术指导,用户能快速投入研发自己的项目。自2007年首发开发框架以来,我们成功积累了2000多位用户,其中包括数百家软件公司或大型集团企业。经过十年的产品迭代升级,最新旗舰版技术更成熟,性能更稳定,产出效率更高!
     
        配套的代码生成器工具能自动生成界面(FORM)、业务层(BLL)、数据层(DAL)、模型(Model)、报表(Report)以及业务模块(Class Library DLL)的源代码,极大地提高开发效率、节约开发时间、降低项目成本。据多年项目实践统计,开发框架基本能完成项目大概60%以上的工作量。
     
        开发框架经过严格的技术验证和系统测试,如压力测试,得到广大用户的赞誉和好评。我们积极收集用户反馈的意见,不断完善和改进,最新版本极少有系统性缺陷。我们秉着分享成功经验,坚持创新原则,永久提供优质的售后服务与技术保障。每次发布新版本,一定会给用户带来惊喜,每次免费升级,一定能让用户感到贴心和温暖。我们秉着创新、专注、专业,始终如一的精神理念,乐于分享成功和喜悦,欢迎选购我们的产品。
     

     
     
    C/S系统WCF开发框架-企业版 v4.5.3
     
     
    C/S系统开发框架-企业版 v4.5.3
     
     
     
    C/S系统WCF开发框架-高级版3.0 (Bridge/WCF)
     
     
    C/S系统开发框架-高级版3.0 (Bridge/WCF)
     
     
     

     

    转载于:https://www.cnblogs.com/jonnysun/p/10155348.html

    展开全文
  • 在上篇随笔《Winform开发框架之框架演化》中介绍了几种Winform开发框架,其中有对于离线式WCF开发框架的介绍,离线式的WCF开发框架 ,就是结合了传统Winform开发框架的数据访问方式,又利用了WCF分布式数据获取的...

    在上篇随笔《Winform开发框架之框架演化》中介绍了几种Winform开发框架,其中有对于离线式WCF开发框架的介绍,离线式的WCF开发框架 ,就是结合了传统Winform开发框架的数据访问方式,又利用了WCF分布式数据获取的特点,使得数据可以离线使用,在一种业务要求集中化,又要求不影响正常业务操作的应用系统场景下比较适合。本文主要介绍如何利用我的Winform开发框架的整体思路,实现WCF开发框架的离线式的数据上传、更新的同步操作。

    其实目前企业集中化管理,这种模式要求很多,如一些加盟店的情况,需要独立运行,有可以对一些总店关键数据进行提交或者下载,如客户信息等。这种情况下,就要求我们开发者提供适合应用场景的开发框架进行支持。离线式的WCF开发框架,一个特点就是基本上显示,以及保存等操作数据库的数据,都是本地的数据库,不是远端的服务器数据库,这样,就需要记录所有发生变更的数据库操作,包括写入,删除、修改等,以便在网络畅通的情况下,可以上传数据到服务器上面。

    下面我们来分析下这种离线式的WCF开发框架,需要做哪些准备工作,来实现框架的支撑。

    1、数据库表记录ID定义唯一性。

    这个是常见分布式系统的要求了,在一些普通的Winform程序的数据库中也比较常见,之所以把它作为第一条,虽然简单,但是很必要,因为需要避免分布式的客户端和服务端的数据冲突问题,特别在多个客户端的情况下,对数据的唯一性要有好的控制性。

    所以这也要求基础的框架基类,能够提供对整形、字符型的主键ID的操作兼容性,这在我的Winform开发框架中,支持是比较好的。

    2、多数据库支持

    在分布式的环境下,和服务端的环境不同,部署程序要求越简单越好,太复杂的话,增加客户端的使用的难度,会极大提高维护的成本,因此,一般客户端会选用适应性比较好,又免安装的数据库,如Sqlite就是一个很好的单机版数据库,还有Access也是很不错的,当然还有其他的一些数据库,不过我觉得Sqlite和Access是比较好的备选方案。服务器端的数据库,则看业务支持和响应程度来决定,可以从一些对性能支持比较好的数据库中选型,如大型一点的,可选择Oracle来做,其他的可以选择SqlServer、MySql等数据库。虽然这些数据库部署比较麻烦一点,不过反正只有一台服务器需要这种安装部署,所以工作难度及工作量不会很大。

    对多数据库的支持,也要求我们的开发框架能够很好兼容,最好在数据库操作层可以通过配置方式进行切换,即使数据库变化为其他类型,也不需要改变整体的框架布局,甚至不用变化代码即可实现自由切换,如数据库框架可以设置如下。

     

    对于上面几种数据库的支持,一般来说,需要增加不同数据库类型的BaseDAL,由于每个不同数据库都需要拥有一个BaseDAL,那么很多相同的操作代码就会发生冗余,因为大多数数据库的基础操作是一样的,只有一部分比较特别,需要进行个性化处理,因此对数据访问层进行优化设计,得到下面的设计图,如下所示。

    经过框架抽象,这个BaseDAL类代码很少,基本上通用的数据库操作,已经放到了AbStractBaseDAL超级基类进行封装,即使对于一些不同数据库操作不同,我们也尽可能抽象放到上面基类了,BaseDAL只需要实现一些特殊的操作即可。

     

    3、分布式客户端数据上传设计

    由于分布式,离线式的框架设计,要求我们客户端自行记录数据的变化情况,包括新增数据、修改数据和删除数据,这样不用每次同步的时候,把所有的数据库记录都遍历一次,然后和服务器记录进行比较。这种记录方式,可以极大提高客户端数据上传的性能和快捷性。因为我们对于很多表及记录的数据库,可能每次更新的只是一小部分,这样设计,有利于我们更好地额处理客户端数据上传。

    例如,下面的表,就是对于一个客户端上传记录表的设计,其中Dept_ID是用来记录不同部门的表示,基本上每个客户端,都有自己的一个部门编号,防止数据发生冲突,也方便服务器端的数据进行归类查询。

    下面是一些实际业务产生的数据记录,我们记录部门ID、表名(发生变化)、对应记录的ID(GUID)、修改用户、修改时间等信息。

    另外,我们还可以结合系统来记录用户登录信息、用户对记录修改的日志,以便我们对一些关键操作进行审计需要。数据库设计如下所示。

    4、数据修改记录自动记录

    对于上面的to_upload表,我们是把客户端修改的数据记录信息,记录到表里面去,但是这些肯定是后台自动记录的,而且这个操作是放到基类比较合适,否则每次调用,不太方便,也比较冗余。

    放到基类的操作,我们需要设计一下,否则所有的表都会记录,不管需不需要,这样不可以的。

    首先我们在基类BaseDAL(对Sqlite的数据库基类),增加一个变量来记录是否数据库访问基类,需要记录数据库变化信息。

    protected bool IsLogToUpoad = false; //表示是否记录变化

    对于具体业务对象的数据访问,我的Winform开发框架都有提供一个对应的类来进行操作。

        /// <summary>
        /// 药品信息
        /// </summary>
        public class DrugDetail : BaseDAL<DrugDetailInfo>, IDrugDetail
        {
            #region 对象实例及构造函数
    
            public static DrugDetail Instance
            {
                get
                {
                    return new DrugDetail();
                }
            }
            public DrugDetail() : base("M_DrugDetail","ID")
            {
                this.IsLogToUpoad = true;
                this.sortField = "EditTime";
                this.isDescending = true;
            }
    
            #endregion
    ..........................................

    为了要实现自动记录数据库变化信息,我们需要在BaseDAL里面对插入、修改、删除的操作进行特别的处理,重载基类的操作,增加相应的处理即可,如下代码所示。

            private void AddToUpload(string id, string targetTable, System.Data.Common.DbTransaction trans, int uploadType)
            {
                AppConfig config = new AppConfig();
    
                ToUploadInfo info = new ToUploadInfo();
                info.EditTime = DateTime.Now;
                info.RecordId = id;
                info.TableName = targetTable;
                info.UploadType = uploadType;
                info.Dept_ID = config.AppConfigGet("Dept_ID"); ;
                info.User_ID = config.AppConfigGet("User_ID");
                Hashtable uploadHash = GetHashByObject(info);
                base.Insert(uploadHash, "SS_ToUpload", trans);
            }
    
            public override bool PrivateUpdate(object id, Hashtable recordField, string targetTable, DbTransaction trans)
            {
                bool result = base.PrivateUpdate(id, recordField, targetTable, trans);
                if (result && IsLogToUpoad)
                {
                    AddToUpload(recordField["ID"].ToString(), targetTable, trans, 1);
                }
                return result;
            }
    
            public override bool Insert(System.Collections.Hashtable recordField, string targetTable, System.Data.Common.DbTransaction trans)
            {           
                bool result = base.Insert(recordField, targetTable, trans);
                if (result && IsLogToUpoad)
                {
                    AddToUpload(recordField["ID"].ToString(), targetTable, trans, 0);
                }
                return result;
            }

    由于是上面的PrivateUpdate和Inser方法,是所有派生的更新、插入接口的最原始的函数,所有其他相关函数都会调用这两个的基础函数, 这样就基本实现了数据库记录的变化记录了。

    5、分布式客户端数据和服务器端的同步

    为了和服务器实现同步,需要实现变化记录的上传和服务器修改数据的下载两个方向的工作。

    变化记录的上传从操作,就是遍历to_upload里面的记录,把它更新到服务器上即可。

            /// <summary>
            /// 把本地变化的数据记录,同步到服务器上
            /// </summary>
            /// <returns></returns>
            public bool SyncAll()
            {
                List<ToUploadInfo> toList = BLLFactory<ToUpload>.Instance.GetAll();
                int i = 1;
                int total = toList.Count;
                bool success = false;
    
                foreach (ToUploadInfo toInfo in toList)
                {               
                    switch(toInfo.TableName.ToLower())
                    {
                        case "m_drugusedetail":
                            success = DealDrugUseDetail(toInfo);
                            if (!success) return false;
                            break;
                          .......................................
                          //其他操作,利用服务器代理对象,实现各个表的数据上传   
                    }
    
                    #region 显示进度等处理
                    string tips = string.Format("正在同步表 {0}...", toInfo.TableName);
                    int step = 0;
                    if (total > 0)
                    {
                        step = Convert.ToInt32((100.0 / (1.0 * total)) * i);
                    }
                    if (OnDataDealed != null)
                    {
                        OnDataDealed(step, tips);
                    }
                    i++;
    
                    if (toInfo == null || string.IsNullOrEmpty(toInfo.TableName))
                    {
                        continue;
                    }
                    #endregion
                }
    
                #region 同步系统关键数据
                if (success)
                {
                    //部门
                    SynAllDept();
    
                    //已上传数据表同步
                    DealUploaded();
    
                    SyncBasicData();
                }
    
                #endregion
    
                return true;
            }

     为了实现数据上传操作,我们把逻辑封装在一个函数里面,这样方便管理,也方便阅读。

            private bool DealDrugUseDetail(ToUploadInfo toInfo)
            {
                bool success = false;
                DrugUseDetailInfo objInfo = BLLFactory<DrugUseDetail>.Instance.FindByID(toInfo.RecordId);
                if (objInfo != null && objInfo.Dept_ID == Portal.gc.LoginInfo.Dept_ID)
                {
                    new DrugUseDetailServiceClient().Using(client =>
                    {
                        success = client.InsertUpdate(objInfo, objInfo.ID);
                    });
    
                    if (success)
                    {
                        RemoveToUploadInfo(toInfo);
                    }
                }
                return success;
            }

    数据同步的下载操作,其实也不难,就是把数据对应的记录下载下来进行判断。

            private void DealInHospital()
            {
                List<InHospitalInfo> list = new List<InHospitalInfo>();
                new InHospitalServiceClient().Using(client =>
                {
                    list = client.Find(conditionPilotDept);
                });
    
                int i = 1;
                int total = list.Count;
                foreach (InHospitalInfo info in list)
                {
                    BLLFactory<InHospital>.Instance.InsertUpdate(info, info.ID);
                    ShowProgress(total, i++, "住院信息");
                }
            }

     本文转自博客园伍华聪的博客,原文链接:Winform开发之离线式WCF开发框架的实现介绍,如需转载请自行联系原博主。



    展开全文
  • 在我的《Winform开发框架》系列文章中,除了介绍Winform开发框架外,还详细介绍了基于Winform开发框架的WCF开发框架WCF开发框架除了具有Winform程序的丰富体验,绚丽的界面外,还具备Web应用程序的分布式应用特点...

    在我的《Winform开发框架》系列文章中,除了介绍Winform开发框架外,还详细介绍了基于Winform开发框架的WCF开发框架,WCF开发框架除了具有Winform程序的丰富体验,绚丽的界面外,还具备Web应用程序的分布式应用特点,数据库服务端配置而不用客户端操心等特点,而随着.NET4.0的出现,只有40多M的安装包,也确实为WCF应用的推广使用更加方便。由于WCF应用的分布式这个重要的特点,客户数据全部保存在服务端,因此也提高了数据的安全性,因此很多传统应用的场合都可以使用WCF技术的。本文主要介绍我近年来做WCF开发的案例应用进行总结,对一些问题进行共同探讨,共同进步。

    1、内部跨部门的应用案例

    刚开始由于工作需要,需要开发一个给各部门协作,录入数据、查询资料的小型MIS系统,由于有些人可能需要在外出的时候获取相关的数据,另外一方面,也需要利用Winform界面的良好体验和操作性能,因此选择WCF技术进行开发桌面应用程序,刚刚开始的摸索过程是比较痛苦的,一方面要考虑程序的顺利调用,一方面也要考虑对证书加密技术的应用提高数据的安全性,另外由于是分布式数据应用,因此,也需要考虑程序能够自动升级功能,以便我不断的更新部署。综上所述,解决上面的问题,基本能够建立一个较为完善的WCF应用了。当在其中还可能会碰到自动切换内外网功能、数据量大的配置修改,调用时间等方面的设置因素,这些可能最终都导致调用WCF没那么顺利。

    下面是我开始的第一个内部跨部门的WCF应用案例。

    2、提炼为WCF开发框架。把仓库管理系统提炼为完善的WCF开发框架。

    由于我之前几年一直有开发一些各类型的Winform共享软件,经过多年的积累,逐渐形成我的比较成熟稳定的Winform开发框架,结合新探索研究的WCF技术应用,综合两者的特点,进一步提炼为我的WCF开发框架,这一步提炼虽然看似简单,实则也是整合了我的通用权限管理系统、通用字典管理模块、分页控件、公用类库等组件,把框架的数据基类进一步提炼,扩展并支持Oracle数据库、SqlServer数据库、MS Access数据库、Sqlite数据库等,这些基本上是日常开发,常碰到的数据库了,其他数据库扩展也很方便,集成一个总的数据库基类,然后重载几个特殊的函数即可。另外一方面,也把WCF开发框架应用分为了三个界面样式,传统界面样式、基于DotNetBar的界面样式、基于DevExpress界面控件样式,尤其是DevExpress样式,非常美观。

    1) 基于传统界面样式

    2)基于DevExpress界面样式

     

    整个DevExpress界面样式的程序,在布局及控件使用上,都尽量采用常见美观的界面控件以及美观的图标,使得看起来更加美观大方。

    3、基于互联网的房产中介项目开发

    一个朋友让我开发一个基于互联网的WCF应用,主要就是采集发布房产信息的,可供很多用户在各个地方进行使用,他们把数据集中放到一台租借的虚拟服务器上,有了之前提炼完善的WCF开发框架作为借鉴参考,这一切做起来还是很轻松,真是应了那句话,机会总是青睐有准备的人,呵呵。在这个项目开发总,很多技术问题,不用在反复尝试去解决,只需要集中精力,把他们重要的业务串联起来即可,顺便可以改善一些界面效果,也获得更多的积累,反哺我的WCF开发框架,使之更加精纯。

    在这个软件的开发过程中,发现有些因素会导致接口调用出现错误的,如上传的图片字节比较大、返回的列表集合比较大等情况,会出现调用错误,其实这些都是因为配置参数的问题,修改即可避免,但是如果开始就知道避免,会减少反复调试的时间,提高开发效率。

    4、基于互联网的病人资料管理系统

    过了不多久,由于共享软件中《病人资料管理系统》的使用老客户提出,需要改造目前基于Access单机版的病人资料管理系统为网络版,要求在各处办公的相关人员能够登录管理他们的病人治疗,从而实现多个部门之间的协作,因此我建议他们使用WCF技术部署客户端的应用,这样他们操作起来更加方便灵活,这样顺便可以有效利用我的WCF开发框架成功,他们要求各个不同级别的用户能够操作不同的模块,这些使用权限控制模块就搞定了,几乎可以不费吹灰之力,只需要在权限管理系统界面中定义好相关的功能、角色控制,并在软件中集成控制逻辑即可,这些都可以利用成熟的模式。俗话说,铁打的营盘,流水的兵,在纷繁变化的业务中,不可能要求一个框架包罗万象,不过基础框架搭建的好,底座较好,就像一个稳固的营盘,事半功倍。

    在这两次项目演练过程当中,由于需要远程创建、维护数据库表,填入必要的基础资料等,而且还需要涉及提交图片资料作为数据库字段内容,以及提交图片附件保存到网站的相对目录中,因此也进一步丰富了相关的应用开发过程,罗马不是一天建成的,同样,很多东西,也需要逐步的积累完善,才更加精纯和稳靠。

    在这次开发中,寻找发现了一个很好的图片查看控件,支持图片的反转、滚动放大缩小等操作,而且图片不用下载到本地,非常不错。

    有好的WCF开发框架作为参考,项目做起来肯定会事半功倍,留一些精力做一些拓展性的研究及业务性开发,整体项目做起来就轻松稳妥很多。

    在进行Winform开发或者WCF桌面应用的开发过程中,总体来讲,利用DevExpress可以做出更加丰富、绚丽的界面,虽然开始接触DevExpress控件有些不太习惯,不过用起来还是非常不错,因此做企业应用的时候,我们说服企业购买DevExpress的版权也是会得到

    不少的支持的,比较大家都会比较喜欢好看一些的界面效果。 

    本文转自博客园伍华聪的博客,原文链接:WCF开发框架的案例应用总结,如需转载请自行联系原博主。



    展开全文
  • WCF寄宿方式是一种非常灵活的操作,可以在IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者...我在我前面几篇WCF开发框架的介绍文章中,介绍过了WCF常用的一种寄宿方式,...
  • WCF框架】分布式框架WCF

    千次阅读 热门讨论 2017-12-30 21:37:20
    Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台。整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和...
  • 前面几篇WCF框架的文章,一直是介绍我的WCF框架的形成中的知识,期间虽然我在工作项目中已经成功运用...提炼整合到WCF框架上,这样在成熟的Winform框架基础上应用的WCF技术,才是我整个WCF开发框架的终极形式,虽然...
  • WCF框架 Winform开发框架 c#开发 整个WCF框架和Winform开发框架一样,整合了权限控制管理、字典管理模块、公用类库、通用程序自动更新等模块,具备良好的界面布局和分布式服务应用的特点,支持数据分页、数据导入、...
  • 我的WCF开发框架推出很久了,一直有不少的朋友支持及提供良好的完善意见,随着利用这种基于Winform界面的WCF开发框架开发了不同类型的项目,各种WCF对象的调用及处理逐渐稳定及统一化,因此是时候让我的开发伴侣...
  • 前面介绍很多关于我的WCF开发框架的文章,前面的介绍思路,主要是基于一个整个仓库管理系统来进行整体介绍的,本来另辟蹊径,着重介绍一个备件信息的表的在我的WCF开发框架中,各层是如何体现的,通过简单的一个表的...
  • WCF开发框架形成之旅--您的数据是否需要加密》 有详细的介绍,特别对于重要的、敏感的数据,加密传输非常重要。 因此自从开始使用WCF以来,一直想使用合适的数据加密传输来解决问题,WCF常用的就是使用X509证书来...
  • 自从在《Winform开发框架之插件化应用框架实现》一文中,介绍并总结了Winform开发框架插件化应用框架的实现后,赢得了很多同行和客户的支持,于是把我的WCF开发框架、混合式开发框架都进行了升级,把它们都提升到...
  • WCF开发实战

    2018-10-25 13:42:53
    WCF开发实战系列一:创建第一个WCF服务 WCF开发实战系列二:使用IIS发布WCF服务 WCF开发实战系列三:自运行WCF服务 WCF开发实战系列四:使用Windows服务发布WCF服务 WCF开发实战系列五:创建WCF客户端程序
  • 我在随笔《Winform开发框架之框架演化》和《Winform开发框架之混合型框架的实现》都对Winform框架的变种,混合型框架进行了比较详细的介绍,本文继续上篇对混合型框架进行进一步的说明。混合型框架为了支持WCF方式和...
  • 基于WCF技术,搭建基于分布式的网络应用,目前已经是很常见的应用,在上篇随笔《基于我的Winform开发框架扩展而成的WCF开发框架》中,介绍了我自己的Winform开发框架的一些基础知识及扩展而成的WCF开发框架,上篇...
  • WCF---工业自动化开源框架

    千次阅读 2020-06-15 10:51:00
    WCF包含: 一、运动控制卡;(有示例) 二、HALCON图像处理;(暂无) 三、机械手;(暂无) 四、PLC。(暂无) 源码下载:https://github.com/jiliwei/WCF 一、运动控制卡 1、示例代码: if (读取输入信号...
  • WCF寄宿方式是一种非常灵活的操作,可以在IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,...我在我前面几篇WCF开发框架的介绍文章中,介绍过了WCF常用的一种寄宿方式,IIS服务...
  • WCF开发框架之证书加密使用说明书    WCF开发框架的证书加密操作,前面在框架之旅做了一篇介绍,本文主要是将各种相关知识 点综合起来进行介绍,以期达到系统化介绍在我的WCF开发框架(也可以应用于您的WCF...
  • WCF寄宿方式是一种非常灵活的操作,可以在IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行...本文分别对这几种方式进行详细介绍并开发例子进行说明,以求大家对WCF寄宿的方式进...
  • Easyui开发框架源码 源码描述: 一、功能介绍: 本系统实现的核心功能完全适合企业级开发 1、框架采用多层架构,反射技术。 2、权限管理里实现的功能:按钮管理、菜单管理、角色管理、用户管理、数据字典、单号...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,287
精华内容 6,114
关键字:

wcf 开发框架