Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доработка клиент-серверного приложения. 
V
    Опции темы
Vanoha12
Дата 4.11.2012, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 3.4.2010

Репутация: нет
Всего: нет



Программа документооборота DocsVision.
Скрипты у клиента пишутся на VisualBasicScript, в коде можно обращаться к COM объектам.
Иногда нужно не только реализовывать логику, а VBS скуден и не позволяет отображать необходимые интерфейсы.

Сейчас могу написать com-объект dll и зарегистрировать на машине пользователя. И вызывать WindowsForm.
Но если dll меняется, то его нужно перерегистрировать на всех машинах, а это не очень удобно, постоянно обращаться к админал, групповые политики и т.д.

Что хочется.
1. Написать один COM для клиента, зарегить его один раз. 
2. Написать dll для сервера, где я бы создавал просто методы и менял только его.
3. Теперь у клиента я просто вызываю наш ком, и передаю туда название метода и параметр(путь будет один, если их будет больше, то передам xml и буду парсить. С возвратом результата так же.)

т.е. примерно так. 
Опыта у меня не много. И с терминологией не всей знаком. Не хотелось бы изобретать велосипед. 
Что скажете?

1. Для Com   
Код

    [Guid("01D10028-A89D-47ee-8048-C27B6DD4B126")]
    [ComVisible(true)]
    public class Test22
    {
         [ComVisible(true)]
         public string GetFromMethod(string metodName, string metodParam)
         {
            return globalDll.TestingGlobalDll(metodName, metodParam);
         }
    }

    internal class globalDll
    {
        const string DllLocation = @"\\сервер......\testCom.globalDll.dll";
        [DllImport(DllLocation, EntryPoint = "TestingGlobalDll")]
        public static extern string TestingGlobalDll(string metodName, string metodParam);
    }


2. На сервере
Код

public static class TestGlobalDll
    {
       static public string TestingGlobalDll(string metodName, string metodParam)
       {
           switch (metodName)
           {
               case "meth1":
                   return meth1(metodParam);
               case "meth2":
                   return meth1(metodParam);
               default:
                   return "No method";
           }
       }

        static string  meth1(string param)
        {
            Form form = new Form(param);
            //ну типа открыли форму и получили результат.
            return form.ShowDialog().ToString();
        }

        static string meth2(string param)
        {
            Form form2 = new Form(param);
            //ну типа открыли ещё форму и получили результат.
            return form2.ShowDialog().ToString();
        }
    }


3. Теперь у клиента можно вызывать на VBS
Код

    Set test = CreateObject("Test22")
    MsgBox test.GetFromMethod("meth1", "тестирование 1")
    MsgBox test.GetFromMethod("meth2", "тестирование 2")
 

Это сообщение отредактировал(а) Vanoha12 - 11.11.2012, 22:40
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.