当前位置: 首页 > news >正文

网站建设毕业答辩ppt模板下载wordpress 不提示更新

网站建设毕业答辩ppt模板下载,wordpress 不提示更新,下载的网站模板怎么修改,外贸业务流程背景#xff1a; 最近在做一个项目#xff0c;需要用到两个第三方组件#xff1a;北京莲塘语音组件和CMailSever前者作为语音聊天室的二次开发组件#xff0c;后者用于网站的小型邮件系统二次开发组件 需求#xff1a; 用户在主程序登陆后#xff0c;无须再次登陆…背景    最近在做一个项目需要用到两个第三方组件北京莲塘语音组件和CMailSever前者作为语音聊天室的二次开发组件后者用于网站的小型邮件系统二次开发组件 需求    用户在主程序登陆后无须再次登陆聊天室和邮件系统即实现一次登陆全站通行 下面将给出对应方案以及其对事务处理的依赖程度并给出解决方案 方案    用户在注册时同时向聊天室和邮件系统注册一个用户在用户修改密码时对应修改聊天室和邮件系统这样当用户进入聊天室和邮件系统主系统只需要向其传递用户和密码即可满足需求 该方案存在的问题及其解决方案    在用户注册或者修改密码信息时如果有一个聊天室和邮件系统出现错误那么用户将有可能不能登陆其中一个系统这就提出一个原子事务的问题为注册和修改密码加上原子事务处理C#伪代码如下 using System.EnterpriseServices ;[Transaction(TransactionOption.Required)]public class Users : System.EnterpriseServices.ServicedComponent{    [AutoComplete]    public static void ModifyPassword(string userName , string olePassword , string newPassword)    {         ModifyMainSystemPassword(userName,newPassword) ; //修改主程序数据库密码         ModifyVoiceChatPassword(userName,newPassword) ;  //修改聊天室密码         ModifyMailSystemPassword(userName,newPassword) ; //修改邮件系统密码    }} 这样就可以实现当有一个系统修改密码出错时都会自动回滚到原来的状态了OK问题解决了 进一步思考但事情却没有想象的简单使用以上代码必须存在一个前提条件聊天室和邮件系统组件必须支持事务性这样才能在应用程序之间共享事务达到事务提交/回滚的目的 思路暂时中断....... 在CSDN论坛得到思归的帮助如何对非事务性组件实现事务处理即使用所谓的资源补偿器(CRMs)下面简要说说实现的步骤对于第1,2,4步可以在SDK中搜索System.EnterpriseServices.CompensatingResourceManager命名空间得到更详细的信息或则参见Compensating Resource Managers (CRMs) 这里贴出代码是为了实现的完整性第3步是我本人扩充的SDK无此描述 1,实现一个CRM类 using namespace#region using namespaceusing System;using System.IO;using System.Reflection;using System.EnterpriseServices;using System.EnterpriseServices.CompensatingResourceManager;[assembly: ApplicationActivation(ActivationOption.Server)][assembly: ApplicationCrmEnabled][assembly: AssemblyKeyFile(crm.key)]#endregionnamespace CrmServer {实现代码#region 实现代码      [Transaction]      // Create a Worker class.      public class CRMWorker:ServicedComponent      {            public void CRMMethod(string fileName, bool bCommit)            {                  // Create clerk object.                  Clerk clerk  new Clerk(typeof(CRMCompensator), CRMCompensator, CompensatorOptions.AllPhases);                  clerk.WriteLogRecord(fileName);                  clerk.ForceLog();                  if (bCommit)                        ContextUtil.SetComplete();                  else                        ContextUtil.SetAbort();            }            }      // Create class derived from Compensator class.      public class CRMCompensator:Compensator      {            bool bBeginPrepareCalled  false;            bool bPrepareRecordCalled  false;            bool bBeginCommitCalled  false;            bool bCommitRecordCalled  false;            bool bBeginAbortCalled  false;            bool bAbortRecordCalled  false;                  String _fileName;                  public override void BeginPrepare()            {                  bBeginPrepareCalled  true;            }                  public override bool PrepareRecord(LogRecord rec)            {                  Object o  rec.Record;                  _fileName  o.ToString();                  bPrepareRecordCalled  true;                  return false;            }                  public override bool EndPrepare()            {                  if (!bBeginPrepareCalled)                  {return false;}                     if (!bPrepareRecordCalled)                  {return false;}                     if (_fileNamenull)                  {return false;}                  // This is a Prepare Phase success.                  return true;            }                  public override void BeginCommit(bool fRecovery)            {                  bBeginCommitCalled  true;            }                  public override bool CommitRecord(LogRecord rec)            {                  bCommitRecordCalled  true;                  return true;            }                  public override void EndCommit()            {                  if (!bBeginCommitCalled)                  {return;}                     if (!bCommitRecordCalled)                  {return;}                  if (_fileNamenull)                  {return;}                  // This is a Commit Phase success.            }                  public override void BeginAbort(bool fRecovery)            {                  bBeginAbortCalled  true;            }                  public override bool AbortRecord(LogRecord rec)            {                  bAbortRecordCalled  true;                  Object o  rec.Record;                  _fileName  o.ToString();                  return true;            }                  public override void EndAbort()            {                  if (!bBeginAbortCalled)                  {return;}                     if (!bAbortRecordCalled)                  {return;}                                 if (_fileNamenull)                  {return;}                  // This is an Abort Phase success.            }            }#endregion} 2,生成强名编译成托管dll[C#]sn –k crm.keycsc /t:library /r:System.EnterpriseServices.dll crm.cs 3,使用命令行把托管dll注册为com服务RegSvcs /:appname : CrmServer CrmServer.dll 4,在应用程序中调用com服务[示例代码] using namespace#region using namespaceusing System;using System.IO;using System.EnterpriseServices;using CrmServer;using System.Runtime.InteropServices;#endregionclass CRM{      public static int Main()      {                       string logfilename  crm.log;            Console.WriteLine(Creating a managed CRM worker object);            CRMWorker crmworker  new CRMWorker();            Console.WriteLine(Demonstrating a worker commit);            crmworker.CRMMethod(logfilename, true);            Console.WriteLine(Demonstrating a worker abort);            crmworker.CRMMethod(logfilename, false);            Console.WriteLine(DONE!);            return 0;         }}  哇哈!终于可以交一份满意的差了! 准备在项目上实现上面的方案了但是快乐之后仍需理智的思考这样真的可以实现我们的要求吗 这个方案至少有以下问题1,需要在服务器注册com服务部署不方便 2,代码结构变复杂了3,如果我们的web应用程序需要通过mono部署在linux系统呢 ......晕到别挑刺儿了...... 不满是前进的唯一动力会有更好的解决方案吗 我不断问我自己终于工夫不负有心人终于想到一个“完美的方案”1,分解模块把聊天室和邮件系统和主系统独立出来2,在用户注册时所有用户的聊天室和邮件系统密码都是一样的这个密码信息存储在配置文件或数据库中这样当用户进入聊天室和邮件系统传递这个密码过去就了3,用户修改密码时不需要修改聊天室和邮件系统密码因为它们永远是一样的这样做的话就剩下一个问题如果注册的时候出错怎么办 下面给出两种解决方案1,在用户每次登陆前都重新注册一次[不怎么好]2,当用户注册时忽略错误在后台提供一个给管理员手工添加用户信息到聊天室和邮件系统的功能当用户出现问题时联系管理员处理[比较好] 众里寻他千百度蓦然回首那人却在灯火阑珊处 自得其乐板砖不断......转载于:https://www.cnblogs.com/kwklover/archive/2004/12/02/71800.html
http://www.pierceye.com/news/271972/

相关文章:

  • 商融交通建设工程有限公司网站wordpress的伪静太文件
  • 网站rar文件做sorry动图的网站
  • 有合作社做网站得不备案期间关网站吗
  • 南京城乡住房建设厅网站wordpress文章模板下载
  • 有一个做搞笑英语视频网站外贸建站优化
  • 苏州公司建设网站深圳品牌蛋糕店有哪些品牌排行
  • 手机网站建设视频教程、网站建设项目功能需求分析报告
  • 纸 技术支持 东莞网站建设wordpress 手机 自建站
  • 网站后台 搜索广告发布合同模板
  • 手机网站设计教程网站建设 职位
  • 外贸网站图片素材谷歌seo和百度seo区别
  • 龙华网站 建设深圳信科潍坊网站建设培训
  • 域名网站平台qq在线登录
  • 成都做网站建设公司网站建设公司销售技巧
  • 打开网站是iis7三亚最新发布
  • php外贸网站中山网站建设方案报价
  • 好网站建设公司开发方案广告传媒公司加盟
  • 郑州膏药网站建设石家庄seo管理
  • 做国外产品描述的网站营销wordpress
  • 服务器2003怎么做网站枣庄网站建设电话
  • 南京网站建设一条龙汶上网站制作
  • 黑龙江微信网站开发郑州热门网络推广免费咨询
  • 深圳坪山站永久免费linux服务器
  • 东莞网站建议ipv6在家做网站
  • 政务网站源码1688电脑网页版
  • 大连企业网站网站rar文件
  • 揭阳东莞网站建设手机网站分享代码
  • 网站设计风格分析wordpress 用户介绍
  • 中国教育网站官网wordpress 自定义循环
  • 中国婚恋网站排名苏州网站建设设计公司哪家好