Erlang на JVM/CLR

С модулем Az в данный момент это невозможно, потому что Get-AzureStorageTableRowAll не существует.

12
задан Fortyrunner 20 April 2009 в 23:02
поделиться

8 ответов

Вы не можете использовать библиотеки JVM / CLR, учитывая их зависимость от изменяемых объектов.

Обработка исключений Erlang сильно отличается от исключений JVM и CLR, вам придется как-то это обрабатывать.

Реализация процессов в виде потоков будет означать, что любая значительная система Erlang исчерпает память довольно быстро (размер процесса на моей машине создание: 1268 байт, размер стека потока в CLR: 1 МБ) и взаимодействие между процессами намного медленнее, чем в Erlang.

Что вам, вероятно, нужно, это реализация модели актора на JVM или CLR.

Scala и Clojure уже упоминалось. Кроме того, существует много реализаций Actor для JVM: Килим , Функциональная Java , Jetlang , Гильдия актеров , ActorFoundry и по крайней мере один для CLR: Retlang , который можно использовать на любом языке JVM / CLR.

23
ответ дан 2 December 2019 в 03:04
поделиться

Это хорошая дискуссия. Некоторый контекст может быть полезен.

Из списка рассылки Erlang в ноябре прошлого года:

Мой вклад в дебаты об Эрланге на JVM? Нет, не очень хорошая идея: (

7
ответ дан 2 December 2019 в 03:04
поделиться

Редактировать:
Как насчет использования этого:

MyWebService svc = new MyWebService();            
svc.Credentials = new System.Net.NetworkCredential(UserID, pwd);
bool result = svc.MyWebMethod();    

OP говорит, что это не сработает, и теперь я вижу, что это не сработает в его ситуации.

Мы делаем что-то вроде этого:

public class MyWebService : System.Web.Services.WebService
{
    public AuthenticationHeader AuthenticationInformation;

    public class AuthenticationHeader : SoapHeader
    {
        public string UserName;
        public string Password;
    }

    [WebMethod( Description = "Sample WebMethod." )]
    [SoapHeader( "AuthenticationInformation" )]
    public bool MyWebMethod()
    {
        if ( AuthenticationInformation != null )
        {
            if ( IsUserAuthenticated( AuthenticationInformation.UserName,   
                 AuthenticationInformation.Password, ref errorMessage ) )
            {
                 // Authenticated, do something
            }
            else
            {
                 // Failed Authentication, do something
            } 
        }
        else
        {
                 // No Authentication, do something
        }
    }
}

Обратите внимание, что вы предоставляете IsUserAuthenticated ().

Затем клиент называет это так:

 MyWebService svc = new MyWebService();            
 svc.AuthenticationHeaderValue = new MyWebService.AuthenticationHeader();
 svc.AuthenticationHeaderValue.UserName = UserID;
 svc.AuthenticationHeaderValue.Password = Password;

 bool result = svc.MyWebMethod();
- 121 --- 3880843--

Вообще-то, вообще ничего. Вы можете взглянуть на Clojure , интересный функциональный язык, построенный на JVM.

4
ответ дан 2 December 2019 в 03:04
поделиться

Я не знаю каких-либо технических проблем, которые могли бы привести к этому.

На самом деле Scala (функциональный язык JVM) использует так называемую модель акторов , которая очень похожа и, как я понимаю, сильно заимствует из модели общего доступа Erlang Ничего параллелизма. Потоки не могли симулировать процессы Эрланга. Они слишком тяжелые.

2
ответ дан 2 December 2019 в 03:04
поделиться

Просто для полноты информации дополнительный источник о теме.

2
ответ дан 2 December 2019 в 03:04
поделиться

Возможно? Да. Практическая? Ну, вероятно, нет; они решают разные проблемы совершенно по-разному, и, следовательно, имеют много существенных различий в том, как они делают вещи. Это усложнит портирование, и производительность, скорее всего, сильно пострадает. Это не значит, что это невозможно, просто есть лучшие способы добиться того, что такой порт принесет на стол.

1
ответ дан 2 December 2019 в 03:04
поделиться

Axum -- an incubation project on the CLR -- was clearly inspired by Erlang.

3
ответ дан 2 December 2019 в 03:04
поделиться

В образовательных целях мы реализуем подмножество ErlangVM для CLR. Мы были очень вдохновлены Крестеном Крабом Торупом и его проектом Erjang, виртуальной машиной Erlang на основе JVM. Erjang использует фреймворк kilim для представления легких процессов, и он начинает привлекать внимание.

Джавалимит - блог автора Эрджанга.

Хранилище Erjang

9
ответ дан 2 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

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