我正在玩Delphi.我的大多数桌面开发的是.NET中完成的,并嵌入了C.系统我已经做了一些Web开发的回报率和Python的(Django的,CherryPy的)我有兴趣参加的裂缝在项目,这将是一个Web服务( REST或SOAP)具有本机客户端和Web客户端.
因为我最近被重新激发学习德尔福,我很好奇的选择是构建Web服务和Web客户端与德尔福.大多数Delphi文档都有点过时,但到目前为止我发现了这些选择:
我觉得WebSnap已经死了,但其他技术仍在开发中.是否有关于调查哪种技术的指导?
ps我意识到Delphi并不是一个非常受欢迎的网页开发选择,但我很想尝试,因为我一直在学习VCL.
如何让Intraweb XI应用程序使用其Windows登录凭据对用户进行身份验证?该应用程序在Windows服务器上作为服务运行.
我们只需要允许网络用户访问我们的一些Intraweb应用程序.
如果我想在 Delphi 中编写一个简单但有意义的网络服务器,IntraWeb for Delphi 有其他选择吗?
使用IntraWeb 14.1和Delphi Berlin,我正在创建一个IWRegion
像这样的框架:
Page := TFrame.Create(Self);
Page.Parent := UserSession.Body_Region;
Run Code Online (Sandbox Code Playgroud)
其中,UserSession.Body_Region;
作为decleared Body_Region: TIWRegion;
在UserSessionUnit
通过该区域从形式到形成在运行时,一切工作正常.
问题是我想隐藏UserSession.Body_Region
在运行时加载的Frame,UserSession.Main_Body_Region.Component[0];
但是我无法做到.
我尝过了
(UserSession.Main_Body_Region.Component[0] as TFrame).hide;
Run Code Online (Sandbox Code Playgroud)
要么
(UserSession.Main_Body_Region.Component[0] as TFrame).Visible:= false;
Run Code Online (Sandbox Code Playgroud)
但它不起作用!也没有错误!
有没有其他方法这样做或我错过了什么?
有人为 Intraweb/VCL for Web 创建了皮肤/主题包装吗?
网格等的默认外观非常过时。
任何信息表示赞赏。
我的团队正在维护一个巨大的Client Server win32 Delphi应用程序.它是一个客户端/服务器应用程序(胖客户端),它使用DevArt(SDAC)组件连接到SQL Server.
业务逻辑经常"被困"在Component的事件处理程序中,无论如何,通过一定程度的重构,可以将业务逻辑移动到公共单元中(这项工作的很大一部分已经在重构期间完成了......维护遗留应用程序的人别写的非常令人沮丧,但这是一项非常普遍的工作).
现在有一个Web界面的请求,当然我有几个选项,在这个问题中我想关注VCL for web(intraweb)选项.
我们的想法是为客户端/服务器应用程序和Web应用程序使用公共代码(相同的pas文件).我听说很多人将遗留应用程序从delphi迁移到intraweb,但在这里我也试图保留Thick客户端.
这个想法是使用通用代码,可能会用一些编译器指令来编写特定的代码:
{$IFDEF CLIENTSERVER}
{here goes the thick client specific code}
{$ELSE}
{here goes the Intraweb specific code}
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)
然后另一个问题是"迁移计划",假设我有300个功能,在第一个版本中,我将只在Web应用程序中提供50个.如何跟踪它?我在想(ab)使用Delphi接口来处理这个问题.例如,对于用户身份验证,我可以在过程中移动所有相关代码并声明如下界面:
type
IUserAuthentication= interface['{0D57624C-CDDE-458B-A36C-436AE465B477}']
procedure UserAuthentication;
end;
Run Code Online (Sandbox Code Playgroud)
通过这种方式,当我在两个应用程序(胖客户端和Intraweb)中实现IUserAuthentication接口时,我知道该功能已被"移植"到Web上.无论如何,我不知道这种方法是否有意义.我制作了一个原型来模拟整个过程.它适用于"Hello world"应用程序,但我想知道它是否对大型应用程序有意义,或者这种接口的想法只会适得其反并且会适得其反.
我的问题是:这种方法有意义吗?(接口的想法只是一个额外的想法,它不像上面描述的通用代码部分那么重要)它是一个可行的选择吗?
据我所知,这取决于很多类型的应用程序,无论如何我是CRM/Accounting域中的通用,并且单个安装上的并发用户数通常小于20,峰值为50.
额外评论(更新):我问这个问题是因为我没有n层应用程序,所以我认为Intraweb是拥有一个与胖客户端有共同代码的Web应用程序的唯一选择.在我的特定情况下,从Delphi代码开发Web服务是没有意义的,所以我可以选择使用ASP.NET编写Web界面(复制业务逻辑),但在这种情况下我无法利用公共代码.简单的方法.是的我可以使用dll,但我的代码不适合.
我正在使用IntraWeb应用程序搜索有关数据库连接的信息(在我的案例中为Firebird).
我特别需要知道在带有LockDataModule函数的TDataModule上使用数据库或使用UserSessionUnit上的数据库所涉及的差异.例如,如果没有用户使用服务器,我需要将数据库完全断开连接,并且最多连接30个用户.
我可能最糟糕的是必须连接到一些旧的paradox数据库,我需要一个可以处理它的结构(我知道我必须生成一个基于WebApplication.AppID来处理会话的文件夹).最糟糕的是......
提前感谢您提供给我的任何信息或有用链接^^
我试图使用intraweb建立一个繁忙的社交网站的网络链接.
Intraweb为每个会话创建临时文件夹以存储临时文件,这些文件会在会话到期时自动删除.
如果托管在Win 32上,则限制为65,536个文件夹 - 这意味着只能进行65,000个并发会话.
有没有办法关闭临时文件创建或允许在intraweb中更多的并发会话?
已经在Evil Exchange上被问过,但一如既往没有帮助.我今天遇到这个问题:
使用IntraWeb创建独立Web应用程序时,当我尝试在浏览器中测试我的应用程序中的会话时,我在IDE中遇到此异常:
$ 7C812A6B的首次机会异常.消息'CoInitialize尚未被调用'的异常类EOleSysError.处理WebContactManager.exe(1112)
如果我在IDE异常对话框中单击"继续",浏览器本身就会显示:
200好的
...而不是我主表单上的控件.
当我将ADO替换为其他数据库组件(如dbExpress或BDE)时,似乎不会发生此错误.
这个错误告诉我什么,我该如何解决?
(注意我使用的是"VCL for the Web"IntraWeb组件,内置于D2007).
在此先感谢您的帮助!
我有一个简单的 IntraWeb 测试项目,我的 Unit1 有一个包含 3 个区域的 IWform:页眉、正文和页脚,如下所示:
type
TIWForm1 = class(TIWAppForm)
Body_Region: TIWRegion;
Header_Region: TIWRegion;
Footer_Region: TIWRegion;
public
end;
implementation
{$R *.dfm}
initialization
TIWForm1.SetAsMainForm;
end.
Run Code Online (Sandbox Code Playgroud)
我的Unit2和Unit3是一个IWFrame,它们只有一个按钮,如下所示:
type
TIWFrame2 = class(TFrame)
IWFrameRegion: TIWRegion;
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.
Run Code Online (Sandbox Code Playgroud)
(单元3与单元2相同)
现在,我可以在设计时将框架从工具板拖放到该区域,从而轻松地将框架分配给主体区域。
问题是如何在运行时将其更改为unit3 Frame?
如果我尝试将其添加到这样的类型部分
type
TIWForm1 = class(TIWAppForm)
Body_Region: TIWRegion;
Header_Region: TIWRegion;
Footer_Region: TIWRegion;
MyFram2: TIWFrame2; // added here
procedure IWAppFormShow(Sender: TObject);
public
end;
Run Code Online (Sandbox Code Playgroud)
系统尝试删除它!
如果我强迫保留它以用作
Body_Region.Parent …
Run Code Online (Sandbox Code Playgroud)