小编Jop*_*Jop的帖子

如何在大型JavaFx 2.0应用程序中组织控制器/演示者?

对于一个项目,我一直在研究JavaFX 2.0桌面应用程序(keytool UI).JavaFx2.0的工作方式(无论如何在我的项目中),UI事件处理发生在JavaFX 2.0 UI类本身中(例如:onclicked()事件或属性更改侦听器).

现在我使用一个带有方法的静态类:getController(),所有UI类都使用它来访问应用程序的一个控制器(不知何故,将控制器传递给所有50多个UI类似乎很麻烦).

然而问题是,一个控制器变得非常大!它有太多的方法(我的UI类需要访问所有业务逻辑方法).即使它只将方法调用传递给我的模型/服务,仍然需要在控制器级别捕获许多异常,以便在UI中处理它们(显示错误消息等).

任何人都知道一种简洁的方法可以使整个MVC/MVP模式更好地适用于我的应用程序,而UI/Controller/Model类不直接依赖于彼此吗?每个用例可能有不同的控制器?但是,我将如何制作它以便正确的UI类获得正确的控制器而不直接知道它?也许使用界面?

java model-view-controller mvp controller javafx-2

16
推荐指数
1
解决办法
9455
查看次数

WCF获得入口汇编

我有一个WCF服务,让我们说在IIS中托管的程序集A. WCF服务引用另一个程序集,比如程序集B,它需要访问程序集A的Assembly对象.

原因:我想通过额外的合同和该合同的默认实现来扩展现有的WCF服务,这可以返回WCF服务程序集的FILE VERSION.

请参阅下面的代码:

程序集A(WCF服务):

web.config:除地址"B"下的现有2个端点外,还添加了新端点

<configuration>
  <system.serviceModel>
    <services>
      <service name="ExistingServiceHandler">
        <endpoint address="mex" kind="mexEndpoint"/>
        <endpoint address="" binding="basicHttpBinding" contract="IExistingContract"/>
        <endpoint address="B" binding="basicHttpBinding" contract="AssemblyB.IServiceContract"/>
      </service>
      ...
Run Code Online (Sandbox Code Playgroud)

现有实现:现在扩展程序集B中的"实现".

public class ExistingServiceHandler : Implementation, IExistingContract
{
    // Whatever methods are implemented here
}
Run Code Online (Sandbox Code Playgroud)

程序集B(C#类库):

[ServiceContract]
public interface IServiceContract
{
    [OperationContract]
    string ServiceVersion();
}

public class Implementation : IServiceContract 
{
    public string ServiceVersion()
    {
        string assemblyLocation = Assembly.GetEntryAssembly().Location;
        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assemblyLocation);
        string fileVersion = fvi.FileVersion;

        return fileVersion;
    }   
}
Run Code Online (Sandbox Code Playgroud)

我尝试了以下(在程序集B中),但没有一个返回正确的程序集:

Assembly.GetEntryAssembly(); // returns …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection wcf .net-assembly

5
推荐指数
1
解决办法
1228
查看次数