Каковы лучший способ и методические рекомендации для взаимодействия с Lotus Notes от C#

Я делаю это так:

  1. Модели - это ViewScoped
  2. конвертер:
    @Named
    @ViewScoped
    public class ViewScopedFacesConverter implements Converter, Serializable
    {
            private static final long serialVersionUID = 1L;
            private Map<String, Object> converterMap;
    
            @PostConstruct
            void postConstruct(){
                converterMap = new HashMap<>();
            }
    
            @Override
            public String getAsString(FacesContext context, UIComponent component, Object object) {
                String selectItemValue = String.valueOf( object.hashCode() ); 
                converterMap.put( selectItemValue, object );
                return selectItemValue;
            }
    
            @Override
            public Object getAsObject(FacesContext context, UIComponent component, String selectItemValue){
                return converterMap.get(selectItemValue);
            }
    }
    

и привязка к Компонент с:

 <f:converter binding="#{viewScopedFacesConverter}" />

Если вы будете использовать идентификатор объекта, а не hashCode, вы можете столкнуться с конфликтом - если у вас мало списков на одной странице для разных объектов (классов) с тем же идентификатором

16
задан Phil Haselden 16 September 2008 в 02:57
поделиться

8 ответов

Ссылка API COM Lotus Notes может быть найдена здесь

Для получения Сессии Примечаний (Начальная точка) в VB.Net, который можно использовать:

Dim oSess As Object = Nothing
oSess = CreateObject("Notes.NotesSession")

я обычно программа в C#, для работы с COM я предпочитаю VB.Net

, лучше получить доступ ко всем серверам COM от того же потока, если Вы не уверены, что это, не доставит неприятностей.

3
ответ дан 30 November 2019 в 22:31
поделиться
2
ответ дан 30 November 2019 в 22:31
поделиться

Если у Вас есть Domino / клиент Lotus Notes, установленный на той же машине, можно использовать COM. Просто сделайте Google ищет при 'Доступе к Объектам Domino через COM', и Вы найдете запись справки Разработчика Domino для примерно любой версии Domino.

Вы можете также получить доступ к Domino через API C, но не рекомендовали бы это. Очень грязный. Вам также все еще нужен Domino / клиент Lotus Notes установил.

, Если Вы делаете не , имеют Domino / клиент Lotus Notes, установленный на той же машине и сервере Domino, выполняет http, Вы могли также сделать это через http. Это не будет почти как быстро. Вы также, вероятно, хотели бы, чтобы некоторая пользовательская установка представлений http на сервере Domino сделала Вашу жизнь легче.

2
ответ дан 30 November 2019 в 22:31
поделиться

Вы могли создать веб-сервис Domino с помощью Java или LotusScript. Затем используйте C# для доступа к веб-сервису.

я только сделал это однажды, для чтения данных из дб Lotus Notes в приложение.NET, работающее на другой машине.

Запись и тестирование простых веб-сервисов http://www.ibm.com/developerworks/lotus/library/web-services2/

, когда я найду некоторое время, я запишу полный пример :-)

2
ответ дан 30 November 2019 в 22:31
поделиться

Я работал над плагином Примечаний в течение нескольких месяцев некоторое время назад, и да, API может быть невыносимым. Однако я смог заставить это работать так, я мог получить доступ ко всей информации о Примечаниях с помощью приложения C# (на самом деле, так как я писал плагин, у меня были Примечания, обращаются к приложению C# через мост C++, что это зарегистрировало в запуске .ini файл). Определенные методы, которые они документируют в своем API, на самом деле не работают, хотя, таким образом, большое тестирование требуется. Иногда необходимо сделать некоторую гимнастику кода...

1
ответ дан 30 November 2019 в 22:31
поделиться

Назад в день я рекомендовал бы N2N от Proposion, но тот продукт пошел, так как Quest приобрел Proposion.

Тем не менее Proposion был доказательством, что можно перенести Примечания API в ряд классов .NET безопасно. Можно найти некоторую информацию об этом в блог .

Bob Balaban
1
ответ дан 30 November 2019 в 22:31
поделиться

I would personally do this native in Notes in either LotusScript or Java. You can do a scheduled agent in Notes much easier than a service in C#.

0
ответ дан 30 November 2019 в 22:31
поделиться

Я действительно ненавижу этот COM-объект NotesSession.

Вы не можете использовать его в другом потоке, кроме потока, в котором он был инициализирован. В .NET потоки - это волокна, реальный базовый поток может измениться в любой момент.

Поэтому я предлагаю использовать его таким образом в блоке using :

Imports Domino
Imports System.Threading

Public Class AffinitedSession
    Implements IDisposable

    Private _session As NotesSession
    Public Sub New(ByVal pass As String)
        Thread.BeginThreadAffinity()
        _session = New NotesSession()
        _session.Initialize(pass)
    End Sub

    Public ReadOnly Property NotesSession() As NotesSession
        Get
            Return _session
        End Get
    End Property

    Private disposedValue As Boolean = False        ' To detect redundant calls

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: free other state (managed objects).
            End If

            ' TODO: free your own state (unmanaged objects).
            ' TODO: set large fields to null.
            _session = Nothing
            Thread.EndThreadAffinity()
        End If
        Me.disposedValue = True
    End Sub

#Region " IDisposable Support "
    ' This code added by Visual Basic to correctly implement the disposable pattern.
    Public Sub Dispose() Implements IDisposable.Dispose
        ' Do not change this code.  Put cleanup code in Dispose(ByVal disposing As Boolean) above.
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region

End Class

Обратите внимание на Thread.BeginThreadAffinity () и Thread.EndThreadAffinity ()

Это ваши друзья.

Ура!

6
ответ дан 30 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: