Perl与C#&;通信的方法;ASP获取对Perl的响应

Perl与C#&;通信的方法;ASP获取对Perl的响应,c#,asp.net,.net,perl,C#,Asp.net,.net,Perl,我有一个带有ASP网页的.NET应用程序,它使用C#进行服务器端处理和动态控制网页。问题的重点是提交一份表格。然后将提交的表单交给Perl脚本进行处理。但是,在某些情况下,当发生冲突时,需要用户查看并确认或取消流程。因此,Perl脚本需要与C#类进行对话,通过网页提示用户验证数据并确认,然后C#将确认发送给Perl脚本继续 现在,项目可以调用Perl脚本,完成后,它返回一个响应,并显示给用户。我希望能够通过运行Perl脚本定期与网页上的用户通信。这可能吗 我已经研究了Win32::API,但我不

我有一个带有ASP网页的.NET应用程序,它使用C#进行服务器端处理和动态控制网页。问题的重点是提交一份表格。然后将提交的表单交给Perl脚本进行处理。但是,在某些情况下,当发生冲突时,需要用户查看并确认或取消流程。因此,Perl脚本需要与C#类进行对话,通过网页提示用户验证数据并确认,然后C#将确认发送给Perl脚本继续

现在,项目可以调用Perl脚本,完成后,它返回一个响应,并显示给用户。我希望能够通过运行Perl脚本定期与网页上的用户通信。这可能吗

我已经研究了Win32::API,但我不确定这是否是正确的路线

下面是我目前如何从C#调用Perl脚本:

当提交web表单并执行此Perl脚本后,它会将响应异步发送回网页以启动lightbox窗口

<form id="form1" runat="server"><!--div-->
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:Label ID="LabelDate1" runat="server" Text="Date"></asp:Label>
    <asp:Button ID="SubmitBtn" runat="server" Text="Submit" OnClick="SubmitBtn_Click" />
    <asp:Button ID="ClearBtn" runat="server" Text="Clear" UseSubmitBehavior="false" CausesValidation="false" OnClientClick="return CleanForm();" />

    <asp:RegularExpressionValidator ID="Date1Validator" runat="server" ControlToValidate="Date1" ValidationExpression="\d\d/\d\d/\d\d" ErrorMessage="Please enter valid date."></asp:RegularExpressionValidator>
    <asp:CalendarExtender ID="CalendarExtender1" CssClass="input" runat="server" TargetControlID="Date1" TodaysDateFormat="MMMM d, yyyy" Format="MM/dd/yy" OnClientDateSelectionChanged="callserver"></asp:CalendarExtender>
    <asp:FilteredTextBoxExtender ID="DateFilter" runat="server" TargetControlID="Date1" FilterType="Custom, Numbers" ValidChars="/" />

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div id="light" class="white_content"><asp:Label ID="lbText" runat="server" Text="Label"></asp:Label><br /><br /><a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Close</a></div>
            <div id="fade" class="black_overlay"></div>

            <DBWC:DynamicControlsPlaceholder ID="PlaceHolder" runat="server" ControlsWithoutIDs="DontPersist"></DBWC:DynamicControlsPlaceholder>
            <asp:Literal ID="LiteralJS" runat="server" Visible="false"></asp:Literal>
            <asp:Label ID="ccrTitle" runat="server"></asp:Label>

        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="CalendarUpdateBtn" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="SubmitBtn" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="ClearBtn" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>


<!--/div-->
</form>


非常感谢

鉴于Perl需要与C#进程“对话”,我的建议是使用一种在Perl和C#之间工作良好的消息传递协议

STOP -将是一种选择-在C侧和网上使用APACHEMS::在Perl侧上跺脚,在中间的STOP服务器。 ZeroMQ可能值得一看——它可以简化事情,因为您不需要单独的代理进程

AMQP-将是第三种选择


当然,让Perl与C对话的另一个好方法是在C代码中设置一个web服务,并让Perl使用Mojo::UserAgent或类似工具调用它。

查看PerlNET-感谢JMK的提示。我已经看过PerlNET,不确定这是否能满足我的需要。我只是尝试一个到.NET的简单链接,但不起作用。我希望在这种情况下,我相信我可以让Perl脚本调用C#函数将消息发送回网页,但我无法让Perl与.NET一起工作,更不用说导入我的C#DLL并调用其函数了。有什么建议吗?很抱歉我没有,我最近才开始学习Perl,希望其他人会=)我现在知道PerlNET是ActiveState Perl开发工具包(PDK)的一部分,我没有。谢谢。我们实际上在另一个项目中使用了ZeroMQ,它非常快速和友好。现在我已经看到了它的使用,我希望能将它添加到他的项目中。谢谢你提供的信息。
<form id="form1" runat="server"><!--div-->
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:Label ID="LabelDate1" runat="server" Text="Date"></asp:Label>
    <asp:Button ID="SubmitBtn" runat="server" Text="Submit" OnClick="SubmitBtn_Click" />
    <asp:Button ID="ClearBtn" runat="server" Text="Clear" UseSubmitBehavior="false" CausesValidation="false" OnClientClick="return CleanForm();" />

    <asp:RegularExpressionValidator ID="Date1Validator" runat="server" ControlToValidate="Date1" ValidationExpression="\d\d/\d\d/\d\d" ErrorMessage="Please enter valid date."></asp:RegularExpressionValidator>
    <asp:CalendarExtender ID="CalendarExtender1" CssClass="input" runat="server" TargetControlID="Date1" TodaysDateFormat="MMMM d, yyyy" Format="MM/dd/yy" OnClientDateSelectionChanged="callserver"></asp:CalendarExtender>
    <asp:FilteredTextBoxExtender ID="DateFilter" runat="server" TargetControlID="Date1" FilterType="Custom, Numbers" ValidChars="/" />

    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div id="light" class="white_content"><asp:Label ID="lbText" runat="server" Text="Label"></asp:Label><br /><br /><a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Close</a></div>
            <div id="fade" class="black_overlay"></div>

            <DBWC:DynamicControlsPlaceholder ID="PlaceHolder" runat="server" ControlsWithoutIDs="DontPersist"></DBWC:DynamicControlsPlaceholder>
            <asp:Literal ID="LiteralJS" runat="server" Visible="false"></asp:Literal>
            <asp:Label ID="ccrTitle" runat="server"></asp:Label>

        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="CalendarUpdateBtn" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="SubmitBtn" EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="ClearBtn" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>


<!--/div-->
</form>